通过SFC21 FILL数据块清零,
比如DB1有100个字节:
SET
L 0
T #TEMP6 ///临时变量,数据类型DINT
SET
CALL "FILL" ///SFC21
BVAL :=#TEMP6
RET_VAL:=#TEMP1 ///返回值,临时变量,数据类型INT
BLK :=P#DB1.DBX0.0 BYTE 100
但是如DB1有200个字节:P#DB1.DBX0.0 BYTE 200, RET_VAL:=#TEMP1 报错-31965。
哪位能给讲讲。
谢谢!
最佳答案
-31965转换为16进制为8323,表示写入参数时发生范围长度错误,可能你定义的db1块的长度还是原来的100个字节,而不是新的200个字节,改成200字节后应该没有问题。也就是DB1块里面需要定义50个dint 类型的数据。
另外,你赋值是以字节来赋,而#temp6是dint类型,因此,在处理时需要注意数据块里面数据的类型,否则会出现一些问题。
提问者对于答案的评价:
怪不得,谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc242192.html