Skip to main content

Modbus 适配器

介绍#

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

使用方式#

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#

参数描述类型是否必填
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将连接协议指定为 RTU*ModbusDeviceProtocolRTU
tcp将连接协议指定为 TCP*ModbusDeviceProtocolTCP

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#

参数描述类型
int属性数据类型为 int,与 int32 相同string
int16属性数据类型为 intstring
int32属性数据类型为 intstring
int64属性数据类型为 intstring
uint属性数据类型为 uint,与 uint32 相同string
uint16属性数据类型为 uintstring
uint32属性数据类型为 uintstring
uint64属性数据类型为 uintstring
float属性数据类型为 float,32 位string
double属性数据类型为 float,64 位string
boolean属性数据类型为 boolstring
hexString属性数据类型为 hex in string,例如 “CD01 ”string

ModbusDevicePropertyValueEndianness#

参数描述类型
BigEndian属性值的字节序为大端序string
LittleEndian属性值的字节序为小端序string
BigEndianSwap属性值的字节序为大端置换序string
LittleEndianSwap属性值的字节序为小端置换序string

ModbusDevicePropertyVisitor#

参数描述类型是否必填
register指定要访问的镜像仓库ModbusDeviceRegisterType
offset指定读/写数据的寄存器的起始偏移量int
quantity指定寄存器的数量int
endianness指定值的字节顺序ModbusDevicePropertyValueEndianness
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
Last updated on by yzeng25