S7-1500系统内使用ET200S 1SI模块实现Modbus 主站通信
1.硬件列表
2.组态和配置
3.编写通信程序
4.设备连接
5.通信测试
6.常见问题
1 硬件列表
表1 实验所需硬件列表
设备名称 |
设备型号 |
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 |
2 组态和配置
1、打开软件TIA PORTAL STEP7 V16,点击项目->新建...创建一新项目,项目名称为S7-1500_ET200S_ModbusMaster。
图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 Master",波特率为9600,地址区为32字节。
图11 1SI_1选择协议
8、点击“报文”,进行报文设置,停止位:1,奇偶校验:无。
图12 报文设置
9、点击“接口”,接口选择“半双工(RS-485两线制模式)”,接收线路初始状态选择“信号R(A)0V/信号R(B)5V”。
图13 接口设置
3 编写通信程序
1、双击"添加新块",创建发送数据块DB10和接收数据块DB11,发送数据块的名称为Send,接收数据块的名称为Rev;如下图所示,发送数据块中新建几个变量,从站地址为2,功能码为3,起始地址为0,读4个寄存器数据,具体功能码3 的使用参见手册"Simatic ET200S 串行接口模块" 3.5章节的说明。
图14 新建发送数据块
如下图所示,接收数据块中新建1个数据类型Array的变量,数组元素的数据类型为Word,数量为101。
图15 新建接收数据块
1.注意以上两个DB块,右键其属性对话框,一定要确保"优化的块访问"参数未勾选。
2、进入主程序OB1,从通信->通信处理器->ET200S串行接口,调用发送功能块S_SEND和接收功能块S_RCV。S_END的背景数据块为DB3,S_RCV的背景数据块为DB4。
图16 调用发送接收功能块
1SI串口模块的发送与接收功能块的参数设置见以下表格。
表2 发送功能块S_SEND 参数表
管脚 |
解释描述 |
REQ |
发送数据触发位,上升沿触发,本例中为M10.5(M10.5为1Hz的时钟脉冲,具体设置见图17)。 |
R |
取消通讯,本例中不用。 |
LADDR |
模块的硬件标识符,本例中为264,具体查找方法见常见问题2。 |
DB_NO |
发送数据块号,本例中为10(DB10)。 |
DBB_NO |
发送数据的起始地址,本例中为0(DB10.DBB0)。 |
LEN |
发送数据的长度,本例中为MW2,本例中MW2赋值为6。 |
COM_RST |
如果为1,重新启动FB,本例中为M0.2。 |
DONE |
发送完成位,发送完成且没有错误时为TRUE。 |
ERROR |
错误位,为TRUE说明有错误。 |
STATUS |
状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。 |
表3 接收功能块S_RCV 参数表
管脚 |
解释描述 |
EN_R |
使能接收位,本例中为M1.0,常闭点, 始终保持接收状态。 |
R |
取消通讯,本例中不用。 |
LADDR |
模块的硬件标识符,本例中为264,具体查找方法见常见问题2。 |
DB_NO |
接收数据块号,本例中为11(DB11)。 |
DBB_NO |
接收数据的起始地址,本例中为0(DB11.DBB0)。 |
LEN |
接收数据的长度,本例中为MW6,只显示一个扫描周期,即:只有在接收到数据的当前周期,此值不为0。 |
COM_RST |
如果为1,重新启动FB,本例中为M1.2。 |
NDR |
接收完成位,接收完成并没有错误为TRUE。 |
ERROR |
错误位,为TRUE说明有错误。 |
STATUS |
状态字,标识错误代码,查看ET200S串行模块手册获得相应的说明。 |
打开设备视图->CPU属性->系统和时钟存储器,可以设置M10.5的时钟脉冲,具体参考以下截图。
图17 CPU时钟存储器设置
4 设备连接
以RS485的方式接线为例说明,ET200S 1SI 模块按照RS485的接线方式连接到电脑的USB口,连接示意图如下。
图18 硬件结构和接线示意图
5 通信测试
前面使用 TIA Step7 软件已经将通信ET200S的通信工作做完,下面进行通信测试。这里使用串口通讯测试软件ModSim32软件来测试ET200S和计算机的通信,步骤如下:
1、双击ModSim32软件图标,新建项目,点击Port1,进入端口1做设置,本例计算机只有一个端口,所以就对端口1做设置,如果计算机有多个端口,要注意所选端口。
图19 测试软件新建测试项目
2、进入Port1设置界面,设置波特率、数据位、奇偶校验等参数,要和ET200S的参数相同。
图20 设置从站端口
3、点击"OK",选择软件的03功能码界面,本例设置03功能码的10个数据,其中前4个数据分别设置成1—4。
图21 从站03功能码设置数据
4、1SI串口模块发送数据到SSCOM32。
- (1).将硬件配置和程序下载到CPU1518-4PN/DP中
- (2).设置需要发送的数据长度MW2=6(字节)
- (3).将DB10中前6个字节以默认值设置,如图22所示
- (4).当M10.5从FALSE置成TRUE时,1SI串口模块将发送请求数据
图22 ET200S的03功能码发送数据5、M1.0为常闭点,程序下载完成,CPU运行后,就始终处于接收状态。在STEP7中打开接收数据块DB11监控接收到的数据,从站响应的2个寄存器数据被正确的接收。
图23 ET200S 1SI接收到的从站响应的结果常见问题
1.为什么程序下载后,CPU突然不能正常启动,并报错“编程错误(OB启动事件)”和“FB97中的区域长度错误”?
如下图所示,CPU切换为STOP模式,报错“编程错误(OB启动事件)”和“FB97中的区域长度错误”。
图24 ET200S 调试软件发送数据1SI接收数据测试结果可能的原因是:发送或者接收的数据块(例中DB10或者DB11)是优化的DB块,那么在执行发送或者接收操作时会报以上错误,并且CPU停机,所以务必注意该DB块的属性必须是非优化的,如图15。
2.为什么发送或者接收指令块报错"16#1E0E"?
可能的原因是:发送或者接收功能块的“LADDR”管脚设置错误,正确的应该设置该模块的硬件标识符,而不是模块的I/O起始地址,具体查找步骤参考下表。
表4 模块硬件标识符查找方法
方法一
方法二
http://www.ad.siemens.com.cn/productportal/prods/1500published/Comm/Comm_10.2/Comm_10.2.html#%E7%A1%AC%E4%BB%B6%E5%88%97%E8%A1%A8
S7-1500系统内使用ET200S 1SI模块实现Modbus 主站通信相关推荐
- S7-1500系统内使用ET200S 1SI模块实现自由口通信
1.硬件列表 2.组态和配置 3.编写通信程序 4.设备连接 5.通信测试 6.常见问题 1 硬件列表 表1 实验所需硬件列表 设备名称 设备型号 CPU 1518-4PN/DP 6ES7 518-4 ...
- 基于S7–1500的单部六层电梯教程(六)
此文主要用于解答大家的一些常见的疑惑. 此文原文: 内容包括 部分程序讲解.下载的程序如何打开等. https://zhuanlan.zhihu.com/p/367266801 Q1: 参考程序运行起 ...
- et200s模块接线图讲解_【图】ET200S热电偶模块的用法举例
ET200S热电偶模块的用法 在ET200S的热电偶模块使用中,冷端补偿去哪儿了? 客户使用ET200S的热电偶模块(6ES7134-4JB01-0AB0),发现其读值不准,首先确认客户所使用的冷端补 ...
- 基于S7–1500的单部六层电梯教程(五)
前面的内容 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教程(四) 基于S7–1 ...
- 基于S7–1500的单部六层电梯教程(三)
教程继续更新ing 程序思路讲解 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教 ...
- 基于S7–1500的单部六层电梯教程(一)
Background: 该系列文章写于2020/8月,西门子智能制造线上赛期间. 疫情原因,西门子智能制造挑战赛于2020年发起了一次线上赛.线上赛的资格赛就是利用EET评分的单部六层电梯的程序编写. ...
- 基于S7–1500的单部六层电梯教程(四)
继续. 程序思路讲解 基于S7–1500的单部六层电梯教程(一) 基于S7–1500的单部六层电梯教程(二) 基于S7–1500的单部六层电梯教程(三) 基于S7–1500的单部六层电梯教程(四) 基 ...
- 基于S7–1500的单部六层电梯教程(二)
此文开始讲解[单部六层电梯]的程序编写思路,由于自身能力限制,许多编写思路不一定足够严谨,但是足够起到入门效果.(初学时,俺直接拿着六部十层的程序啃,痛苦无比.) 依旧以西门子去年的线上资格赛为背景( ...
- 信而泰推出100G多速率测试模块:填补中国通信产业链短板
随着互联网和移动互联网走向全面繁荣,以及视频业务逐渐普及,人们对高带宽的需求越来越迫切.尤其是近年来三大运营商将视频业务确立为战略性基础业务并大力拓展,以4K等为代表的"大视频"时 ...
最新文章
- 圣杯布局简单结构代码!
- nio java是什么_Java NIO 的前生今世 之一 简介
- ant通用模板(build_common.xml)使用介绍
- 专访 Swin Transformer 作者胡瀚:面向计算机视觉中的「开放问题」
- 故障诊断仪采集发动机EMS故障的报文与故障码记录
- 软件工程教程:第3章需求分析 课后习题
- SVN update拒绝访问,clean up失败
- Photoshop(PS)2021安装教程【64位】
- vue---向后台校验用户名/手机号码/邮箱等唯一性的参数是否被注册
- 安装与配置VMware虚拟机 https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
- 二极管和三极管的导通电压
- 如何查询linux的系统版本
- 人类白细胞抗原-HLA简介
- 织梦 plus/download.php,织梦/plus/download.php url重定向漏洞的解决方法
- 深度学习笔记之关于常用模型或者方法(四)
- 成人生命周期中的脑白质微结构:使用高级扩散模型和脑龄预测的纵向和横断面的混合研究
- Kubernetes的网络架构
- 关于计算机好处的英语小作文600字,电脑的重要性英语作文初一
- c++ 7的倍数和含7 的数输出
- Bootstrap之表格,按钮,表单和图片的样式