1. 硬件列表
2. 组态和配置
1) 新建项目
2) 创建CPU300站点
3) 组态ET200S
4) 设置协议Modbus Master
3. 编写通信程序
1) 逻辑地址的填写
2) 调用通信功能块
3) 创建通信数据块DB块
4. 设备连接
5. 通信测试
1) 设置调试软件modbus slave
2) ET200S与调试软件测试通信数据
设备名称 |
设备型号 |
PS 307 |
6ES7 307-1EA01-0AA0 |
CPU 317-2PN/DP |
6ES7 317-2EK14-0AB0 |
MMC |
6ES7 953-8LG30-0AA0 |
ET200S接口模块 |
6ES7 151-3BA60-0AB0 |
PM-E电源模块 |
6ES7 138-4CA80-0AB0 |
ET200S 1SI串口模块 |
6ES7 138-4DF11-0AB0 |
1、打开STEP7,点击File->New...创建一新项目,项目名称为 ET200S_modbusM。
图1 新建项目
2、用鼠标右键点击项目名称,选择Insert New Object->SIMATIC 300 Station,更改站的名称为317-2PN/DP,双击“Hardware”进入硬件组态,添加CPU317-2PN/DP,新建以太网络,设置IP地址。
图2 添加站点CPU 317-2PN/DP
3、添加ET200S站点,插入 PM-E的电源模块和ET200 1SI Modbus Master(32B)模块。
图3 网络配置ET200S站
4、双击“IM151”站点,分配从站的IP地址和设置离线设备名称。
图4 ET200S站点分配IP地址和设备名称
5、双击 1SI的模块,点击“地址”栏,输入和输出的起始地址为256,这在通讯编程中需要用到。
图5 模块IO地址
6、点击“参数”栏,选择接口“半双工(RS-485两线制模式)”;接收线路初始状态选择“信号R(A)0V/信号R(B)5V”;进行报文设置:波特率9600,停止位:1,奇偶校验:even;从站响应时间最大2000ms。
图6 参数设置
7、硬件组态中编译保存,下载硬组态,然后给ET200S分配设备名称,选中“”或者ET200S站点图标,然后选择菜单PLC中,点击“Ethernet->Assign Device Name”,弹出设置ET200S的IO设备的命名对话框,通过“Assign name”按钮,给其命名为IM151-3PN。
图7 在线分配设备名称及分配结果
8、可以点中“”或者ET200S站点图标,然后选择菜单PLC中,点击“Ethernet->Verify Device Name”来查看组态的设备名称是否正确,绿色的√表示正确。
图8 确认设备名称
1、创建发送数据块DB10和接收数据块DB11,发送数据块的名称为Send,接收数据块的名称为Rcv;如下图所示,发送数据块中新建几个变量,从站地址为2,功能码为3,起始地址为0,读4个寄存器数据,具体功能码F03 的使用,参见手册“Simatic ET200S 串行接口模块” 3.5章节的说明,如下图所示,接收数据块中新建1个数据类型Array的变量,数组元素的数据类型为Byte,数量为101。
图9 新建发送接收功能块
2、进入主程序OB1,从左侧“Libraries->ET200sSi->ET200S Serial Interface”(需要安装ET200S串口软件,下载链接详见第4.3章节),调用发送功能块S_SEND(FB3)和接收功能块S_RCV(FB2)。S_SEND的背景数据块为DB1,S_RCV的背景数据块为DB2。
图10 调用发送和接收功能块
ET200S的发送功能块FB3 S_SEND的参数设置见下表。
管脚 |
解释描述 |
REQ |
发送数据触发位,上升沿触发,本例中为M0.5。 |
R |
取消通讯,本例中不用。 |
LADDR |
硬件组态中的起始逻辑地址,本例中为256,见图5。 |
DB_NO |
发送数据块号,本例中为10(DB10)。 |
DBB_NO |
发送数据的起始地址,本例中为0(DB10.DBB0)。 |
LEN |
发送数据的长度,本例中为MW12,本例中MW12赋值为6。 |
COM_RST |
如果为1,重新启动FB,本例中为M10.1。 |
DONE |
发送完成位,发送完成且没有错误时为TRUE。 |
ERROR |
错误位,为TRUE说明有错误。 |
STATUS |
状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。 |
ET200S的接收功能块FB2 S_RCV的参数设置见下表。
管脚 |
解释描述 |
EN_R |
使能接收位,本例中为M20.0,常闭点, 始终保持接收状态。 |
LADDR |
硬件组态中的起始逻辑地址,本例中为256,见图5。 |
DB_NO |
发送数据块号,本例中为11(DB11)。 |
DBB_NO |
发送数据的起始地址,本例中为0(DB11.DBB0)。 |
COM_RST |
如果为1,重新启动FB,本例中为M20.2。 |
NDR |
接收完成位,接收完成并没有错误为TRUE。 |
ERROR |
错误位,为TRUE说明有错误。 |
LEN |
接收数据的长度,只显示一个扫描周期,即:只有在接收到数据的当前周期,此值不为0。 |
STATUS |
状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。 |
3.将程序保存,然后下载到CPU。
以RS485的方式接线为例说明,ET200S 模块按照RS485的接线方式连接到电脑的RS232口,连接示意图如下。
图11 硬件结构和接线示意图
前面使用Step7 V5.5软件已经将通信ET200S的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件modbus slave软件来测试ET200S串口和计算机的通信,步骤如下。
1、双击此图标,打开modbus slave测试软件。
图12 新建从站测试项目
2、然后点击菜单Connection->connect配置串口参数,要和ET200S的参数一致。
图13 连接参数
3、点击OK按钮,然后选择菜单Setup->Slave Definition...设定通讯数据,因为ET200S 使用的是功能码03,所以选择03 Holding Register,ET200S 访问的从站地址为2,Slave ID设为2,起始地址从1开始。
图14 从站功能码设置
4、点击“OK”,设置结果如下,通讯数据40001~40004分别为111、222、333、444。
图15 设置结果
5、然后在Step7变量表中设置M20.0为TRUE,使能接收,将MW12设置为6,然后将M0.5置成 TRUE(上升沿触发,想再发送需要将M0.0从TRUE置成FALSE,然后再置成TRUE),可以监控到DB11.DBW0到DB11.DBW6的值为111 到444,如下图。
图16 测试结果