设备名称 |
设备型号 |
CPU 1518-4PN/DP |
6ES7 518-4AP00-0AB0 |
S7-1500 存储卡 |
6ES7 954-8LF03-0AA0 |
ET200S 接口模块 |
6ES7 151-3AA23-0AB0 |
ET200S PM-E电源模块 |
6ES7 138-4CA01-0AA0 |
ET200S 1SI串口模块 |
6ES7 138-4DF11-0AB0 |
功率模块的终端模块 | 6ES7 193-4CC20-0AA0 |
1 SI模块的终端模块 | 6ES7 193-4CA40-0AA0 |
1、打开软件TIA PORTAL STEP7 V16,点击项目->新建...创建一新项目,项目名称为S7-1500_ET200S_ModbusSlave。
图1 新建项目
2、用鼠标点击“添加新设备”,选择SIMATIC S7-1500->CPU->CPU 1518-4 PN/DP->6ES7 518-4AP00-0AB0。
图2 添加站点CPU 1518-4PN/DP
3、双击“设备组态”进入设备视图。双击以太网接口,进入以太网接口属性界面,新建一个子网“PN/IE_1”,并分配IP地址。
图3 组态硬件
4、点击菜单栏"在线"->"硬件检测"->"网络中的PROFINET设备",在线检测所连接的ET200S站点,如图4所示。
图4 在线检测ET200S站
在弹出的"PROFINET 设备的硬件检测"窗口内勾选搜索到的ET200S站点,并点击添加设备。
图5 添加ET200S站
5、设备添加成功后,在"网络视图"内,可以看到新添加的ET200S站。另外,用户也可以从选件目录中找到正确的ET200S接口模块型号,将它拖拽到网络视图中,添加模块时需要注意组态的模块版本应与实际一致。
图6 添加ET200S站法二
6、点击ET200S站左侧“未分配”,选择IO控制器“PLC_1.PROFINET接口_1”,为ET200S分配好IO控制器。
图7 Profinet网络配置
同时为ET200S的以太网接口分配好IP地址,注:此时给ET200S分配了一个设备名称为"im151-3pn"(该名称不唯一,以实际项目为准),确保离线和在线的设备名称一致。
下面介绍如何修改设备名称。 如需离线修改该设备名称,可以进入ET200S模块的属性-〉以太网地址。
图8 离线修改ET200S的设备名称
下面介绍如何在线分配IO设备名称。如ET200S的实际设备名称与组态设置的不一致,可以在线修改。右击网络“PN/IE_1”,点击“分配设备名称”,在线修改ET200S的设备名称。
图9 分配设备名称
确保ET200S的设备名称的状态是“确定”,如果出现不一致的情况,选择问题站点后点击“分配名称”,确保该站点最后的状态是“确定”,如下图所示。
图10 确认ET200S设备名称在线与离线一致
7、双击“im151-3pn”,进入ET200S组态界面,(自动检测已经将电源模块PM-E和ET200S 1SI串口模块组态到1、2槽;手动组态时需要用户手动从选件目录中拖拽添加),双击1SI_1串口通信模块,进入属性框,协议选择"Modbus Slave",波特率为9600,地址区为32字节。
图11 1SI_1选择协议
8、点击“报文”,进行报文设置,从站地址:2,停止位:1,奇偶校验:无。
图12 报文设置
9、点击“接口”,接口选择“半双工(RS-485两线制模式)”,接收线路初始状态选择“信号R(A)0V/信号R(B)5V”。
图13 接口设置
1、双击"添加新块",创建数据块DB10,如下图所示,按照图中所示,设置各个变量的启动值。注:有关每个变量的含义,可以参考手册"SIMATIC ET200S 串行接口模块"的3.6.3章节和3.6.18章节。
举例说明: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是对应关系,往下依次类推。
图14 新建发送数据块
创建2个数据块,如下图所示,DB11(命名FC030616)、DB12(命名FC04),这2个数据块都创建1个数据类型Array的变量,数组元素的数据类型为Word,数量为201。注:DB11的数据变量用于功能码03、06、16;DB12的数据变量用于功能码04。用于下面的测试。
图15 新建FC030616功能码数据块
1.注意以上两个DB块,右键其属性对话框,一定要确保"优化的块访问"参数未勾选。
2、进入主程序OB1,从通信->通信处理器->ET200S串行接口,调用发送功能块S_MODB。
图16 调用功能块
关于功能块S_MODB的管脚说明,请见表2。
管脚 |
解释描述 |
LADDR |
模块的硬件标识符,本例中为264,具体查找方法见常见问题1。 |
START_TIMER |
超时初始化定时器,本例中为T0 |
START_TIME |
超时初始化时间值,本例中为S5t#5s |
DB_NO |
地址映射DB块,本例中为DB10 |
OB_MASK |
外设访问错误屏蔽位,本例中为M0.0 |
CP_START |
FB初始化始能位,该位需要置1。本例中为M0.1 |
CP_START_FM |
CP_START初始化的上升沿位,本例中为M0.2 |
CP_START_NDR |
从CP写操作位,本例中为M0.3 |
CP_START_OK |
初始化成功标志,本例中为M0.4 |
CP_START_ERROR |
初始化失败标志,本例中为M0.5 |
ERROR_NR |
错误号,本例中为MW2 |
ERROR |
错误位,为TRUE说明有错误。 |
ERROR_INFO |
错误信息,本例中为MW4,可以查看“Simatic ET200S串行接口模块”手册,第3章节 |
以RS485的方式接线为例说明,ET200S 1SI 模块按照RS485的接线方式连接到电脑的USB口,连接示意图如下。
图17 硬件结构和接线示意图
前面使用 TIA Step7 软件已经将通信ET200S的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件ModSim32软件来测试ET200S和计算机的通信,步骤如下:
1、首先将硬件配置和程序下载到CPU1518-4PN/DP中。将项目程序在线,本示例中手动将M0.1(即:CP_START)置1,M0.2(即:CP_START_FM)和M0.4(即:CP_START_OK)也会为1。
图18 CP_START管脚置1情况
2、在计算机上打开MODBUS主站仿真软件Modscan32。
图19 打开Modscan32
3、点击Modscan32上的Connection->Connect,显示画面如下,选择计算机和ET200S相连的COM口COM1(与实际所使用的COM口一致),设好波特率,数据位,停止位,校验方式,注:这些设置要与1SI_1的设置一致,如下图。
图20 设置连接端口
4、设置完成,点击OK,显示画面如下。
图21 ET200S的03功能码发送数据
5、Modscan32软件界面03的地址40001~40005分别设置为1~5,打开监控表,监控功能码030616对应的数据块DB11,创建前5个字,查看所接收的数据(此处既可以接收Modscan32的数据,也可以修改Modscan32的数据)。
图22 功能码030616数据测试结果
6、打开监控表,监控功能码04对应的数据块DB12,创建前5个字,修改数据分别为11~15,Modscan32软件界面04的地址30001~30005分别显示11~55的数据(此处收功能码04的限制只能写入数据到Modscan32)。
图23 功能码04数据测试结果
1.为什么功能块报错"16#1E0E"?
可能的原因是:功能块的“LADDR”管脚设置错误,正确的应该设置该模块的硬件标识符,而不是模块的I/O起始地址,具体查找步骤参考下表。
方法一 |
方法二 |