Modbus 适配器

介绍

Modbus是主/从协议,请求信息的设备称为Modbus主设备,提供信息的设备称为Modbus从设备。 在标准的Modbus网络中,有1个主设备和最多247个从设备,每个从设备具有从1到247的唯一从设备地址。 除了请求从设备的信息外,主设备也可以将信息写入从设备。

Modbus适配器实现了goburrow/modbus,支持TCP和RTU协议,它作为控制器(主sheb )节点,连接或操作边缘端的Modbus从设备。

注册操作

  • 线圈寄存器:即CoilRegister,可读可写,1位(关闭/打开)

  • 离散输入寄存器:即DiscreteInputRegister,可读,1位(关闭/打开)

  • 输入寄存器:即HoldingRegister,可读,16位(0至65,535),本质上是测量值和状态

  • 保持寄存器:即InputRegister,可读可写,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
说明

国内用户,可以使用以下方法加速安装:

kubectl apply -f http://rancher-mirror.cnrancher.com/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

参数描述类型
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