1、
指定 S7-1200 作为 modbusTCP 服务器保持寄存器,一般的作法是定义一个非优化的数据块,比如 DB3,在 DB3 定义一个字类型的数组,数组的数据类型为WORD,大小是 400 个WORD,然后保存编译这个数据块,编译完成后,数据块的中的存储空间是有偏移地址的;
MB_SERVER 服务器端指令的 MB_HOLD_REG 管脚处用指针形式指定服务器的保持寄存器区从这个数据块的那个偏移地址开始以及共有多少个字被定义成了保持区,比如 P#DB3.DBX0.0 WORD 400;
则定义了400个字的保持寄存器区,其中 40001 就是DB3.DBW0
则服务器端保持寄存器地址与 DB3 中定义的数组就有了对应关系。
40001 对应 DB3.DBW0
40002 对应 DB3.DBW2
40003 对应 DB3.DBW4
依此类推。不知道对保持区的说明说清楚了没有。
2、功能码是服务器响应帧的一部分,由主站请求帧决定,且是根据主站读写指令来自动生成的,程序无法去指定它。
3、PLC 系统在 MODBUS TCP 通讯过程中,数据帧是根据定义好管脚帧自动产生的,用户程序无法更改。
具体实现,上面的两位同行已给出了链接《Modbus TCP 通信》
http://www.ad.siemens.com.cn/productportal/Prods/S7-1200_PLC_EASY_PLUS/SmartSMS/024.html
回答者:
大宝朱林森
回答时间:2019-12-18 17:06
大宝朱林森
-
超级顾问  第15级
以下网友赞了您的问题:
黑猫警长W,大杰,cy77223,秀空,幸运吸铁石
填写您的评论...
提问者对于答案的评价:
讲的很清楚,非常感谢
暂无评论