钡铼技术BL118 Node-Red边缘计算网关西门子PLC S7协议使用方法

一、概述

node-red-contrib-s7用于与 Siemens S7 PLC 交互的 Node-RED 节点。S7读数据 S7写数据 S7高级读取支持以S7协议读写西门子系列PLC的数据,目前已经测试过西门子PLC如下:

S7-200 Smart

注:仅支持网口通信。

二、安装方法

Node-RED 界面中的 "Manage Palette" 菜单安装此节点。

如果是开源的系统,可以在 npm install node-red-contrib-s7

注:需要 NodeJS 版本 10 或更高版本以及 Node-RED 版本 1.0 或更高版本。

三、节点介绍

3.1 s7 in读数据节点

从S7协议的PLC内部读取数据

l输出参数

|---------|------------------------|
| payload | 从PLC读取到的值,输出格式取决于配置的模式 |
| topic | 当输出为单个变量时,为消息的名称 |

l模式详解

从PLC中按照配置好的规则循环读取所有数据,有三种模式:

|----------------------------------------------|----------------------------------------------------------------------------|
| 单个变量 (Single variable) | 可以从配置的变量中选择单个变量,每个周期都会输出一条消息。或者当采集的值变化时在输出。msg.payload是变量的值msg.topic是变量的名称 |
| 所有变量,每条消息一个 (All variables, one per message) | 每个变量输出一条和单个变量模式类似,每个变量都会输出一条消息 |
| 所有变量 (All variables) | 输出一条所有消息通过一条消息输出。msg.payload是一个包含了所有变量名称和值的结构体 |

3.2 s7 out 写数据节点

向S7协议的PLC内部写入数据。注:向生产环境的PLC写入数据时要慎重!

l输入参数

|----------|----------------------------------------|
| payload | 要写入的数据,将其转换为所需的数据类型 |
| variable | PLC要写入的变量,根据配置的变量表选择。只有当变量配置为空时,此字段才有效 |

向节点配置的变量或消息指定的变量中写入数据,可以通过将msg.variablemsg.payload设置为数组实现一次写入多个变量

3.3 s7 control 高级读取节点

高级控制功能,此节点的功能取决于选择的模式。

|------------------|-------------------------------------------------------------------------------|
| Cycle Time(循环) | 循环读取变量,时间间隔可以更改。如果选择此模式,payload必须是一个正数,即可以通过传入消息的payload字段来设置读取间隔。如果是0则禁用循环读取 |
| Trigger read(触发) | 手动触发读取 |

四、使用方法

4.1配置PLC节点

配置connection属性

S7读数据S7写数据S7高级读取共用一个S7配置节点,主要功能也集中在S7配置节点内,配置内容如下:

接口(Transport):目前只支持以太网,也就是S7协议

Address(IP):PLC的IP地址

Port(端口):S7通信端口,默认102

Mode(模式):Rack/Slot(机架号/槽号,通常选择此模式,TIA Portal软件查看地址见下图)

TASP(S7-200 Smart选择TASP,10.02 03.01)

Cycle time(采集周期):配置从PLC读取变量的时间间隔,如果设置0则禁用自动读取

Timeout(超时时间):配置从PLC读取变量的超时时间,如果网络繁忙或者延迟很高,可能需要加大此 时间。

TIA Portal(博途)软件架号槽号查看方法:

l配置Variables

变量地址即数据点地址,表示方式和Step7以及博图软件有一些不同,具体配置请参考下表进行设置:

|--------------------------|--------------|----------|--------------------------------------------------------------------------------|
| 变量地址 | Step7 地址 | 数据类型 | 描述 |
| DB5,X0.1 | DB5.DBX0.1 | Boolean | Bit 1 of byte 0 of DB 5 |
| DB23,B1 or DB23,BYTE1 | DB23.DBB1 | Number | Byte 1 (0-255) of DB 23 |
| DB100,C2 or DB100,CHAR2 | DB100.DBB2 | String | Byte 2 of DB 100 as a Char |
| DB42,I3 or DB42,INT3 | DB42.DBW3 | Number | Signed 16-bit number at byte 3 of DB 42 |
| DB57,WORD4 | DB57.DBW4 | Number | Unsigned 16-bit number at byte 4 of DB 57 |
| DB13,DI5 or DB13,DINT5 | DB13.DBD5 | Number | Signed 32-bit number at byte 5 of DB 13 |
| DB19,DW6 or DB19,DWORD6 | DB19.DBD6 | Number | Unsigned 32-bit number at byte 6 of DB 19 |
| DB21,R7 or DB21,REAL7 | DB19.DBD7 | Number | Floating point 32-bit number at byte 7 of DB 21 |
| DB2,S7.10* | - | String | String of length 10 starting at byte 7 of DB 2 |
| I1.0 or E1.0 | I1.0 or E1.0 | Boolean | Bit 0 of byte 1 of input area |
| Q2.1 or A2.1 | Q2.1 or A2.1 | Boolean | Bit 1 of byte 2 of output area |
| M3.2 | QM3.2 | Boolean | Bit 2 of byte 3 of memory area |
| IB4 or EB4 | IB4 or EB4 | Number | Byte 4 (0 -255) of input area |
| QB5 or AB5 | QB5 or AB5 | Number | Byte 5 (0 -255) of output area |
| MB6 | MB6 | Number | Byte 6 (0 -255) of memory area |
| IC7 or EC7 | IB7 or EB7 | String | Byte 7 of input area as a Char |
| QC8 or AC8 | QB8 or AB8 | String | Byte 8 of output area as a Char |
| MC9 | MB9 | String | Byte 9 of memory area as a Char |
| II10 or EI10 | IW10 or EW10 | Number | Signed 16-bit number at byte 10 of input area |
| QI12 or AI12 | QW12 or AW12 | Number | Signed 16-bit number at byte 12 of output area |
| MI14 | MW14 | Number | Signed 16-bit number at byte 14 of memory area |
| IW16 or EW16 | IW16 or EW16 | Number | Unsigned 16-bit number at byte 16 of input area |
| QW18 or AW18 | QW18 or AW18 | Number | Unsigned 16-bit number at byte 18 of output area |
| MW20 | MW20 | Number | Unsigned 16-bit number at byte 20 of memory area |
| IDI22 or EDI22 | ID22 or ED22 | Number | Signed 32-bit number at byte 22 of input area |
| QDI24 or ADI24 | QD24 or AD24 | Number | Signed 32-bit number at byte 24 of output area |
| MDI26 | MD26 | Number | Signed 32-bit number at byte 26 of memory area |
| ID28 or ED28 | ID28 or ED28 | Number | Unsigned 32-bit number at byte 28 of input area |
| QD30 or AD30 | QD30 or AD30 | Number | Unsigned 32-bit number at byte 30 of output area |
| MD32 | MD32 | Number | Unsigned 32-bit number at byte 32 of memory area |
| IR34 or ER34 | IR34 or ER34 | Number | Floating point 32-bit number at byte 34 of input area |
| QR36 or AR36 | QR36 or AR36 | Number | Floating point 32-bit number at byte 36 of output area |
| MR38 | MR38 | Number | Floating point 32-bit number at byte 38 of memory area |
| DB1,DT0 | - | Date** | A timestamp in the DATE_AND_TIME format |
| DB1,DTZ10 | - | Date** | A timestamp in the DATE_AND_TIME format, in UTC |
| DB2,DTL2 | - | Date** | A timestamp in the DTL format |
| DB1,DTLZ12 | - | Date** | A timestamp in the DTL format, in UTC |
| DB57,RWORD4 | DB57.DBW4 | Number | Unsigned 16-bit number at byte 4 of DB 57, interpreted as Little-Endian |
| DB13,RDI5 or DB13,RDINT5 | DB13.DBD5 | Number | Signed 32-bit number at byte 5 of DB 13, interpreted as Little-Endian |
| MRW20 | MRW20 | Number | Unsigned 16-bit number at byte 20 of memory area, interpreted as Little-Endian |

注:在使用S7-1200/1500读取数据时需要进行以下配置:

l要访问的数据块必须禁用:"Optimized block access"

l在 CPU 属性的"保护"部分中,启用 Permit access with PUT/GET

相关推荐
萌萌哒草头将军1 小时前
AudioDock:服务器和 NAS 音频播放最棒的软件!🚀🚀🚀
服务器·docker·node.js
未知原色2 小时前
web worker使用总结(包含多个worker)
前端·javascript·react.js·架构·node.js
weixin_531651819 小时前
Node.js Path 模块
node.js
紫小米10 小时前
webpack详解和实操
前端·webpack·node.js
风止何安啊11 小时前
用 10 行代码就能当 “服务器老板”+“网络小偷”+“文件管家”?Node.js:别不信!
前端·javascript·node.js
晨旭缘12 小时前
Node.js 后端 CORS 跨域问题终极解决指南
node.js
觅_12 小时前
Node.js 异步非阻塞编程模型核心特点
node.js
小北方城市网12 小时前
第 9 课:Node.js + Express 后端实战 —— 为任务管理系统搭建专属 API 服务
大数据·前端·ai·node.js·express
Drift_Dream1 天前
Node.js第一课:实现简易的命令行任务管理器
node.js
user297525876121 天前
AI实践:结合LangChain实现一个自动生成项目README的VSCode插件
langchain·node.js·visual studio code