智能家居填坑003 Modbus设备接入篇

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能家居填坑003 Modbus设备接入篇相关的知识,希望对你有一定的参考价值。

Modbus设备

格控TCP系列507E、508M、508D

1、IO端口多:508D有32个DI口、508M有24个DO口、507E有8个DI和8个DO口。

2、原生支持有线Modbus-TCP协议。

3、价格便宜,差评少。

4、支持二次开发:后期计划将普通设备逻辑写入里面,就可以脱离服务器。

5、产品相关资料 :格控资料

准备

格控设备在说明书里详细的说明了设备的设置方式,在此就不多加叙述(不同品牌的设置方式存在差异,均需详细参考说明书)。

1、给设备分配与你所在网段匹配的ip地址。

eg. 我的网段是192.168.0.X,我设置的508M:192.168.0.203、508D:192.168.0.202

2、使用附赠的测试软件,测试设备是否已正常连接。


3、node-red安装节点node-red-contrib-modbus。

 

node-red相关设置

1、在整个过程中主要使用modbus-flex-write、modbus-flex-getter两个节点。

2、modbus-flex-getter轮询:获取线圈或寄存器信息

3、配置服务端

 

4、 写入操作指令

 

5、串成流以后就如下所示

 

[

{

"id": "13aff178.470a47",

"type": "inject",

"z": "f570f583.ba8418",

"name": "",

"topic": "",

"payload": "",

"payloadType": "date",

"repeat": "0.2",

"crontab": "",

"once": true,

"onceDelay": "0",

"x": 180,

"y": 3160,

"wires": [

[

"ff699d5b.46a718"

]

]

},

{

"id": "ff699d5b.46a718",

"type": "function",

"z": "f570f583.ba8418",

"name": "Read 0-31 on Unit 1 FC2",

"func": "msg.payload = { value: msg.payload, \'fc\': 2, \'unitid\': 1, \'address\': 0 , \'quantity\': 32 };\\nreturn msg;",

"outputs": 1,

"noerr": 0,

"x": 390,

"y": 3160,

"wires": [

[

"25928808.805ab"

]

]

},

{

"id": "25928808.805ab",

"type": "modbus-flex-getter",

"z": "f570f583.ba8418",

"name": "获取按键状态",

"showStatusActivities": false,

"showErrors": false,

"logIOActivities": false,

"server": "bc23592e.d784c8",

"useIOFile": false,

"ioFile": "",

"useIOForPayload": false,

"x": 620,

"y": 3160,

"wires": [

[

"aebee8cf.f142a8"

],

[]

]

},

{

"id": "efe7fdc6.38e45",

"type": "comment",

"z": "f570f583.ba8418",

"name": "定时轮询",

"info": "",

"x": 160,

"y": 3120,

"wires": []

},

{

"id": "e74381c4.affad8",

"type": "inject",

"z": "f570f583.ba8418",

"name": "start",

"topic": "",

"payload": "",

"payloadType": "date",

"repeat": "",

"crontab": "",

"once": true,

"onceDelay": "0",

"x": 170,

"y": 3280,

"wires": [

[

"25cb2616.ce8292"

]

]

},

{

"id": "25cb2616.ce8292",

"type": "function",

"z": "f570f583.ba8418",

"name": "Read 0-31 on Unit 1 FC2",

"func": "msg.payload = { value: msg.payload, \'fc\': 2, \'unitid\': 1, \'address\': 0 , \'quantity\': 32 };\\nreturn msg;",

"outputs": 1,

"noerr": 0,

"x": 390,

"y": 3280,

"wires": [

[

"f3f8587.497f2a8"

]

]

},

{

"id": "f3f8587.497f2a8",

"type": "modbus-flex-getter",

"z": "f570f583.ba8418",

"name": "获取按键状态",

"showStatusActivities": false,

"showErrors": false,

"logIOActivities": false,

"server": "bc23592e.d784c8",

"useIOFile": false,

"ioFile": "",

"useIOForPayload": false,

"x": 620,

"y": 3280,

"wires": [

[

"4aba02be.620b74",

"a1768992.a4da3"

],

[]

]

},

{

"id": "beb6a924.cb22c",

"type": "comment",

"z": "f570f583.ba8418",

"name": "完整轮询",

"info": "",

"x": 160,

"y": 3240,

"wires": []

},

{

"id": "4aba02be.620b74",

"type": "delay",

"z": "f570f583.ba8418",

"name": "",

"pauseType": "delay",

"timeout": "5",

"timeoutUnits": "seconds",

"rate": "1",

"nbRateUnits": "1",

"rateUnits": "second",

"randomFirst": "1",

"randomLast": "5",

"randomUnits": "seconds",

"drop": false,

"x": 460,

"y": 3380,

"wires": [

[

"25cb2616.ce8292"

]

]

},

{

"id": "aebee8cf.f142a8",

"type": "debug",

"z": "f570f583.ba8418",

"name": "",

"active": true,

"tosidebar": true,

"console": false,

"tostatus": false,

"complete": "false",

"x": 830,

"y": 3160,

"wires": []

},

{

"id": "a1768992.a4da3",

"type": "debug",

"z": "f570f583.ba8418",

"name": "",

"active": true,

"tosidebar": true,

"console": false,

"tostatus": false,

"complete": "false",

"x": 830,

"y": 3280,

"wires": []

},

{

"id": "bc23592e.d784c8",

"type": "modbus-client",

"z": "",

"name": "",

"clienttype": "tcp",

"bufferCommands": true,

"stateLogEnabled": false,

"tcpHost": "192.168.0.203",

"tcpPort": "502",

"tcpType": "DEFAULT",

"serialPort": "/dev/ttyUSB",

"serialType": "RTU-BUFFERD",

"serialBaudrate": "9600",

"serialDatabits": "8",

"serialStopbits": "1",

"serialParity": "none",

"serialConnectionDelay": "100",

"unit_id": "1",

"commandDelay": "1",

"clientTimeout": "1000",

"reconnectOnTimeout": true,

"reconnectTimeout": "2000",

"parallelUnitIdsAllowed": true

}] 

 

 

6、改变设备状态就更简单了

以上是关于智能家居填坑003 Modbus设备接入篇的主要内容,如果未能解决你的问题,请参考以下文章

智能家居填坑006 新风接入

Modbus转Profinet网关把大棚内温湿度变送器接入到Profinet网络

Modbus设备通过边缘网关接入阿里云IoT平台

modbus网关 串口采集传输

中国移动物联网开放平台OneNET学习笔记——设备接入(MQTT协议)OneNET Studio篇

中国移动物联网开放平台OneNET学习笔记——设备接入(MQTT协议)OneNET Studio篇