博图中怎么按1位,8位,16位和32位的长度访问已经声明的变量

例如定义变量Tag为Dint类型,SCL中
Tag.%W0:=1; '对Tag低16位赋值1
Tag.%W1:=0; '对Tag高16位赋值0
Tag.%B0 '表示变量Tag的字节0
Tag.%X0 '表示变量Tag的位0
如果Tag为real类型,则不能用上述方式访问。
变量定义为Dword与Dint类型,通过Dword_to_Real与Dint_to_Real转换成实数,结果不一样。Dint_to_Real转换后数值大小不变。
若通信读取的三菱实数D0,定义Tag为Dint类型,Tag.%W1:=D0,Tag.%W0:=D1,再把Tag赋给一个实数变量,这样实数显示不正常。
如果定义MD0为实数,高低字分别传送给MW2和MW0,这样MD0实数显示正确。或者用两个整型数组通过AT覆盖实数变量,再往两个整型数中赋值,这样实数也能显示正确。

转自 http://www.360doc6.net/wxarticlenew/857356173.html
对于S7-1200 和 S7-1500,可以按1位,8位,16位和32位的长度访问已经声明的变量。
描述
为了按字节、字和双字数据类型访问变量,需要:
对于S7-1200(固件V2.0及以上)需要 STEP 7 (TIA Portal) V11+SP1+Update 2 (或更高版本)
对于S7-1500需要 STEP 7 (TIA Portal) V12 (或更高版本)
将存储区( 例如 Byte 或Word ) 划分为更小的存储区 ( 例如 Bool )也称为存储器分片。图 01 所示使用符号方式对操作数按位、字节、字进行访问。

图.1
使用片访问可以提供更高的编程效率并且无需在变量表里进行额外的声明。
下例所示使用符号方式按位访问。'x' 代表在字或字节中按位访问并且其后的数字表示相关位的偏移量。

图. 2
图 03 为按字节访问的例子。 这里 'b' 代表按字节访问并且其后面的数字表示相关字节的偏移量。

图. 3
'w' 代表按字进行访问并且其后的数字表示相关字的偏移量。

图.4
在某些技术应用上,只需要一个字节变量的前4位或前6位(分别对应于位0至位3或位0至位5)的值用于转换字节数据类型到一个实数数据类型的值。例如,一个二进制数(二进制编码字节)转换成十进制数(实数)。字节的最低位代表数值2的-5次方。这不是小数点后的位数,但是可以自动计算出十进制数据。

总计 = 1.5625.
如下SCL程序的前两行将不需要的位设为“false”。然后,根据变化得到2的-5次方 进行数据类型转换后的数值。

注意
从STEP 7 (TIA Portal) V13 以后,语法规则从 'Variable.X0' 改为 'Variable.%X0'。如上所述示例中输入'inByte.X0' 后,STEP 7 (TIA Portal) V13 之后的版本会自动修为'inByte.%X0'。

posted @ 2024-05-25 20:02  鱼漂  阅读(372)  评论(0编辑  收藏  举报