按照Mircro/WIN 2.4版本软件的帮助文档中的程序基本照抄了一个Modbus TCP的Client程序,但是用电脑做Server来测试(尝试了Modsim模拟软件和Modbus Slave模拟软件),结果发现读不到Server的数据,也写不了从站的数据。
1. 请帮忙分析程序错在哪里?
2. 是不是smart的固件版本有要求?
问题补充:
CPU也更新到2.4了,也下载了例程到CPU内,可以建立连接,也不报错,但是读不了server的数据。
图片说明:
最佳答案
从站的IP和端口号是否和程序里的IP,端口号一致。你程序里面的IP位192.168.1.77,端口号为502,你从站的IP是否也是192.168.1.77,端口号也是502。还有监控一下程序是否有报错提示,MODBUS TCP一次只能激活一条指令,不能同时激活两条或多条指令。
看你截图,你固件版本是位V2.3版本的,将固件升级到V2.4版本,把编程软件也升级到V2.4版本。V2.4版本的软件自带Modbus TCP通讯。
以太网通信_S7-200 SMART:http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/062.html
S7-200 SMART Modbus TCP通信:http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/smartsms/077.html
S7-200 SMART 的软件,最新固件,DP01的GSD文件,系统手册,选型样本和CE 认证在以下链接中都可以下载。
https://www.industry.siemens.com.cn/automation/cn/zh/automation-systems/industrial-automation/simatic-controller/simatic-s7-controller/smart200/Pages/Default.aspx
补充问题回答:你说你能建立通讯就是不能读写数据,你通过什么方式判断两边能正常通讯。你PLC的IP地址是否和调试软件的IP在同一网络段,还有调试软件的端口号你确定一下是否为502。能正常通讯上,按道理是可以正常读写数据,还有你调试软件的截图都没有看到,不知道你调试软件设定是否正确。如果能正常建立连接的话,不能读写数据那就检查你程序是否读写合理。
如何判断客户端和服务器端是否建立连接:
http://www.ad.siemens.com.cn/productportal/prods/s7-200-smart-portal/200smarttop/communication/Ethernet/MODBUS_TCP/modbus_tcp_FAQ.htm
提问者对于答案的评价:
实际IP地址,端口都是对的。最后发现是从站地址的问题,client库默认的从站地址是255,而我一直以为是1
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc285129.html