西门子代理6SN1118-0DM33-0AA2
- 供应商
- 湖南西控自动化设备有限公司
- 认证
- 西门子
- 一级代理商
- PLC触摸屏变频器
- 核心供应商
- 德国
- 总代理
- 联系电话
- 17838383235
- 手机号
- 17838383235
- 经理
- 徐嘉泉
- 所在地
- 中国(湖南)自由贸易试验区长沙片区开元东路1306号开阳智能制造产业园(一期)4#栋301
- 更新时间
- 2024-11-29 08:50
西门子s7-200smart plc因其稳定性和易用性而广泛应用。通过使用s7协议,可以实现对plc数据的高效读取和控制。本文将详细介绍如何使用s7协议读取西门子s7-200smart plc的数据。
西门子 s7协议
适配plc:s7-200 smart
s7-300
s7-400
s7-1200
s7-1500
西门子目前在售的plc一般都支持s7协议通信,以下主要讲解eg8200mini使用s7协议读取西门子s7-200smart plc的数据。
1.硬件连接
s7协议采用网口通信的方式,因此,只需要保证网关的lan口ip和西门子plc的ip在一个网段即可(注意:特殊情况下可以不在一个网段,需要设置路由,详询技术支持)。本例程ip地址分配如下:
2.plc通信参数
2.1.查看机架/槽号
a.如果plc型号是s7-200 smart,无需设置机架号和槽号
b.如果plc型号是s7-300/s7-400/s7-1200/s7-1500,在设备组态页面下,选择常规,项目信息,查看机架号和槽号:
2.2.打开访问权限
如果plc型号是s7-1200/s7-1500,需打开访问权限,才能读取到数据,具体操作如下:
a.右键单击要使用的db快,在弹出的会话框中选择属性,在弹出的会话框中,取消勾选优化的块访问:
右键单击设备名称,在弹出的会话框中选择属性,如图设置访问级别和连接机制:
3.网关设置
3.1. plc连接设置
3.2.数据点位设置
在siemens节点的参数列表内填写要读取的数据点,数据点填写完成后,会按照设定的频率自动读取plc的数据。
数据点一般plc工程师会提供,拿到点位表后,按照网关要求的格式填写数据点,具体对应关系可以参考:
本例程读取vd20地址的数据,通过step7软件可以看到vd20存储的浮点数是:415.64,在参数列表,依次填写地址/名称/数据类型/数据长度,定时2秒循环读取,如图所示:
3.3.测试
a.如果plc型号是s7-200 smart,无需设置机架号和槽号
b.如果plc型号是s7-300/s7-400/s7-1200/s7-1500,在设备组态页面下,选择常规,项目信息,查看机架号和槽号:
4.将两者连起来
将画布的注入节点和调试节点连接在一起,具体方法是:鼠标移动到注入节点的输出口,按住鼠标左键不放,拖拽到调试节点的输入口,松开鼠标即可
5.部署
此时,节点和流程仅存在于工作区中。如果需要流程执行,必须点击部署按钮将程序固化到网关内
6.测试
选中调试区的日志窗口,单击注入节点的左侧按钮,日志窗口会打印时间戳
7.添加一个函数节点
你可以在函数节点里面通过javascript代码对消息进行处理
删除现有的连线(选择连线,在键盘上按delete键)
在注入节点和调试节点之间连接函数节点
双击函数节点打开编辑对话框,将以下代码复制到对话框中,点击完成按钮关闭对话框,单击部署按钮
现在,单击注入节点按钮时,日志窗口的消息已经被函数节点格式化为可读的时间戳
总结
本章节介绍了创建流程的基本概念,展示了如何使用注入节点手动触发流程,以及调试节点如何在日志窗口查看信息,同时还展示了如何使用函数节点对消息进行处理,s7协议为读取和控制西门子s7-200smart plc提供了高效可靠的解决方案。通过合理配置和编写读取程序,可以轻松实现对plc数据的获取和应用。
源码
所有的流程支持以json格式导入导出,方便与其他人分享做好的流程。本章节的流程json文件如下,复制后在菜单栏右上角选择导入粘贴即可,导出同理
[{"id":"783c29e7b877e75e","type":"inject","z":"265cd2b9785ecf45","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"oncedelay":0.1,"topic":"","payload":"","payloadtype":"date","x":190,"y":200,"wires":[["948ded5b0cd90f27"]]},{"id":"013be0bcfbabf68b","type":"debug","z":"265cd2b9785ecf45","name":"调试1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targettype":"msg","statusval":"","statustype":"auto","x":550,"y":200,"wires":[]},{"id":"948ded5b0cd90f27","type":"function","z":"265cd2b9785ecf45","name":"函数计算1","func":"// create a date object from the payloadnvar date = newdate(msg.payload);n// change the payload to be a formatted datestringnmsg.payload = date.tostring();n// return the message so itcan be sent onnreturnmsg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":200,"wires":[["013be0bcfbabf68b"]]}]
注意
其他的节点都可以理解为封装好的函数节点。
a