1. 硬件列表
2. 组态和配置
1) 新建项目
2) 创建CPU300站点
3) 组态ET200S
4) 设置协议Modbus Slave
3. 编写通信程序
1) 逻辑地址的填写
2) 调用通信功能块
3) 创建通信数据块DB块
4. 设备连接
5. 通信测试
1) 设置调试软件Modscan32
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_modbusS。
图1 新建项目
2、用鼠标右键点击项目名称,选择Insert New Object->SIMATIC 300 Station,双击“Hardware”进入硬件组态,添加CPU317-2PN/DP,新建以太网络,设置IP地址。
图2 添加站点CPU 315-2PN/DP
3、添加ET200S站点,插入 PM-E的电源模块和ET200 1SI Modbus Slave(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,从站地址:2。
图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、双击“添加新块”,创建数据块DB100,如下图所示,按照图中所示,设置各个变量的启动值。注:有关每个变量的含义,可以参考手册“SIMATIC ET200S 串行接口模块”的3.6.3章节和3.6.18章节,该DB也可以从样例项目程序中拷贝。
举例说明:F01_MOD_STRT_ADR_1表示设置功能码01、05、15的Modbus起始地址,本例中设置为16#0,即表示00001;F01_MOD_END_ADR_1表示设置功能码01、05、15的Modbus终止地址,本例中设置16#ff,即表示为00256;F01_CNV_TO_FLAG_A表示设置PLC的M地址的起始地址,本例设置为16#0,即表示M0.0,说明M0.0与00001是对应关系,往下依次类推。
举例说明:FC03_06_16_DB_NO表示设置与功能码03、06、16的Modbus地址对应的DB 块,本例中设置16#B,即表示DB11,说明DB11.DBW0与40001是对应关系,往下依次类推。
再创建2个数据块,如下图所示,DB11(命名FC03、06、16)、DB12(命名FC04),这2个数据块都创建1个数据类型Array的变量,数组元素的数据类型为Word,数量为200。注:DB11的数据变量用于功能码03、06、16;DB12的数据变量用于功能码04。用于下面的测试。
图9 新建3个数据块
2、从样例项目中将S_SEND(FB3)、接收功能块S_RCV(FB2) 和S_MODB(FB81)拷贝到测试项目中。
图10 拷贝通讯块
3、进入主程序OB1,调用能块S_MODB。
图11 MODBUS Slave功能块
关于功能块S_MODB的管脚说明,请见表2。
LADDR |
硬件组态中的起始逻辑地址,本例中为256,见图5 |
START_TIMER |
超时初始化定时器,本例中为T0 |
START_TIME |
超时初始化时间值,本例中为S5t#5s |
DB_NO |
地址映射DB块,本例中为DB100 |
OB_MASK |
外设访问错误屏蔽位,本例中为M200.0 |
CP_START |
FB初始化始能位,该位需要置1。本例中为M200.1 |
CP_START_FM |
CP_START初始化的上升沿位,本例中为M200.2 |
CP_START_NDR |
从CP写操作位,本例中为M200.3 |
CP_START_OK |
初始化成功标志,本例中为M200.4 |
CP_START_ERROR |
初始化失败标志,本例中为M200.5 |
ERROR_NR |
错误号,本例中为MW202 |
ERROR_INFO |
错误信息,本例中为MW204,可以查看“Simatic ET200S串行接口模块”手册,第3章节 |
4.将程序保存,然后下载到CPU。
以RS485的方式接线为例说明,ET200S 模块按照RS485的接线方式连接到电脑的RS232口,连接示意图如下。
图12 硬件结构和接线示意图
1、将项目程序在线,本示例中手动将M200.1(即:CP_START)置1,M200.2(即:CP_START_FM)和M200.4(即:CP_START_OK)也会为1。
图13 CP_START管脚置1情况
2、在计算机上打开MODBUS主站仿真软件Modscan32。
图14 打开Modscan32软件
3、点击Modscan32上的Connection->Connect,显示画面如下,选择计算机和ET200S相连的COM口COM1,设好波特率,数据位,停止位,校验方式,注:这些设置要与1SI_1一致,如下图。
图15 Modscan32通信参数设置
4、点击OK按钮,然后选择菜单Setup->Slave Definition...设定通讯数据,因为ET200S 使用的是功能码3,所以选择03 Holding Register,Slave ID设为2(与ET200S 设置的从站地址为2一致),起始地址从1开始。
图16 从站功能码设置
5、设置完成,点击OK,显示画面如下。
图17 Modscan32操作界面
5、数据显示区的10个地址的数据对应CPU中DB11和DB12的前5个字的数值,如下图,给这5个字赋值。
图18 DB11和DB12数据赋值监控
6、Modscan32软件界面FC03的地址40001-40005分别显示W#16#1~5的数据,FC04的地址30001-30005分别显示W#16#11~15的数据。
图19 Modscan32软件FC03功能码通信
图20 Modscan32软件FC04功能码通信