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]

指定一个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],默认值为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指定设备的 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否