MODBUS-RTU通讯问题

MB_MASTER中DATA_PTR之DB如何定义,为何出现16#818C错误;如改为MW200则出现16#818B错误;请问错误在那里?谢谢!

问题补充:
1.首先感谢左传及lee nd2009之协助,原16#818C或16#818B错误已解决;但新问题如下:连接外设仪表是一个PID温控器,FC03范围为0~138,用RS485直接电脑测试显示都没问题;经由S7-1200读不到资料,图片如附加3张,烦请再指正,谢谢!

图片说明:

MODBUS-RTU通讯问题    MODBUS-RTU通讯问题    MODBUS-RTU通讯问题    MODBUS-RTU通讯问题   

最佳答案

1、错误信息:818B   指向本地数据源/目标的指针无效: 大小不正确
             818C   DATA_PTR 的指针无效或 Blocked_Proc_Timeout 无效。必须是 DB(允许符号访问和直接访问)或 M 存储器。   
2、  MB_MASTER中DATA_PTR之DB如何定义?
   DATA_PTR 参数指向要写入或读取的 DB 或 M 地址。 如果使用数据块,则必须创建一个全局数据块为读写 Modbus 从站提供数据存储位置。
说明
DATA_PTR 数据块类型必须允许直接寻址
该数据块必须允许直接(绝对)寻址和符号寻址。 创建该数据块时,必须选择“标
准”(Standard) 访问属性。
    DATA_PTR 参数的数据块结构
● 这些数据类型对 Modbus 地址 30001 到 39999、40001 到 49999 和 400001 到
465536 的字读取有效,对 Modbus 地址 40001 到 49999 和 400001 到 465536 的字
写入也有效。
– WORD、UINT 或 INT 数据类型的标准数组
– 指定的 WORD、UINT 或 INT 结构,其中每个元素都具有唯一的名称和 16 位数据
类型。
– 指定的复杂结构,其中每个元素都具有唯一的名称以及 16 或 32 位数据类型。
● 用于 Modbus 地址 00001 到 09999 的位读取和写入和 10001 到 19999 的位读取。
– 布尔数据类型的标准数组。
– 具有唯一名称的布尔变量的指定布尔结构。

 3、你的错误之处在于:(1)MODE 和 Modbus 地址一起确定实际 Modbus 消息中使用的功能代码。根据你的程序选择的MODE 为0,Modbus地址是:1,两者确定的功能是:每个请求 ,读取输出位:1 到 1992 或 2000 个位
 (2)你在DATA_PTR程序输入MW200 ,显然数据的长度不能满足,它只有16位,而你读1-2000个位,所以出现16#818B错误。
  (3)你在DATA_PTR程序输入“MB_DB"块指针无效,可能的原因:A、数据长度不够,B、你引用的数据块没有选择必须选择“标准”(Standard) 访问属性。
   导致你程序出现的错误16#818C错误。
可以参考:《S71200的说明书》
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/39710145[1].pdf
例子可以参考:《如何通过Modbus RTU协议实现S7-1200 与PAC3200的通信》
http://www2.ad.siemens.com.cn/download/Upload/AS/application/A0403.pdf

提问者对于答案的评价:
前段问题解决,后段与现场仪表连线无法读取资料很遗憾,在努力寻找原因。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年11月16日 上午10:58
下一篇 2017年11月16日 上午10:59

相关推荐