西门子S7_200PLC与组态王的无线远程GPRS通信Modbus方案
在这里介绍一种采用GPRS透明数据终端和PLC的MODBUS无线组态通信的实现方法。本方案可以作为西门子PLC与组态王远程无线通信的实例。
在工业现场可能会遇到这样的情况,分布在不同地方(车间、控制室场所等)的PLC需要与总控中心的组态王软件进行远程通信,通常情况是采用有线RS485总线敷设电缆,通过MODBUS协议完成此功能。如果现场距离总控中心距离非常远,布线不可能话,就可以采用GPRS方式进行无线通信。本方案中采用了专门用于无线远程GPRS通信的智能数据终端DTP_S09F。
l 有线MODBUS网络:
l 远程无线MODBUS网络:
在实际系统中,人机界面与PLC不在一个地区,中心计算机一般放置在办公室,而PLC安装在现场车间,二者之间距离可能往往从几十米到几千米甚至几千公里。如果在厂区几公里范围内的话可以采用无线电方案,要是距离再远的话就可以采用移动GPRS网络,这样的话就没有距离限制了,这种情况下比较适合远程无线通信。
一、PLC与组态王的Modbus通信
1. 下载S7_200程序
需要向 PLC中下载对应的初始化程序(KVmoddbus.mwp),由亚控公司提供。此程序默认的PLC通讯端口为 port0,地址为 2,波特率 9600,无校验(地址和波特率可由程SBR0 中的 VB8,SMB30 进行修改);
2.设备选择
选择以下两个设备都可以。
3.修改虚拟设备
必须注意配置DTU设备标识信息与图中一致,端口号根据用户的设定。
4. 演示程序界面
打开组态王演示工程文件
二、满足西门子PLC的MODBUS通信协议的专用GPRS数据终端
为了满足西门子PLC和组态王的MODBUS通信协议,对GPRS数据终端具有以下要求:
◆ 适合于RS232/RS485串口连接,可以直接代替有线的RS485网;
◆ 无需修改用户软件,无需二次开发;
◆ 全透明传输,永远在线,自动重连;
◆ 支持域名和IP两种连接方式;
◆ 双看门狗,永不死机;
◆ 工作温度:-35~ +75℃;
◆ 工业标准设计,能工作于各种恶劣环境;
◆ 提供力控、杰控及组态王等组态例程。
三、试验设备及其接线
l 组态软件:组态王6.53
l S7-200型号:CPU224XP CN,1台
l GPRS数据终端:DTP_S09F
S7-200与无线数据终端DTP_S09F连接
RS-485连线 | S7-200 Port0 | DTP_S09F |
RS485+ A | DB9-Pin3 B | DB9_5 A |
RS485- B | DB9-Pin8 A | DB9_3 B |
四、实物图片
五、方案附件
l 组态王测试程序
l S7-200测试程序
l 组态软件MODBUS与西门子PLC的无线远程GPRS通信方案.pdf
六、西门子提供的Modbus设备地址
1. Modbus主设备寻址
Modbus地址通常写作包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备指令将地址映射至正确的功能,以便发送到从站。Modbus主设备指令支持下列Modbus地址:
00001至09999是离散输出(线圈)
10001至19999是离散输入(触点)
30001至39999是输入寄存器(通常是模拟量输入)
40001至49999是保持寄存器
所有Modbus地址均以1为基位,表示第一个数据值从地址1开始。有效地址范围将取决于从站。不同的从站将支持不同的数据类型和地址范围。
2. Modbus 从站寻址
Modbus地址通常被写为包含数据类型和偏移量的5个字符的数值。第一个字符决定数据类型,最后四个字符在数据类型中选择适当的数值。然后,Modbus主设备将地址映射至正确的功能。Modbus从站指令支持下列地址:
00001至00128是映射至Q0.0 - Q15.7的离散输出
10001至10128是映射至I0.0 - I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器
40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。
3. Modbus地址S7-200
00001Q0.0
00002Q0.1
00003Q0.2
......
00127Q15.6
00128Q15.7
10001I0.0
10002I0.1
10003I0.2
......
10127I15.6
10128I15.7
30001AIW0
30002AIW2
30003AIW4
......
30032AIW62
40001Hold Start
40002HoldStart+2
40003HoldStart+4
......
4xxxxHoldStart+2 x (xxxx-1)
Modbus从站协议允许您限制Modbus主设备可存取的输入、输出、模拟输入和保持寄存器(V存储器)数量。
MBUS_INIT指令的MaxIQ参数指定Modbus主设备允许存取的离散输入或输出(I或Q)的最大数目。
MBUS_INIT指令的MaxAI参数指定Modbus主设备允许存取的输入寄存器(AIW)的最大数目。
MBUS_INIT指令的MaxHold参数指定Modbus主设备允许存取的保持寄存器(V存储器字)的最大数目。
请参阅MBUS_INIT指令说明,了解有关为Modbus从站设定存储器限制的进一步详情。
七、MODBUS常见问题解答
1. 我的设备支持 modbus设备,能否直接与组态王软件连接?
只要设备是标准的 modbus 协议设备,即可使用组态王设备列表下的 PLC-->莫迪康
-->MODBUSRTU(或者 ACSII 码)进行通信。但具体的寄存器地址对照表必须从设备厂家
索取。
2. 我的支持 modbus 协议的串口设备,能否与多个上位软件(比如组态王软件和某品
牌触摸屏)同时通讯?
因为 modbus 串口协议不支持多主站,所以不能多个软件同时与 modbus 设备同时通
信。
3. 在组态王工程中建立多个 modbusTCPIPserver 设备定义, 分别使用两台客户端对其
访问,只有站点高的那个 server 通讯 ok,站点低的通讯失败,为什么?
这是因为在组态王软件中只支持建立一个 modbusTCPIPserver,当建立多个 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
协议所对应的参数地址一般按照字为基本单位进行分地址排序的。
6. 组态王与西门子 200plc自由口协议通过modem 通讯,硬件接线怎样实现?
设备上插标准 PPI 电缆,modem9 针口通过一个标准 232 交叉线接到 PPI 电缆上即
可,232交叉线的 modem侧需要 1 4 6 短接,7 和 8 短接。
7. 西门子200plc通过modbus协议与组态王通讯时, 组态王中定义的寄存器地址与plc
地址是如何对应的?
映射关系如下:
0-Q,1-I,3、4、8、9-V;
3,4,8,9的 dd 号与 PLC中 V寄存器的偏移地址(实际地址-1000)的对应关系:
组态王中(寄存器的dd 号-1)*2=PLC中的 V寄存器的偏移地址。组态王中 40031
对应 PLC:VW1060 (组态王中寄存器 4 表示SHORT 型变量)组态王中 90640 对应 PLC:
VD2278 (组态王中寄存器9 表示 FLOAT型变量)。
注:上面的对应关系是针对用户使用的是亚控公司提供了PLC(MODBUS)通讯的初
始化程序,如果用户是自己编程写的初始化程序,则根据实际程序规定的 modbus 对应
地址定义变量。
8. 西门子 200plc通过 modbus协议与组态王通讯,需要注意哪些事项?
需要注意如下几点:
1)需要向 PLC中下载对应的初始化程序(KVmoddbus.mwp),由亚控提供。此程
序默认的 plc 通讯端口为 port0,地址为 2,波特率 9600,无校验(地址和波特率可由程
SBR0 中的 VB8,SMB30 进行修改);
2)由于 PLCModbus 协议程序占用 V1000及以前的地址,所以用户在编写逻辑控制
程序中用到的寄存器不能和亚控提供的协议中所占用的 V区地址冲突;
3)西门子 S7200PLC 和通过 modbus 协议和组态王通讯时,CPU上的开关必须拨在
RUN状态,否则 PLC中的 modbus 通讯程序没有处于运行状态,组态王和设备通过自由
口协议肯定通讯失败;
9. 西门子 200plc通过 GPRS链路和组态王通讯,使用哪种协议方式比较好?
推荐使用自由口/modbusRTu协议。
ppi 协议实际上也支持通过GPRS 链路和组态王通讯,但由于PPI 协议的特殊性,
GPRS方式下通讯效果不是很好,因此不推荐客户使用。
10. 组态王提供的 ModbusRTUServer 和 ModbusRTU驱动的寄存器是怎样对应的?
ModbusRTUServer 的B寄存器对应ModbusRTU的 0 寄存器;
ModbusRTUServer 的R寄存器对应ModbusRTU的 4 寄存器。