一、概述
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.variable和msg.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-200Smart選擇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
審核編輯 黃宇
-
plc
+關注
關注
5051文章
14592瀏覽量
486862 -
網關
+關注
關注
9文章
6767瀏覽量
56250 -
邊緣計算
+關注
關注
22文章
3527瀏覽量
53434 -
node
+關注
關注
0文章
30瀏覽量
6383
發布評論請先 登錄
西門子S7-1200/1500 PLC數據采集上云實戰指南
上萬點數據如何穩定采集?基于 BL118 Node-RED 的工業邊緣匯聚方案
BL118 Node-RED 邊緣計算網關:數據采集場景下的“隱形冠軍”
Node-RED工業節點推薦:Modbus、PLC、OPC UA、MQTT 都能搞定!
工業物聯網和自動化領域 Node-RED 最常用的 10 大節點,你用過幾個?
ProfibusDP轉DeviceNet施耐德PLC聯合西門子S7–1200提升物流倉儲貨物分揀效率技術案例
工業智能網關可以采集西門子PLC嗎
西門子S7 PLC通過深控技術無點表工業網關實現數據采集與智能決策方案
縱橫智控EG8200Mini邊緣計算網關:構建自動化系統的高效連接中樞
【教程】Node-RED中Chirpstack節點使用指南
【干貨】什么是Node-RED?一文帶你了解!
鋇錸技術BL118 Node-Red邊緣計算網關西門子PLC S7協議使用方法
評論