Modbus 从站读写程序
在个循环周期内插入MBUS_INIT指令初始化Modbus从站协议:
Mode: 模式选择,启动/停止MODBUS,1=启动;0=停止
Address: 从站地址,MODBUS从站地址,取值1~247
Baud: 波特率,可选1200,2400,4800,9600,19200,38400,57600,115200
Parity: 奇偶校验,0=无校验;1=奇校验;2=偶校验
Delay: 延时,附加字符间延时,缺省值为0
Done: 初始化完成标志,成功初始化后置1
Error: 初始化错误代码
在本例子中,设置从站地址为8,Port0 通讯波特率为9600bps,无校验;
本例子中Modbus RTU从站指令使用的库存储为VB2000---VB2779,这段寄存器地址不能再被程序中的任何指令使用,包括MBUS_INIT和MBUS_SLAVE 指令在内。
MBUS_SLAVE指令被用于为Modbus主设备发出的请求服务,并且必须在每次扫描时执行,以便允许该指令检查和回答Modbus请求。在每次扫描且EN输入开启时执行该指令。
三、无线Modbus通信的实现方法
以上说明了采用有线RS485总线实现多台PLC之间的远程控制方法,有时由于现场条件的限制,重新布设通信线路很不方便,例如山上与山下,或者横跨马路的情况,尤其对于工程改造项目二次布线几乎是甲方无法接受的。在这种情况下,可以采用DTD433无线通信模组代替通信电缆,实现起来非常方便,不需要编程。
无线通信模组采用中心频率为433MHz开放的ISM频段,内部使用全数字RF通信芯片与单片机组成无线数传系统,外部通信接口与RS485总线完全一致,为了使用方便,通信实现所发即所得,也就是说数据通信是完全的透明方式,这样的话,用两个DTD433模组能够直接代替有线的RS485通信导线。需要注意的是:
PLC的Modbus通信速率要与无线数传模组的波特率设置一致,例如通信参数可以设置为9600bps,8位数据,无效验位。
S7_200的RS485+连接DTD433的RS485_B;
S7_200的RS485-连接DTD433的RS485_A;
无线数传模组的供电电源为直流24V,与PLC可以共用电源;
无线通讯距离在200米左右选用DTD433A模组;
无线通讯距离在1000米左右选用DTD433B模组;
无线通讯距离在3000米左右选用DTD433C模组;
保证通信距离,提高通信质量要选择高增益的吸盘天线,天线安放高度离地面越高效果越好。
四、PLC与DTD433无线模组通讯成功的案例
西门子PLC与DTD433C-S4 9600bps,8,N,1,RS485口
海为PLC与DTD433C-S4 9600bps,8,N,2,RS485口
台达PLC与DTD433A_S4 9600bps,7,E,1,RS485口
在工业现场可能会遇到这样的情况,分布在不同地方(车间、控制室场所等)的PLC之间需要进行远程相互控制,通常是采用RS485总线,通过MODBUS协议完成此功能。
如果现场布线不方便的话,也可以采用无线方式进行通信。这里以达泰DTD433无线模组和西门子S7_200为例进行说明。
一、两台S7_200 西门子PLC之间的远程控制
实现的功能:
PLC1的8个开关量输入,I0.0~I0.7与PLC2的开关量输出Q0.0~Q0.7一一对应,也就是说上图中的A1开关按下时,PLC1的开关量输入I0.0闭合,PLC2的输出继电器触点Q0.0导通,L2点亮。
PLC2的8个开关量输入,I0.0~I0.7与PLC1的开关量输出Q0.0~Q0.7一一对应,也就是说上图中的A2开关按下时,PLC2的开关量输入I0.0闭合,PLC1的输出继电器触点Q0.0导通,L1点亮。
PLC1与PLC2之间的通信是通过S7_200CPU22XP的Port0通信口的RS485总线连接的,其中采用了Modbus协议。
二、西门子PLC通信中的Modbus协议编程方法
假设把PLC1作为主站,PLC2作为从站,分别编写主站和从站程序,主要掌握以下要点:
Modbus 主站读写程序
Modbus RTU主站功能是通过指令库中预先编好的程序功能块实现的,该库只针对Port 0口有效;
在程序中插入MBUS_CTRL指令,并在每次扫描时执行MBUS_CTRL。您可以使用MBUS_CTRL指令初始化或更改Modbus通讯参数。
Modbus RTU主站使用了一些用户中断,在用户程序中不能禁止中断;
读取从站数据在程序中插入MBUS_MSG指令,注意从站地址设置用一致;
该例程访问的为一个从站,若访问不同的从站,可通过改变从站地址来实现。
1、S7-200库安装文件默认安装在地方详见上传的图片。
2、STEP 7-Micro/WIN V4.0 以上版内部已经带有新的指令库,但在未安装西门子 Instruction Library 软件包的情况下,不能显示出来使用。
要使用西门子的标准指令库,必须先安装西门子的指令库软件包 Instruction Library。安装了 Instruction Library 之后,只要安装的 STEP 7-Micro/WIN 版本是新的,就能获得相应版本的新指令库。安装 Micro/WIN 的升级包(Service Pack)也会更新指令库的版本。
STEP7 V11将STEP7老版本的“库”中的SFC、SFB、FC和FB也称为指令,分为基本指令、扩展指令、工艺和通信4大部分。原来“库”中的某些块被放入基本指令,原来的某些指令被合并为一条指令。
以梯形图中的比较指令为例,原来的方框比较器改为像S7-200一样的触点形式(见下图)。可用下拉式菜单设置7种数据类型,几十条比较指令被合并为6条。
下面是各类基本指令的变动情况:
1)IEC定时器、计数器(SFB0~SFB5)被列入基本指令。
2)数学运算指令可选3种数据类型(Int、Dint和Real),增加了MIN、MAX和LIMIT指令。
3)移动操作增加了SFC BLKMOV、UBLKMOV和FILL指令。
4)转换操作增加了SCALE(FC105)和UNSCALE(FC106),原来的多条数据转换指令合并为一条CONV指令,转换前后的数据类型均可设置(见下图)。
5)程序控制操作增加了OPN(打开全局数据块)、OPNI(打开背景数据块)、RE_TRIGR(复位循环周期监视时间)、STP(退出程序)、WAIT(设置等待时间)、PROTECT(更改保护等级)指令。
6)字逻辑运算指令将不同的数据类型的指令合并为4条指令,增加了DECO(解码)、ENCO(编码)和SEL(选择)指令。
7)不同数据类型的移位、循环指令合并为4条指令。
8)其他操作指令:原来的状态位触点指令被合并为常开和常闭触点两条指令。
新增了SET(置位位数组)、RESET(复位位数组)、SETP(在I/O 区域置位位数组)、RESETP(在I/O区域复位位数组)、SETI(置位字节数组)、RESETI(复位字节数组)、REPL_VAL(输入替换值)、DRUM(执行顺控程序)、DRUM_X(执行顺控程序)、DCAT(离散控制定时器报警)、MCAT(电机控制定时器报警)、IMC(比较输入位与掩码位)、SMC(比较扫描矩阵)、LEAD_LAG(提前和滞后算法)、TONR_X(时间累加器)、WSR(将数据保存到移位寄存器)、SHRB(将位移动到移位寄存器)、SEG(创建7段显示的位模式)、BCDCPL(求十进制补码)、BITSUM(统计置位位数量)。
编程时可将编程区之外的其他窗口临时关闭,V11版的梯形图比V5.4的紧凑一些。
4.依此点击“Create”,“Done”。
5.在主菜单上选择“Item”。
6.输入已知正常工作的PLC寄存器地址。
7.下图显示了WWClient成功取得S7 PLC数据项MB90,在Item输入框中的输入MB90,点击AdviseEx注册并开始获取此数据项,如果连接S7PLC的以太网工作正常的话,你会看到从MB90寄存器中取得的数据,如图9,10所示:
图9. Item
图10. WWClient显示MB90的值
制作好你所需要的大窗口bbbbbbName,并假定窗口大小为(Width, Height)。
此TechNote由Wonderware 中国技术支持部门发布。
这是由Wonderware中国的技术支持写的有关Wonderware产品的技术信息,供中国地区的分销商,系统集成商以及终用户参考。此技术信息并不包括在Wonderware公司提供的KBCD中,但使用者应参看Wonderware公司KBCD中的Termsof Use,获取并保证接受其规定的使用者应遵守的相关约定。
10.选择并用右键点击默认名Topic_0,把它重新命名成一个有意义的名字,如S7PLC,如图5所示:
PLC DeviceGroup>
图5. S7PLC DeviceGroup
11.在左面的树形结构图中,右键点击ArchestrA.DASSIDirect.1并从子菜单中选择“ActivateServer”来启动此DAServer,ArchestrA.DASSIDirect.1旁边的图标将由红变成绿,如下图6所示:
图6. SIDirect DA Server已激活
测试此 DASSIDirect Server
DASSIDirectServer已经准备就绪,下面做一个快速的通信测试来验证和我们可以和PLC的连接。
1.点击“开始/运行”并键入WWClient启动Wonderware WWClient程序。
2.从主菜单上选择“Connection/Create”,将出现“Create Connection”对话框。
3.输入正确的信息,如图7所示:
◆ Node: 此处为空白,因为DASSIDirectServer和WWClient在同一台计算机中。否则,输入运行DAServer的机器的名字。
◆ Application: DASSIDirect, SIDirect DAServer的应用程序名。
◆ Topic: S7PLC,我们刚才在DASSIDirect的Device Group对话框中新建的DeviceGroup。
◆ Connection Type: IOT,在这里,我们使用Suibbbink协议。
图7. Create Connection 对话框