软件配置:ModScan测试软件、Step7-MicroWin V4.0.6.35编程软件
硬件配置:电脑、西门子200PLC(CPU 224XP CN REL 02.01)、PPI编程电缆、USB-TO-Serial电缆、研华ADAM4520 RS232/RS422/RS485模块
准备:焊接RS485通讯电缆一根(Date+→DB9 3引脚、Date-→DB9 8引脚)、RS485通讯电缆连接200PLC的Port0端口、安装modbus库文件
1.打开Step7-MicroWin V4.0.6.35编程软件,设置库存储区;(注意:在“库存储区分配”对话框中输入库存储区的起始地址,注意避免该地址和程序中已经采用或准备采用的其它地址重合。规定 Modbus 保持寄存器区从 VB0 开始(HoldStart = VB0),并且保持寄存器为1000个字(MaxHold=1000),因保持寄存器以字(两个字节)为单位,实际上这个通信缓冲区占用了VB0~VB1999共2000个字节。因此分配库指令保留数据区时至少要从VB2000开始。当然保持区不一定要从VB0开始。)
2.在主程序中添加Modbus Slave Port0从站块(MBUS_INIT,MBUS_SLAVE)
库文件
•西门子Modbus从站协议库包括两条指令:MBUS_INIT 指令和MBUS_SLAVE 指令。•MBUS_INIT 指令用于启用和初始化或禁止Modbus通讯。
•MBUS_SLAVE 指令用于为Modbus主设备发出的请求服务。
•MBUS_INIT 指令用于启用和初始化或禁止Modbus从站通讯。在使用MBUS_SLAVE 指令之前,必须正确执行MBUS_INIT 指令。指令完成后立即设定“完成”位,才能继续执行下一条指令。
主从站指令用法例子: www.dzkfw.com.cn/Article/tixingtu/10184.html
MBUS_INIT 指令说明:
•EN:指令使能位。•Mode:模式选择,启动/停止Modbus从站通信。Mode 参数允许使用以下两个数值:1——启动,0——停止。
•Address:从站地址,MODBUS从站地址,取值1~247。
•Baud:波特率,可选1200,2400,4800,9600,19200,38400,57600,115200。•Parity:奇偶校验,0=无校验;1=奇校验;2=偶校验。
•Delay:延时,附加字符间延时,缺省值为0。
•MaxIQ:最大I/Q位,参与通信的最大I/O点数,S7-200的I/O映像区为128/128,缺省值为128。
•MaxAI:最大AI字数,参与通信的最大AI通道数,可为16或32。
•MaxHold:设定供Modbus地址4xxxx使用的V存储器中的字保持寄存器数目。
•HoldStart:保持寄存器区起始地址,以&VBx指定(间接寻址方式)。
•Done:初始化完成标志,成功初始化后置1。
•Error:初始化错误代码。
MBUS_SLAVE 指令说明:
MBUS_SLAVE 指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。MBUS_SLAVE 指令无输入参数,在每次扫描且EN 输入开启时执行。
•EN:指令使能位。
•Done:Modbus执行通信中时置1,无MODBUS 通信活动时为0。
•Error:错误代码。
3.编译完成,通过PPI电缆下载程序,下载完成后断开PPI电缆,连接485电缆,并打开ModScan测试软件,设置参数与定义的Modbus参数相同。
设置如下图的参数:
Device id 为3(该地址为MBUS_INIT指令中的Address)
Address为0001
Length为100 寄存器选择03:HOLDING REGISTER
打开connect窗口如下图所示,并设置参数;选项串口的通信端口,设置通信的波特率、校验位、停止位等参数。
单击rotocol selection设置modbus报文传输的方式为标准的RTU
单击ok,设置modbus数据显示的格式为swapped fp