西门子S7协议-读写_物联网平台_边缘计算网关

概述

ThingsKit Edge平台的Node-red系统中,【s7-in】 和 【s7-out 】节点是用于与 Siemens S7 PLC(可编程逻辑控制器)进行通信的节点。这些节点允许你在 Node-RED 中与 S7 PLC 进行数据交换和控制。

1. s7-in 节点

s7-in 节点用于从 Siemens S7 PLC 中读取数据。

你可以通过这个节点读取 PLC 中的特定数据块(DB)、输入(I)、输出(Q)、标志(M)等变量的值。

输入

#无

输出

#设备反馈信息
msg.payload

2. s7-out 节点

s7-out 节点用于将数据发送到 Siemens S7 PLC 中。你可以通过这个节点向 PLC 写入数据,控制其输出或更新数据块的值。

输入

#将要写进PLC设备指定数据块的数据
msg.payload

输出

#无

示例及其代码

[{"id":"c3f08b05d373b392","type":"comment","z":"6a6f3334b805e346","name":"读取【西门子S7-200_Smart】示例","info":"","x":340,"y":160,"wires":[]},{"id":"bb99b041a7914ade","type":"comment","z":"6a6f3334b805e346","name":"写入【西门子S7-200_Smart】示例","info":"","x":340,"y":440,"wires":[]},{"id":"2c8e03cf3af14d75","type":"mqtt-out","z":"6a6f3334b805e346","name":"温湿度传感器_01","deviceProfileId":"b256ec00-634c-11ef-b639-9f572d0089df","organizationId":"2bdbedd0-fd96-11ef-988c-556d7f6d32b0","entityId":"b9ecc160-634c-11ef-b639-9f572d0089df","credentialsId":"9T2D7ilYr36gZXQ8","username":"","password":"","clientId":"","transportType":"DEFAULT","deviceType":"DIRECT_CONNECTION","gatewayId":"","thingsModelMapping":[{"key":"温度","identifier":"CurrentTemperature"},{"key":"湿度","identifier":"CurrentHumidity"}],"x":810,"y":300,"wires":[]},{"id":"4f2f66bcb9742dfd","type":"s7 in","z":"6a6f3334b805e346","endpoint":"010dbe8f361fbb7f","mode":"all","variable":"","diff":true,"name":"","x":330,"y":260,"wires":[["aba96ed8b6477d86","f921a221ab72f8e1"]]},{"id":"7f8dbd0fa6ad1b0d","type":"s7 out","z":"6a6f3334b805e346","endpoint":"010dbe8f361fbb7f","variable":"自定义数值:","name":"","x":500,"y":540,"wires":[]},{"id":"f921a221ab72f8e1","type":"debug","z":"6a6f3334b805e346","name":"debug 1","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":600,"y":340,"wires":[]},{"id":"8ec7d985ba09b8e1","type":"inject","z":"6a6f3334b805e346","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"1635","payloadType":"num","x":270,"y":540,"wires":[["7f8dbd0fa6ad1b0d"]]},{"id":"aba96ed8b6477d86","type":"function","z":"6a6f3334b805e346","name":"function 1","func":"var object = msg.payload;nvar wendu = object.温度.toFixed(2);nvar shidu = object.湿度.toFixed(2);nnvar json = {n    "温度":wendu,n    "湿度":shidun}nmsg.payload = json;nnreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":600,"y":260,"wires":[["2c8e03cf3af14d75","0ab822266879fe92"]]},{"id":"0ab822266879fe92","type":"debug","z":"6a6f3334b805e346","name":"debug 2","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":780,"y":220,"wires":[]},{"id":"010dbe8f361fbb7f","type":"s7 endpoint","transport":"iso-on-tcp","address":"192.168.1.179","port":"102","rack":"0","slot":"2","localtsaphi":"10","localtsaplo":"02","remotetsaphi":"03","remotetsaplo":"01","connmode":"tsap","adapter":"","busaddr":"2","cycletime":"2000","timeout":"3000","name":"","vartable":[{"addr":"DB1,REAL1300","name":"温度"},{"addr":"DB1,REAL1304","name":"湿度"},{"addr":"DB1,INT1250","name":"自定义数值:"}]}]

配置解析

连接节点连接配置

标记红框处就是需要注意的配置参数,此处配置不正确,导致无法建立连接;

该项配置,是针对S7-200;其余型号选择Rack/Slot。

如果是S7-1200;

一般是选择Mode【Rack/Slot】【机架/插槽】

Rack【0】Slot【0】或者Rack【0】Slot【1】

如果是S7-1500;

一般是选择Mode【Rack/Slot】【机架/插槽】

要看实际的插槽位置

数据读取配置

上述内容来源:

“DB1”表示变量存储区域(对应西门子设备V存储区:变量存储区)

“REAL”/“INT”表示读取的数据类型

(不同的数据类型会读取不同大小的区域,REAL读4个字节/INT读2个字节)

“1300”/“1304”/“1250”表示该值存储区域的起始地址

字段映射原理:

点位表读取,请参考node-red-contrib-s7官方说明

读取DB块中的变量(DB块必须取消优化的块访问)

提示:PLC中绝对地址访问用【.】进行分割,在Node-RED中用【,】进行分割!

读取变量表中的变量(过程映像输入寄存器 I区域

读取变量表中的变量(过程映像输出寄存器  Q区域

读取变量表中的变量(中间变量寄存器  M区域

本文通过 YUQUE WORDPRESS 同步自语雀
云腾五洲-AI助理