本文所述的串口服务器型号为ZLAN5243A,用作modbus TCP转modbus RTU通讯转换用。
首先接好485通讯的A、B两根线,用网线连接上方以太网网口至电脑,在卓岚官网上下载串口服务器配置工具ZLVirCom,最好也下载一个modscan32工具用作通讯检测。
下载完后打开配置工具ZLVirCom,点击设备管理,若连接无误,会自动搜索已连接的设备,否则就检查接线是否有误。
选中对应设备,点击“设备编辑”,弹出如下窗口,确认IP模式为静态,IP地址最好为默认地址,但也可以修改,工作模式此处本文选择TCP客户端,同时PLC做TCP服务器,在modbus RTU通讯中串口服务器做从站,从站地址为在PLC程序中设置的ID号,映射过来就是从站地址。子网掩码和网关设置为默认,目的IP是PLC的IP地址,目的端口也是PLC的网络端口,本文设置为502。在右侧的高级选项中,选择转化协议为TCP转RTU。下方串口设置的波特率、数据位、校验位、停止位等与modbus RTU通讯的设置保持一致。(该图片是调试早期拍摄,以实际为准)
点击修改设置,配置完毕。
打开博图软件,调用通讯指令。PLC作为服务器,故调用MODBUS TCP下的MB_SERVER指令。调用后生成一个背景数据块,此外再新建一个全局数据块作为网络通讯设置用(无需取消优化),再新建一个全局数据块作为数据传送区(取消优化块访问)。
在新建的数据块中建立一个TCON_IP_v4数据类型的变量,如图所示,Interfaceld为PLC以太网口的硬件标识符,一般为64,ID可任意填写,此处ID即为从站地址,485通讯中地址范围为1-255,0作为modbus RTU的广播地址,最好不要用。RemoteAddress为串口服务器的IP地址,RemotePort为串口服务器的端口号,本文为0,LocalPort为PLC的本地端口号,为502,与串口服务器配置时的参数对应。
指令块的引脚DISCONNECT填写0,MB_HOLD_REG为通讯数据地址的指针,P#DB4.DBX0.0 REAL 60表示传送数据从DB4的第0位开始,60个real类型的数据,共60*32位。数据类型可以是int、word、byte、real,好像不可以是bool型。CONNECT处选择前边所述的TCON_IP_v4类型的变量。指令后边的几个引脚是状态信息,ERROR是报错位,如果为true则表示出错,错误状态信息可以在status引脚监视,不再赘述。
设置完毕后,可以用modscan32工具检测通讯是否成功。用USB转485转换器连接串口服务器和电脑,在控制面板的设备管理器查看com口是几号。
打开modscan32工具,点击连接设置,选择正确的com口,确认IP和端口是否正确,确认波特率、校验位、数据位等信息,点击确认。选择Device ID(即PLC中设置的ID,此处为9),同时也是modbus rtu的从站地址。选择寄存器类型,DB块属于保持型寄存器,故选03。Address处是起始地址,length为数据个数。
水平有限,欢迎各位仁兄补充指正。
来源地址:https://blog.csdn.net/weixin_46413899/article/details/130593487