介绍
Modbus是主/从协议,请求信息的设备称为Modbus 主设备,提供信息的设备称为Modbus 从设备。 在标准的 Modbus 网络中,有 1 个主设备和最多 247 个从设备,每个从设备具有从 1 到 247 的唯一从设备地址。 除了请求从设备的信息外,主设备也可以将信息写入从设备。
Modbus 适配器实现了goburrow/modbus,支持 TCP 和 RTU 协议,它作为控制器(主 sheb )节点,连接或操作边缘端的 Modbus 从设备。
注册操作
线圈寄存器:即 CoilRegister,可读可写,1 位(关闭/打开)
离散输入寄存器:即 DiscreteInputRegister,可读,1 位(关闭/打开)
输入寄存器:即 InputRegister,可读可写,16 位(0 到 65,535),本质上是配置值
保持寄存器:即 HoldingRegister,可读,16 位(0 至 65,535),本质上是测量值和状态
注册信息
版本 | 注册名称 | 端点 Socket | 是否可用 |
---|
v1alpha1 | adaptors.edge.cattle.io/modbus | modbus.sock | 是 |
支持模型
类型 | 设备组 | 版本 | 是否可用 |
---|
ModbusDevice | devices.edge.cattle.io | v1alpha1 | 是 |
支持平台
操作系统 | 架构 |
---|
linux | amd64 |
linux | arm |
linux | arm64 |
使用方式
kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/modbus/deploy/e2e/all_in_one.yaml
权限
对 Octopus 授予权限,如下所示:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
modbusdevices.devices.edge.cattle.io [] [] [create delete get list patch update watch]
modbusdevices.devices.edge.cattle.io/status [] [] [get patch update]
Modbus DeviceLink YAML 示例
指定一个ModbusDevice
设备链接来连接串口温度计。
apiVersion: edge.cattle.io/v1alpha1
kind: DeviceLink
metadata:
name: modbus-rtu
spec:
adaptor:
node: edge-worker
name: adaptors.edge.cattle.io/modbus
model:
apiVersion: "devices.edge.cattle.io/v1alpha1"
kind: "ModbusDevice"
template:
metadata:
labels:
device: modbus-rtu
spec:
parameters:
syncInterval: 10s
timeout: 10s
protocol:
rtu:
endpoint: /dev/tty.usbserial-1410
workerID: 1
parity: "N"
stopBits: 2
dataBits: 8
baudRate: 9600
properties:
- name: temperature
description: data collection of temperature sensor
readOnly: true
visitor:
register: HoldingRegister
offset: 0
quantity: 1
orderOfOperations:
- type: Divide
value: "10"
type: float
更多的 “ModbusDevice “设备链接实例,请参考deploy/e2e目录,并使用deploy/e2e/simulator.yaml进行快速体验。
ModbusDevice
ModbusDeviceSpec
ModbusDeviceStatus
ModbusDeviceParameters
参数 | 描述 | 类型 | 是否必填 |
---|
syncInterval | 指定默认的设备同步时间间隔,默认为15s | string | 否 |
timeout | 指定默认的设备的连接超时时间,默认为10s | string | 否 |
ModbusDeviceProtocol
ModbusDeviceProtocolRTU
参数 | 描述 | 类型 | 是否必填 |
---|
endpoint | 指定设备的串口,其形式为”/dev/ttyS0” | string | 是 |
workerID | 指定设备的 worker ID | int | 是 |
baudRate | 指定连接的波特率,衡量传输速度,默认为 “19200” | int | 否 |
dataBits | 指定连接的数据位,可选值为:[5、6、7、8],默认值为8 。 | int | 否 |
parity | 指定连接的奇偶性,可选值为[N - None, E - Even, O - Odd],默认值为E 。 | string | 否 |
stopBits | 指定连接的停止位,可选值为[1,2],使用 N(None)奇偶校验需要 2 个停止位,默认值为1 。 | int | 否 |
ModbusDeviceProtocolTCP
参数 | 描述 | 类型 | 是否必填 |
---|
endpoint | 指定设备的 IP 地址,其形式为 “ip:port” | string | 是 |
workerID | 指定设备的 workerID | int | 是 |
ModbusDeviceProperty
ModbusDeviceStatusProperty
ModbusDevicePropertyType
参数 | 描述 | 类型 |
---|
string | 属性数据类型为 string | string |
int | 属性数据类型为 int | string |
float | 属性数据类型为 float | string |
boolean | 属性数据类型为 boolean | string |
ModbusDevicePropertyVisitor
ModbusDeviceRegisterType
参数 | 描述 | 类型 |
---|
CoilRegister | 可读可写,1 位(关闭/打开) | string |
DiscreteInputRegister | 可读,1 位(关闭/打开)。 | string |
InputRegister | 可读,16 位(0 至 65,535),本质上是测量值和状态 | string |
HoldingRegister | 可读可写,16 位(0 到 65,535),本质上是配置值 | string |
ModbusDeviceArithmeticOperation
ModbusDeviceArithmeticOperationType
参数 | 描述 | 类型 |
---|
Add | 加法的算术运算。 | string |
Subtract | 减法的算术运算。 | string |
Multiply | 乘法的算术运算。 | string |
Divide | 除法的算术运算。 | string |
ModbusDeviceExtension