S7协议读取西门子S7-200 Smart PLC数据

描述

(以下来源公众号授权-更多可见-https://mp.weixin.qq.com/s/uk0QMT59wlOD1wBSfxPx5Q-苏州稳联)

西门子S7-200 Smart PLC因其稳定性和易用性而广泛应用。通过使用S7协议,可以实现对PLC数据的高效读取和控制。本文将详细介绍如何使用S7协议读取西门子S7-200 Smart PLC的数据。

西门子 S7 协议

适配PLC:S7-200 Smart

  S7-300

  S7-400

  S7-1200

  S7-1500

       西门子目前在售的PLC一般都支持S7协议通信,以下主要讲解EG8200Mini使用S7协议读取西门子S7-200 Smart PLC的数据。

1. 硬件连接

S7协议采用网口通信的方式,因此,只需要保证网关的LAN口IP和西门子PLC的IP在一个网段即可(注意:特殊情况下可以不在一个网段,需要设置路由,详询技术支持)。本例程IP地址分配如下:

plc

2. PLC通信参数

   2.1. 查看机架/槽号

a.如果PLC型号是S7-200 Smart,无需设置机架号和槽号

b.如果PLC型号是S7-300/S7-400/S7-1200/S7-1500,在设备组态页面下,选择常规,项目信息,查看机架号和槽号:

plc

   2.2.打开访问权限

如果PLC型号是S7-1200/S7-1500,需打开访问权限,才能读取到数据,具体操作如下:

a.右键单击要使用的DB快,在弹出的会话框中选择属性,在弹出的会话框中,取消勾选优化的块访问:

plcplc

右键单击设备名称,在弹出的会话框中选择属性,如图设置访问级别和连接机制:

plcplcplc

3. 网关设置

   3.1. PLC连接设置

 


地址:PLC的IP
端口:102(S7通信默认102)
连接超时:2000
通讯超时:2000
型号:S200Smart
plc

 

   3.2. 数据点位设置

在Siemens节点的参数列表内填写要读取的数据点,数据点填写完成后,会按照设定的频率自动读取PLC的数据。

数据点一般PLC工程师会提供,拿到点位表后,按照网关要求的格式填写数据点,具体对应关系可以参考:

本例程读取VD20地址的数据,通过STEP7软件可以看到VD20存储的浮点数是:415.64,在参数列表,依次填写地址/名称/数据类型/数据长度,定时2秒循环读取,如图所示:

plc

   3.3. 测试

a.如果PLC型号是S7-200 Smart,无需设置机架号和槽号

b.如果PLC型号是S7-300/S7-400/S7-1200/S7-1500,在设备组态页面下,选择常规,项目信息,查看机架号和槽号:

4. 将两者连起来

将画布的注入节点和调试节点连接在一起,具体方法是:鼠标移动到注入节点的输出口,按住鼠标左键不放,拖拽到调试节点的输入口,松开鼠标即可

plc

5. 部署

此时,节点和流程仅存在于工作区中。如果需要流程执行,必须点击部署按钮将程序固化到网关内

plc

6. 测试

选中调试区的日志窗口,单击注入节点的左侧按钮,日志窗口会打印时间戳

plc

7. 添加一个函数节点

你可以在函数节点里面通过JavaScript代码对消息进行处理

删除现有的连线(选择连线,在键盘上按Delete键)

在注入节点和调试节点之间连接函数节点

双击函数节点打开编辑对话框,将以下代码复制到对话框中,点击完成按钮关闭对话框,单击部署按钮

 


// Create a Date object from the payload
   var date = new Date(msg.payload);
   // Change the payload to be a formatted Date string
   msg.payload = date.toString();
// Return the message so it can be sent on
return msg;

 

现在,单击注入节点按钮时,日志窗口的消息已经被函数节点格式化为可读的时间戳

plc

总结

本章节介绍了创建流程的基本概念,展示了如何使用注入节点手动触发流程,以及调试节点如何在日志窗口查看信息,同时还展示了如何使用函数节点对消息进行处理,S7协议为读取和控制西门子S7-200 Smart 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 = new Date(msg.payload);n// Change the payload to be a formatted Date stringnmsg.payload = date.toString();n// Return the message so it can be sent onnreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":200,"wires":[["013be0bcfbabf68b"]]}]

plc

注意

其他的节点都可以理解为封装好的函数节点。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分