因在工作中遇到以前的代码读取聚英PLC设备开关状态失败问题,所以就好好研究了一下ModBus协议,其中Modbus Poll发挥了重要作用,在此记录一下Modbus Poll的使用方式
测试说明
软件版本
设备信息
施耐德、聚英且支持ModBus TCP/IP协议
功能使用方式
连接
-
点击【Connection】菜单,在弹出框中选择【Connect…】
-
选择连接类型【TCP/IP】
-
输入设备IP,端口
-
点击ok
-
没有警告提示,连接成功
操作设备
准备工作
-
显示通信信息
-
点击【SetUp】,选择【Read/Write Deinition…】进入读写功能页面
3.准备工作完成
读取Coils状态
- 在读写功能区中,Function选择【01 ReadCoils】
- Address输入Coils起始地址(聚英从0开始,施耐德从600开始,不对的话可以问设备厂商)
- Quantity输入Coils个数(不确定写1)
- 点击【Read/Write Once】
- 可以在【通讯信息】中看到发给PLC的指令,及PLC的响应;在【结果展示】中显示状态
写Coils状态
- 在读写功能区中,Function选择【05 Write Single Coil】
- Address输入Coils起始地址(聚英从0开始,施耐德从600开始,不对的话可以问设备厂商)
- Quantity输入个数1
- 点击【Read/Write Once】
- 可以在【通讯信息】中看到发给PLC的指令,及PLC的响应;在【结果展示】中显示状态
注意:该功能只能关闭,不能打开,下面会介绍打开关闭方式
写Coils状态之打开关闭
- 点击【Functions】,选择【05:Write Single Coil…】进入写单个Coil功能页面
- Address输入Coils起始地址(聚英从0开始,施耐德从600开始,不对的话可以问设备厂商)
- Value选择On(打开)/Off(关闭)
- 点击【send】
- 可以在【通讯信息】中看到发给PLC的指令
读取Holding Registers状态(施耐德PLC的IN口读取方式)
- 在读写功能区中,Function选择【03 Read Holding Registers】
- Address输入Holding Registers起始地址(聚英从0开始,施耐德从0开始,不对的话可以问设备厂商)
- Quantity输入Holding Registers个数(不确定写1)
- 点击【Read/Write Once】
- 可以在【通讯信息】中看到发给PLC的指令,及PLC的响应;在【结果展示】中显示状态
读取Discrete Inputs状态(聚英PLC的IN口读取方式)
- 在读写功能区中,Function选择【02 Read Discrete Inputs】
- Address输入Discrete Inputs起始地址(聚英从0开始,施耐德从0开始,不对的话可以问设备厂商)
- Quantity输入Discrete Inputs个数(不确定写1)
- 点击【Read/Write Once】
- 可以在【通讯信息】中看到发给PLC的指令,及PLC的响应;在【结果展示】中显示状态
额外说明
选中【 Read/Write Enabled】点击【Apply】后,会自动持续执行指令
总结
因工作需要只测试了读取Coils,读取Discrete Inputs,读取Holding Registers,写单个Coil功能,其他功能未测试,如需其他功能可以参考上面的操作,自行摸索
ModBus TCP/IP协议参考:https://blog.csdn.net/dhbfjh/article/details/119005572