介绍

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是否可用
v1alpha1adaptors.edge.cattle.io/modbusmodbus.sock

支持模型

类型设备组版本是否可用
ModbusDevicedevices.edge.cattle.iov1alpha1

支持平台

操作系统架构
linuxamd64
linuxarm
linuxarm64

使用方式

  1. kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/modbus/deploy/e2e/all_in_one.yaml

权限

对 Octopus 授予权限,如下所示:

  1. Resources Non-Resource URLs Resource Names Verbs
  2. --------- ----------------- -------------- -----
  3. modbusdevices.devices.edge.cattle.io [] [] [create delete get list patch update watch]
  4. modbusdevices.devices.edge.cattle.io/status [] [] [get patch update]

Modbus DeviceLink YAML 示例

指定一个ModbusDevice设备链接来连接串口温度计。

  1. apiVersion: edge.cattle.io/v1alpha1
  2. kind: DeviceLink
  3. metadata:
  4. name: modbus-rtu
  5. spec:
  6. adaptor:
  7. node: edge-worker
  8. name: adaptors.edge.cattle.io/modbus
  9. model:
  10. apiVersion: "devices.edge.cattle.io/v1alpha1"
  11. kind: "ModbusDevice"
  12. template:
  13. metadata:
  14. labels:
  15. device: modbus-rtu
  16. spec:
  17. parameters:
  18. syncInterval: 10s
  19. timeout: 10s
  20. protocol:
  21. rtu:
  22. endpoint: /dev/tty.usbserial-1410
  23. workerID: 1
  24. parity: "N"
  25. stopBits: 2
  26. dataBits: 8
  27. baudRate: 9600
  28. properties:
  29. - name: temperature
  30. description: data collection of temperature sensor
  31. readOnly: true
  32. visitor:
  33. register: HoldingRegister
  34. offset: 0
  35. quantity: 1
  36. orderOfOperations:
  37. - type: Divide
  38. value: "10"
  39. type: float

更多的 “ModbusDevice “设备链接实例,请参考deploy/e2e目录,并使用deploy/e2e/simulator.yaml进行快速体验。

ModbusDevice

参数描述类型是否必填
metadata元数据metav1.ObjectMeta
spec定义ModbusDevice的预期状态ModbusDeviceSpec
status定义ModbusDevice的实际状态ModbusDeviceStatus

ModbusDeviceSpec

参数描述类型是否必填
extension指定设备的插件ModbusDeviceExtension
parameters指定设备的参数ModbusDeviceParameters
protocol指定访问设备时使用的协议ModbusDeviceProtocol
properties指定设备的属性ModbusDeviceProperty

ModbusDeviceStatus

参数描述类型是否必填
properties上报设备的属性*ModbusDeviceStatusProperty

ModbusDeviceParameters

参数描述类型是否必填
syncInterval指定默认的设备同步时间间隔,默认为15sstring
timeout指定默认的设备的连接超时时间,默认为10sstring

ModbusDeviceProtocol

参数描述类型是否必填
rtu将连接协议指定为 RTUModbusDeviceProtocolRTU
tcp将连接协议指定为 TCPModbusDeviceProtocolTCP

ModbusDeviceProtocolRTU

参数描述类型是否必填
endpoint指定设备的串口,其形式为”/dev/ttyS0”string
workerID指定设备的 worker IDint
baudRate指定连接的波特率,衡量传输速度,默认为 “19200”int
dataBits指定连接的数据位,可选值为:[5、6、7、8],默认值为8int
parity指定连接的奇偶性,可选值为[N - None, E - Even, O - Odd],默认值为Estring
stopBits指定连接的停止位,可选值为[1,2],使用 N(None)奇偶校验需要 2 个停止位,默认值为1int

ModbusDeviceProtocolTCP

参数描述类型是否必填
endpoint指定设备的 IP 地址,其形式为 “ip:port”string
workerID指定设备的 workerIDint

ModbusDeviceProperty

参数描述类型是否必填
name指定属性名称string
description指定属性的描述string
type指定属性的类型ModbusDevicePropertyType
visitor指定属性的 visitorModbusDevicePropertyVisitor
readOnly指定属性的是否只读,默认值为falseboolean
value指定属性的值,只在可写属性中可用string

ModbusDeviceStatusProperty

参数描述类型是否必填
name财产名称string
type属性的类型ModbusDevicePropertyType
value属性的值,只在可写属性中可用string
updatedAt修改属性时的时间戳*metav1.Time

ModbusDevicePropertyType

参数描述类型
string属性数据类型为 stringstring
int属性数据类型为 intstring
float属性数据类型为 floatstring
boolean属性数据类型为 booleanstring

ModbusDevicePropertyVisitor

参数描述类型是否必填
register指定要访问的注册表ModbusDeviceRegisterType
offset指定读/写数据的寄存器的起始偏移量int
quantity指定寄存器的数量int
orderOfOperations指定操作的顺序ModbusDeviceArithmeticOperation

ModbusDeviceRegisterType

参数描述类型
CoilRegister可读可写,1 位(关闭/打开)string
DiscreteInputRegister可读,1 位(关闭/打开)。string
InputRegister可读,16 位(0 至 65,535),本质上是测量值和状态string
HoldingRegister可读可写,16 位(0 到 65,535),本质上是配置值string

ModbusDeviceArithmeticOperation

参数描述类型是否必填
type指定算术运算的类型ModbusDeviceArithmeticOperationType
value指定算术运算的值,其形式为浮点数字符串string

ModbusDeviceArithmeticOperationType

参数描述类型
Add加法的算术运算。string
Subtract减法的算术运算。string
Multiply乘法的算术运算。string
Divide除法的算术运算。string

ModbusDeviceExtension

参数描述类型是否必填
mqtt指定 MQTT 的设置*v1alpha1.MQTTOptionsSpec