百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

在 博图中,如何对S7-1200/S7-1500 进行数据类型转换

liebian365 2024-10-20 09:58 231 浏览 0 评论

在STEP 7 (TIA Portal)里 , 对于S7-1200/S7-1500 可以使用 “指令” 库里的转换功能将变量转换为所选的数据类型。

描述

下表(图.1)给出了常用转换功能的概览。

图. 1

INT,DINT,REAL 和 BCD 数据类型之间的转换

STEP 7 (TIA Portal) 提供了“CONV” (转换)指令可以用于 INT,DINT,REAL 和 BCD 数据类型之间的转换。可以在块编辑器中按下表的步骤进行插入和参数化操作。

1. 在块编辑器中,打开“指令” 库,再打开“基本指令 > 转换操作” 目录。使用拖拽方式将 “CONVERT” 指令插入到网络段中。

2. 插入指令块后,指令的数据类型还没有定义,在 "CONV" 下显示的是通配符 "??? to ???"。将鼠标指针放在左侧的三角形上时,会显示下拉箭头。

3. 点击左侧的箭头,从下拉菜单中可以给输入参数“IN” 选择想要的数据类型(例如,INT)。

4. 重复上面步骤可以为输出参数 “OUT” 从右侧的下拉菜单中选择想要转换的数据类型(例如,REAL)。这个例子就是将一个数据类型为 INT 的数据转换为数据类型为 REAL 的数据(“Int to Real”)。

注意

如果直接通过变量为指令指定输入输出参数,那么步骤 2 到步骤 4 不是必须的,因为转换指令自动将数据类型设置为变量的数据类型。

5。给转换指令的输入和输出分配所选择的变量。为输入输出指定参数后,就可以完成下面的数据转换,例如:

  • 从 Int 到 Int, DInt, Real, Bcd16, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 DInt 到 Int, DInt, Real, Bcd32, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 Real 到 Int, DInt, Real, USint, UInt, UDint, SInt 和 LReal
  • 从 USint 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 UInt 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 UDint 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 SInt 到 Int, DInt, Real, USint, UInt, UDint, SInt, LReal 和 Char
  • 从 LReal 到 Int, DInt, Real, USint, UInt, UDint, SInt 和 LReal
  • 从 Char 到 Int, DInt, USint, UInt, UDint, SInt 和 Char
  • 从 BCD16 (16-bit) 到 Int,
  • 从 BCD32 (32-bit) 到 DInt.

转换指令注释:

图. 2 展示了BCD 格式到 Real 和 Byte 到 SInt 的数据格式转换的例子。

  • BCD格式的数据必须先转换为 Int 或 DInt 格式才能转换为 REAL 格式,如例子。
  • 如要实现数据类型 Byte 到 SInt 或 从 Byte 到 USInt, CONVERT 指令需要手动设置 input 和 output 数据类型为 SInt 或 USInt。

更多的信息可以参见STEP7(TIA Portal)在线帮助 CONVERT: Convert value。

图. 2

实数取整

下面的指令可以将实数类型的数据取整为一个整数( INT 或 DINT ),这些指令也在上面描述的“Converters” 目录中。

  • “CEIL ” :上取整。
  • “FLOOR ”: 下取整。
  • “ ROUND ”:舍入取整。
  • “ TRUNC ”: 截尾取整。

字符串数据类型转换

下表包含转换字符串数据类型的说明。指令的编程过程如表中的描述 。

高级指令

描述S_CONV字符串转换STRG_VAL将字符串转换为数值VAL_STRG将数值转换为字符串Strg_TO_Char将字符串转换为字符Char_TO_Strg将字符转换为字符串ATH将 ASCII 字符串转换为十六进制数HTA将十六进制数转换为ASCII 字符串

转换为 TIME 数据类型

使用高级指令“T_CONV ” 将 INT 类型的数据转换为一个时间值(TIME)和进行反向转换。在转换为 TIME 数据类型之前必须将所有数据类型(INT,REAL,BCD 等)转换为DINT。“T_CONV ” 指令在块编辑器的“扩展指令 > 日期和时间” 指令卡中。

图 3 给出了一个将 INT 和 REAL 转换为 TIME 格式的例子。

图. 3

硬件数据类型 HW_IO 的转换

硬件数据类型 HW_IO 是 STEP 7 (TIA Portal) 访问模板信息时用来识别硬件模板的。这个识别码是自动分配的,在创建设备时保存在设备的硬件配置中。模块名作为系统常量放在 "PLC variables" 表中。在相应功能块中通过模块名可以直接使用该模块。

另外,使用 "IO2MOD" 功能可以从模块的逻辑输入地址"InAddress" (E0.0) 确定模块的硬件标识符 "HWIO" 。直接在功能块的 "LADDR" 参数直接输入硬件标识符 "HWIO" 。"LADDR" 参数无需做转换,因为可以填写 "HW_IO" 参数,也可以填写 UINT 数据类型变量。

图. 4

在图4中是一个 SCL 的程序例子,调用指令 "IO2MOD"。如果功能块分配参数不正确,变量 "ChangeHWIO" 会显示报错代码。

更多信息

可以在 STEP 7 (TIA Portal) 的在线帮助中找到更多上面提到的关于编程和参数化指令的信息。选中指令后按“F1 ”键可以打开在线帮助。

创建环境

FAQ 中的图片在 STEP 7 (TIA Portal) V13+SP1软件中创建。

相关推荐

英特尔发布 SVT-AV1 0.9 开源编解码器,性能提升近一倍

IT之家1月23日消息,根据外媒Phoronix报道,1月21日,英特尔与OpenMedia开放媒体联盟,合作发布了SVT-AV10.9版本编解码器,针对CPU编解码...

微软要求CPU必须支持SSE 4.2,否则Windows 11 24H2无法启动

自Windows11Build26080更新以来,微软就要求用户使用支持SSE4.2的处理器,才能启动Windows1124H2操作系统。这是自Windows11首次推出以来,增加的第二...

32、64位版本!揭Ubuntu 14.10系统性能

1Ubuntu14.10新平台性能比拼从phoronix.com的消息获悉,Ubuntu的支持人BryanQuigley正在考虑将Ubuntu16.04作为最后一个32位发行版本。2016年4月...

MCP Server 的 SSE 模式和 Command 模式的详细解读

来自用户的提问:什么是SSE模式和Command模式...

让CPU更高效 扩展指令集那点事

在CPU的一代一代“进化”中,除了频率、缓存乃至核心结构的变化外,有一个不太起眼的升级经常会被小伙伴们忽略,就是“扩展指令集”。指令集很多小伙伴大概耳熟,它就是指挥CPU工作的指令。不过扩展指令集又是...

Redis高并发缓存架构性能优化实战

场景1:中小型公司Redis缓存架构以及线上问题实战线程A在master获取锁之后,master在同步数据到slave时,master突然宕机(此时数据还没有同步到slave),然后slave会自动...

万字长文,Redis的十六种实际案例代码!

开篇:Redis的隐藏技能树"又双叒叕是缓存击穿?""Redis不就是个缓存吗?""为啥这个功能还要用Redis实现?"如果你的团队里还有人这么想,那这篇文章就是为他们准备的!Redis不仅仅是...

Qt毫秒级读取Excel文件

网上很多QT读取Excel文件方式都是如下形式,太慢了,打开文件+读取文件要6s以上,实在是太慢了!QAxObjectexcel("Excel.Application");exce...

五,网络安全IDA Pro反汇编工具初识及逆向工程解密实战

一.IDAPro工具简介及初识1.IDAPro简介IDAPro(InteractiveDisassemblerProfessional)简称“IDA”,是Hex-Rays公司出品的一款交互式...

手把手教你用20行代码实现植物大战僵尸秒杀僵尸的功能

前言:外挂的本质其实就是找到进程中的某个变量或者某行代码的内存地址,然后进行修改,完成其想要完成的功能。这是最基本的要求,当然如果想要深入去学习制作外挂的话,还有很多东西很多内容,首先,你要懂得汇编,...

inc-by-one之高级漏洞利用技术

Author:Netfairy0x00前言什么是inc-by-one?比如有这样的一条指令:incdwordptr[eax+8],这条指令执行的效果是使eax+8地址处的值加1,类似于c语言*(...

趣味数学与编程|猴子吃桃问题的倒推与递归

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。...

软件测试 | 全局变量和局部变量有什么区别?

它们之间主要的区别是变量的作用范围不同。全局变量在全局范围内都有效,而局部变量只在声明变量的作用域内有效。全局变量是属于实例的,在初始化对象的时候初始化,生命周期与该实例相同,之所以叫全局变量是因为该...

C语言变量可以定义在任意位置?那么到底放在哪个位置才最好呢?

C语言程序开发不像Python,若是需要使用变量,必须先定义。仔细想一想,C语言这么要求的原因也是容易理解的,至少C程序可以事先知道需要为该变量分配多少内存,这其实也是C语言程序更可控的原因之一。C...

国产芯片寄存器必须以汉语命名,以促进汉语化编程普及十四亿人

64位模式下,处理器现在只能支持48位的地址,但是理论上,地址最大为64位。从寄存器来看,64位模式与32位最主要的区别如下所示:·16个64位通用寄存器(32位模式只有8...

取消回复欢迎 发表评论: