问题:
当采用符号寻址设置好ANY参数后,为何CP342-5 /CP343-1 /CP343-5 通讯模块还是不能正常工作?n
解答:
要使用CP342-5 / CP343-1 / CP343-5进行数据传输,必然要使用到以下几个通讯模块中的一个:n
- FC 1 “DP_SEND”n
- FC 2 “DP_RECV”n
- FC 3 “DP_DIAG”n
- FC 4 “DP_CTRL”n
- FC 5 “AG_SEND”n
- FC 6 “AG_RECV”
在线帮助详细说明了只允许将ANY参数设定为一些特定的变量类型(比如:字节)。
在一个不包含符号的程序中,可以使用以下指针格式直接分配ANY参数。例如:
P#db1.dbx0.0 byte 20
这样通讯就能顺利进行了。
在一个包含有符号的程序中,指针输入在一定的环境下会转换成符号输入。在此类情况下功能块可能会报告错误。
技术背景:
如果在一段地址区间(比如在一个数据块里)存在一个符号,那么这个区间实际的变量类型会被识别并转换成符号表示。
实际情况是,举个例子,若已经在数据块里生成一个字符串数组,并且指针的长度和数组的字节长度一样。那么CHAR数据类型将代替BYTE数据类型 - 通常功能块会报告一个错误。
补救措施:
在存储区中提供实际字节(也就是说,只在数据块内定义字节变量) ,或者不允许编译器将其转换为符号标示。可以通过寻址略少于符号区域大小来实现上述措施。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc338510.html