如果索引超出整数值范围(+32767),如何对数据字进行基于索引的编址?

说明:
从S7-SCL版本V5.3 SP1 Hotfix 1起,DINT类型的变量也可用作索引值,这样它也可用于超过+32767的值。以前的版本最多只支持整数值。

如果仍然在使用低于V5.3 SP1 Hotfix 1的S7-SCL版本,推荐以下补救步骤:

补救措施:
赋值或者函数或块参数的提供是与转换函数一起实现的。如果变量不是以所需数据类型存在,则必须转换其数据类型。如果没有发生改变且没有代码传送,就需要定义明确的转换函数。

如果索引超出整数值范围(+32767),如何对数据字进行基于索引的编址?
图 01

用明确的转换函数DINT_TO_DWORD将位字符串复制且不作修改:

D_Index:= 65534;<=> 0000 FFFE

函数DWORD_TO_WORD将32位变量转换为16位变量,取低位值的字:

0000 FFFE => FFFE

(未修改的的)位字符串通过函数WORD_TO_INT被采用:

FFFE <=> -2

访问计算索引的样例:

// 在LAD/FBD/STL编辑器中调用功能块中的S7-SCL函数
CALL FC4
RET_VAL:= MW10
Index := MW20

//选择全局数据块
OPEN DB[MW20]
//启动时间脉冲
SI T[MW20]

关键字:
转换函数,更改函数,编址

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc339333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论