《MODBUS协议主站驱动程序》由会员分享,可在线阅读,更多相关《MODBUS协议主站驱动程序(13页珍藏版)》请在金锄头文库上搜索。
1、MODBUS协议主站驱动程序1 MODBUS 规约简介Modbus 通讯协议广泛应用于工业控制领域的通用通讯协议,几乎所有的主流工控系统都支持这种协议。Modbus 通讯协议最初是由 Modicon 公司提出的,基于RS232 的通讯协议的,后来 Modicon 公司又将这种协议推广到了以太网上,形成了基于 TCP 的 Modbus 协议。有些厂家还在 UDP 上定义了 modbus 协议,Modbus通讯协议是主从方式的规约。通讯都是由主站发起的,主站发出通讯请求,从站收到请求后,回答所请求的数据。基于 TCP 的 Modbus 协议的主站是 TCP 的客户端,从站是 TCP 的服务器端。本
2、主站通讯驱动同时支持基于 RS232 的 Modbus 规约和基于 TCP 的 Modbus 规约。同时支持多串行连接,每个串行口下允许有 32 个设备;支持多个 TCP 连接的 Modbus 规约,每个 TCP 连接下允许有 32 个设备。连接方式,如图 3-1 所示。V D P U设备1 设备2 设备n 设备1 设备2 设备n 设备设备R S 2 3 2 / R S 4 8 5R S 2 3 2 / R S 4 8 5T C P 连接T C P 连接图 3-1 设备连接示意图本驱动程序支持不仅支持串行口上 MODBUS 规约,同时支持 TCP 和 UDP 上 MODBUS 规约。此通讯驱动
3、程序可以运行在 DPU 下也可运行虚拟 DPU 下。2 接口硬件连接方式如采用串口方式进行通讯,XDPS 系统通常采用标准的 RS232 口即 Com1或 Com2ComN,通讯距离一般为 15 米,如需增长通讯距离,可采用R232/485 转换器,通讯距离为 1200 米。接线方式,如图 3-2 所示。XDPS DPU COM 口 串口 Modbus设备信号名称 信号引脚 信号名称RXD 2 - TXDTXD 3 - RXDGND 5 - GND图 3-2 接线图3 驱动程序组成本程序由动态链接文件 modiplc.dll、配置文件 modiplc.ini 两个文件组成,如果是 WINCE
4、环境的 DPU,动态链接文件的名称为 modiplc_CE.dll。如果采用虚拟DPU,这两个文件都要拷入 VDPU 目录下运行;如果采用 DPU,则应该以文件下装的形式,把以上两个文件安装到 VDPU 目录下。 4 寄存器数据与 DPU 逻辑 I/O 地址的对应关系DPU 的每个站最多可带 16 块逻辑卡件,每对 DPU 最多可带 16 个站。在配置文件中,定义了寄存器数据与 XDPS 系统 VDPU 逻辑卡件的数据通道的对应关系。XDPS 系统的 IO 逻辑内测点地址由以下几个因素确定:通道类型、站号、卡件地址、通道号;MODBUS 设备的数据地址信息由从站地址号、寄存器地址决定,这种映射
5、关系在 Modiplc.ini 中定义。5 Modiplc.ini 配置文件说明5.1 通讯参数配置无论是在串口通讯方式,还是在 TCP 或者是 UDP 通讯方式,都要保证本驱动程序的通讯参数与对方的通讯参数是匹配的,那么有哪些参数需要配置、怎样配置这些参数呢?I、如果外部设备通过串口连接到 DPU 上,需要这样配置通讯参数:CONFIGcommunication_port1 = Com1,9600,8,n,0,1,debug ,ASCIIcommunication_port2 = Com2,9600,8,n,0,1,debug。communication_portN = ComN,9600,
6、8,n,0,1,debug“communication_port1”、“communication_port2”、。、“communication_portN ”配置的是 DPU 下一共有多少通讯通道(最多可支持 64 个通道)和各个通讯通道下的通讯参数,后面的参数依次为:串口号:如“COM1”表示的是串口 1,“COM2”表示的是串口2,。波特率:可选项 57600、38400、19200、9600、4800、2400、1200、600 等数据位:可选项 8、7、6。奇偶校验位:可选项 e、o、n,分别表示偶校验、奇校验、无校验。停止位:可选项 0、1、2,分别表示 1 位停止位、1.5 位
7、停止位、2 位停止位。设备数量:配置通讯口下连接的 Modbus 设备数量,最多可连接 32 个设备。是否需要调试窗口:如果配置了“debug”,表示 DPU 运行时,需弹出窗口,显示这个通讯口的报文,如果没有,则不弹出窗口显示这个通讯口的报文。串口 MODBUS 协议的类型:如果配置了 “ASCII”,表示这个通讯口上的通讯协议是 MODBUS ASCII 协议;如果没有配置这个参数,则这个通讯口上的协议是 MODBUS RTU 协议。这个参数与上面的 “是否需要调试窗口”参数可以配置,也可以不配置,这两个参数的位置可以对调。II、串口设备可以通过串口转 TCP/IP 网络的设备(如 MOX
8、A NPORT)连接到 DPU 上,或者设备本身就是支持 TCP/IP 网络连接,它们通过网络直接连接到DPU 上,这时需要这样来配置通讯参数:CONFIGcommunication_port1 = TCP,222.222.223.46,4001,1,debug,ASCIIcommunication_port2 = MODICON_TCP,222.222.223.47,502,1,debugcommunication_port3 = UDP,222.222.223.48,3308,1,debugcommunication_port4 = UDP_RS232PACK,222.222.221.1,
9、5001,1,debug。communication_portN= TCP,222.222.223.49,3308,1,debug“communication_port1”、“communication_port2”、。、“communication_portN ”仍然表示 DPU 下一共有多少通讯通道(最多可支持 64 个通道)和各个通讯通道下的通讯参数,后面的参数依次为:协议类型:如配置“TCP”表示的是这个通讯口下的设备是通过串口转TCP/IP 网络的设备连接到 DPU 上的。后面的其他参数表示的是这个通讯口下的设备连接在哪个串口转 TCP/IP 网络设备上,以及这个设备的哪个串口上。应
10、该说明的是,这时通讯通道上协议仍然是串行口上的 MODBUS 协议。如配置“MODICON_TCP ”表示的是这个通讯口下的设备是通过 TCP/IP 网络的设备直接连接到 DPU 上的,后面的其他参数表示的是设备的网络地址信息。通过 TCP/IP 网络直接连接的设备所用的通讯协议是 MODBUS ON TCP 协议。如配置“UDP” 表示的是这个通讯口下的设备是通过网络的设备直接连接到DPU 上的,所用的通讯协议是自定义基于 UDP 的 MODBUS 协议。后面的其他参数表示的是设备的网络地址信息。如果配置了“UDP ”选项,则需要配置下列行来表示 DPU 与这个设备通讯的本地所用的 IP 地
11、址和 UDP 端口号。communication_port3_LocalAddress = 222.222.223.1, 3308如配置“UDP_RS232PACK” 表示的是这个通讯口下的设备是通过网络的设备直接连接到 DPU 上的,所用的应用层协议是 RS232 上的 MODBUS 协议。后面的其他参数表示的是设备的网络地址信息。如果配置了“UDP_RS232PACK”选项,也需要配置下列行来表示 DPU 与这个设备通讯的本地所用的 IP 地址和 UDP 端口号。communication_port3_LocalAddress = 222.222.223.1, 3308无论是串行口还是 T
12、CP 上的 MODBUS 协议,本驱动程序都是按国际通用实现的,因此这里不对协议的具体内容作详细描述了。自定义基于 UDP 的 MODBUS协议将在后面详细描述。IP 地址:如果协议类型配置为“TCP”,那么这个 IP 地址为串口转 TCP/IP网络设备的 IP 地址;如果协议类型配置为“MODBUS_TCP”或“UDP”,那么这个 IP 地址为设备的 IP 地址。端口号:如果协议类型配置为“TCP”,那么这个端口号为串口转 TCP/IP网络设备的 TCP 端口号,这个端口对应着连接设备的串行口(MOXA NPORT 的COM1COM4 的端口缺省配置为 40014004);如果协议类型配置为
13、“MODBUS_TCP”,那么这个端口号为设备的 TCP 端口号,MODBUS OVER TCP 协议中定义了这个端口号为 502;如果协议类型配置为“UDP”,那么这个端口号为设备的 UDP 端口号,用户可自行选择这个端口号,只要与对方一致,并且不要与系统其它应用端口冲突就可以。设备数量:配置通讯口下连接的 Modbus 设备数量,最多可连接 32 个设备。只有在协议类型配置为“TCP”时,这个参数才会大于 1,协议类型配置为“MODBUS_TCP”或“UDP”时,设备数量为 1。是否需要调试窗口:如果配置了“debug”,表示 DPU 运行时,需弹出窗口,显示这个通讯口的报文,如果没有,则
14、不弹出窗口显示这个通讯口的报文。串口 MODBUS 协议的类型:只有在协议 类型配置为“TCP”时,才可以配置此参数,因为只有在这个情况下用的是串口 MODBUS 协议。如果配置了“ASCII”,表示这个通讯口上的通讯协议是 MODBUS ASCII 协议;如果没有配置这个参数,则这个通讯口上的协议是 MODBUS RTU 协议。这个参数与上面的“是否需要调试窗口”参数可以配置,也可以不配置,这两个参数的位置可以对调。III、通讯驱动程序,不管在哪种连接方式下,都支持通讯通到的冗余,那么冗余通道应如何配置呢?如果外部设备通过串口连接到 DPU 上, 如:CONFIGcommunication_
15、port1 = Com1,9600,8,n,0,1,debug ,ASCII其冗余通道可配置为:communication_port1_dup = com2表示的是在 COM1 通讯不正常时,DPU 会通过 COM2 与设备通讯如果通过网络连接到 DPU 上,如:CONFIGcommunication_port2 = TCP,222.222.223.46,3308,1,debugcommunication_port2 = MODICON_TCP,222.222.223.46,502,1,debugcommunication_port2 = UDP,222.222.223.46,3308,1,d
16、ebug这些通讯的冗余通道可配置为:communication_port2_dup = 222.222.224.46,3308“communication_port2_dup”后面的两个参数表示的是冗余通道上设备或串口转网络设备的 IP 地址和端口号。协议时“UDP”时,配置了冗余通道的对方设备的地址,还需要配置冗余通道的本地网络 IP 地址和端口号,如:communication_port2_localaddress_dup = 222.222.224.1,3308IV、不管是串行口 MODBUS 协议还是 TCP 上 MODBUS 协议,报文中都定义了数据的长度,这个数据的长度在报文中是用一个字节表示的,因此一次传送的数据不可能太多,模拟量(16 寄存器)为约 255/2=127 个,开关量(位寄存器)为255*8=2040