西门子S7-200 /smart 做ModBus从站完全实践 使用Anylink 4G网关做主站进行PLC数据采集

Posted by

本实验使用S7-200 224XP DC/DC/DC(某国产兼容机)和Anylink IE-M 4G网关。

Anylink 4G网关可以实现PLC数据采集,手机远程控制,以及远程上传下载程序,远程调试等功能,咨询电话/微信:18037276890。

S7-200 Smart方法基本相同。

该方式只作为演示ModBus的用法,实际使用中Anylink网关内置PPI驱动和以太网驱动,可以更方便的和S7-200进行通讯,PLC不需要任何指令,也无需进行地址换算,直接输入I0.0,VD10这样的地址即可读取数据。

一、接线:

线路图

使用了一个DB9接头,红线接3脚,为485A,黑线接8脚,为485B。

S7-200只有Port0支持ModBus从站协议,所以要接在Port0上面。

黄色为PPI线,连接电脑Step 7软件。

网关连接485接口A、B(最右侧),最左侧为电源,中间网口连接电脑进行设置。

 

二、安装库文件:

西门子S7-200使用Modbus RTU协议,需要安装官方提供的库文件。

下载地址:Toolbox_V32-STEP 7-Micro WIN 32 Instruction Library

安装完成,在指令树中即可看到安装的库文件,可以看到作为主站时两个Port0口均支持,但是作为从站只有Port 0才可以。

三、初始化梯形图:

安装好库文件后我们需要进行程序的编写,只需要调用两个子程序即可。

具体的命令可以查看帮助文件,

以下约定串口参数为:波特率9600、无校验、从站地址为1。

然后别忘了给库分配内存空间,地址可以尽量靠后,不常用的部分。

四、S7-200 PLC ModBus地址说明

以下引用自Step7的帮助文件:

00001至00128是映射至Q0.0 – Q15.7的离散输出
10001至10128是映射至I0.0 – I15.7的离散输入
30001至30032是映射至AIW0至AIW62的模拟输入寄存器
40001至4xxxx是映射至V存储器的保持寄存器。
所有Modbus地址均以1为基位。下表显示映射至S7-200地址的Modbus地址。
Modbus地址 S7-200地址
00001 Q0.0
00002 Q0.1
00003 Q0.2
… …
00127 Q15.6
00128 Q15.7
10001 I0.0
10002 I0.1
10003 I0.2
… …
10127 I15.6
10128 I15.7
30001 AIW0
30002 AIW2
30003 AIW4
… …
30032 AIW62
40001 Hold Start
40002 HoldStart+2
40003 HoldStart+4
… …
4xxxx HoldStart+2 x (xxxx-1)
注意:在一些ModBus主站上有功能码的概念,如果用另一台S7-200做主站的话,地址直接填写上表中的即可,但是有功能码的上位机需要进行对应转换。
常用功能码:

参照上面两部分可以得出:

PLC Q区属于读线圈状态,可写,功能码为1

PLC I区属于读离散输入状态,只读,功能码为2

PLC V区属于读保持寄存器,可写,功能码为3

PLC AIW区属于读输入寄存器,只读,功能码为4

五、网关配置

首先配置采集通道,参数如下,和PLC参数对应。

再配置设备,从站地址为1,和PLC对应

然后配置数据项:

在Anylink网关中,功能码即代表该区的起始地址,功能码1代表1,功能码2代表10001,功能码3代表40001,功能码4代表30001,所以如果是Q0.0,在PLC文档中地址是10001,在配置网关的时候就是10001-10001=0,Q0.1为10002-10001=1,同理VD0地址为40001-40001,也为0。

同时V区一个地址码代表一个字,也就是16位,所以一个VW代表一位,一个VD代表2位,VD0地址为0,但是占用了0、1两个地址位,因此VW4地址为2。

分别配置以下五个数据项

PLC地址 功能码 modbus地址

I0.0      2     0

Q0.0    1     0

VD0     3    0

VW4     3    3

AIW0    4    0

还要注意该地址对应的数据类型。

五、下发配置文件,测试。

测试结果,可以看到结果完全一致,其中Q区和V区都可以进行写操作。

 

Leave a Reply

您的电子邮箱地址不会被公开。