基于MODBUS协议的驱动开发 下载本文

组态王KINGVIEW 6X

MODBUS-常见问题解答

北京亚控科技发展有限公司

2010年09月

“MODBUS”常见问题解答

目 录

1. 我的设备支持Modbus设备,能否直接与组态王软件连接? ......................... 1 2. 我的支持Modbus协议的串口设备,能否与多个上位软件(比如组态王软件和某品牌触摸屏)同时通讯? ......................................................................................... 1 3. 在组态王工程中建立多个ModbusTCPServer设备定义,分别使用两台客户端对其访问,只有站点高的那个Server通讯ok,站点低的通讯失败,为什么? ........ 1

4. 如何实现组态王数据通过串口或者以太网驱动方式传送到其他组态软件或者应用程序中? ................................................................................................................. 1 5. 组态王与支持Modbus协议的设备进行通讯时,组态王画面上显示的数据不正确常有哪些原因? ......................................................................................................... 1 6. 西门子200PLC通过Modbus协议与组态王通讯时,组态王中定义的寄存器地址与PLC地址是如何对应的? ................................................................................... 2

7. 西门子200PLC通过Modbus协议与组态王通讯,需要注意哪些事项?...... 2 8. 西门子200PLC通过GPRS链路和组态王通讯,使用哪种协议方式比较好? ............................................................................................................................................. 2 9. 组态王提供的ModbusRTUServer和ModbusRTU驱动的寄存器是怎样对应的? ..................................................................................................................................... 2

10. 在组态王工程中能否建立多个ModRTUServer设备? .................................. 3

北京亚控科技发展有限公司 i

“MODBUS”常见问题解答

1. 我的设备支持Modbus设备,能否直接与组态王软件连接?

只要设备是标准的Modbus协议设备,即可使用组态王设备列表下的PLC-->莫迪康-->ModbusRTU(或者ACSII码)进行通信。但具体的寄存器地址对照表必须从设备厂家索取。

2. 我的支持Modbus协议的串口设备,能否与多个上位软件(比如组态王软件和某品牌触摸屏)同时通讯?

因为Modbus串口协议不支持多主站,所以不能多个软件同时与Modbus设备同时通信。

3. 在组态王工程中建立多个ModbusTCPServer设备定义,分别使用两台客户端对其访问,只有站点高的那个Server通讯ok,站点低的通讯失败,为什么?

这是因为在组态王软件中只支持建立一个ModbusTCPServer,当建立多个Server时,组态王客户端则会自动与站点高的Server进行通讯,所以会导致站点低的通讯失败。 4. 如何实现组态王数据通过串口或者以太网驱动方式传送到其他组态软件或者应用程序中?

如果其他组态软件或者应用程序支持Modbus协议,则可以通过组态王提供的ModRTUServer或者ModbusTCPServer驱动来实现。

5. 组态王与支持Modbus协议的设备进行通讯时,组态王画面上显示的数据不正确常有哪些原因?

引起数据不正确的原因主要有如下几点:

1)组态王中定义的寄存器地址跟实际设备不一致导致。比如某些使用Modbus协议通讯的设备的数据地址是从0开始的,而组态王Modbus协议驱动寄存器地址是从1开始的,所以遇到此种情况时在组态王中定义变量时,寄存器地址要进行加1处理; 2)数据词典中最大原始值和最大值定义不不当;比如最大原始值和最大值不一样会导致画面看到的数据和实际设备不一致;

3)组态王读取FLOAT和LONG类型的数据时,没有使用提供的SwapF和SwapL寄存器来调整FLOAT型和LONG型数据的字节顺序;

4)LONG或FLOAT型的双字的数据,没有按照间隔隔地址方式定义;因为Modbus协议所对应的参数地址一般按照字为基本单位进行分地址排序的。

北京亚控科技发展有限公司 1