重构部分枚举, 让models包不依赖其他项目中的包
This commit is contained in:
@@ -5,12 +5,41 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"git.huangwc.com/pig/pig-farm-controller/internal/infra/utils/command_generater"
|
||||
|
||||
"gorm.io/datatypes"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ModbusFunctionCode 定义Modbus功能码的枚举类型
|
||||
type ModbusFunctionCode byte
|
||||
|
||||
// 定义常用的Modbus功能码常量及其应用场景
|
||||
const (
|
||||
// ReadCoils 读取线圈状态 (0x01)
|
||||
// 场景: 用于读取数字量输出(DO)或内部标志位的当前状态,这些状态通常是开关量。
|
||||
ReadCoils ModbusFunctionCode = 0x01
|
||||
// ReadDiscreteInputs 读取离散输入状态 (0x02)
|
||||
// 场景: 用于读取数字量输入(DI)的当前状态,这些状态通常是外部传感器的开关量信号。
|
||||
ReadDiscreteInputs ModbusFunctionCode = 0x02
|
||||
// ReadHoldingRegisters 读取保持寄存器 (0x03)
|
||||
// 场景: 用于读取设备内部可读写的参数或数据,例如温度设定值、电机速度等模拟量或配置数据。
|
||||
ReadHoldingRegisters ModbusFunctionCode = 0x03
|
||||
// ReadInputRegisters 读取输入寄存器 (0x04)
|
||||
// 场景: 用于读取设备的模拟量输入(AI)数据,这些数据通常是只读的,例如当前温度、压力、电压等实时测量值。
|
||||
ReadInputRegisters ModbusFunctionCode = 0x04
|
||||
// WriteSingleCoil 写入单个线圈 (0x05)
|
||||
// 场景: 用于控制单个数字量输出(DO),例如打开或关闭一个继电器、指示灯等。
|
||||
WriteSingleCoil ModbusFunctionCode = 0x05
|
||||
// WriteSingleRegister 写入单个保持寄存器 (0x06)
|
||||
// 场景: 用于修改设备内部的单个可写参数,例如设置一个温度控制器的目标温度、调整一个阀门的开度等。
|
||||
WriteSingleRegister ModbusFunctionCode = 0x06
|
||||
// WriteMultipleCoils 写入多个线圈 (0x0F)
|
||||
// 场景: 用于批量控制多个数字量输出(DO),例如同时打开或关闭一组继电器。
|
||||
WriteMultipleCoils ModbusFunctionCode = 0x0F
|
||||
// WriteMultipleRegisters 写入多个保持寄存器 (0x10)
|
||||
// 场景: 用于批量修改设备内部的多个可写参数,例如一次性更新多个配置参数或模拟量输出值。
|
||||
WriteMultipleRegisters ModbusFunctionCode = 0x10
|
||||
)
|
||||
|
||||
// DeviceCategory 定义了设备模板的宽泛类别
|
||||
type DeviceCategory string
|
||||
|
||||
@@ -51,7 +80,7 @@ func (sc *SwitchCommands) SelfCheck() error {
|
||||
// SensorCommands 定义了传感器读取指令所需的Modbus参数
|
||||
type SensorCommands struct {
|
||||
// ModbusFunctionCode 记录Modbus功能码,例如 ReadHoldingRegisters。(一般是第二字节)
|
||||
ModbusFunctionCode command_generater.ModbusFunctionCode `json:"modbus_function_code"`
|
||||
ModbusFunctionCode ModbusFunctionCode `json:"modbus_function_code"`
|
||||
// ModbusStartAddress 记录Modbus寄存器的起始地址,用于生成指令。(一般是第三到四字节)
|
||||
ModbusStartAddress uint16 `json:"modbus_start_address"`
|
||||
// ModbusQuantity 记录Modbus寄存器的数量,用于生成指令。(一般是五到六字节)
|
||||
@@ -62,7 +91,7 @@ type SensorCommands struct {
|
||||
func (sc *SensorCommands) SelfCheck() error {
|
||||
// 校验ModbusFunctionCode是否为读取类型
|
||||
switch sc.ModbusFunctionCode {
|
||||
case command_generater.ReadCoils, command_generater.ReadDiscreteInputs, command_generater.ReadHoldingRegisters, command_generater.ReadInputRegisters:
|
||||
case ReadCoils, ReadDiscreteInputs, ReadHoldingRegisters, ReadInputRegisters:
|
||||
// 支持的读取功能码
|
||||
default:
|
||||
return fmt.Errorf("'sensor' 指令集 ModbusFunctionCode %X 无效或不是读取类型", sc.ModbusFunctionCode)
|
||||
|
||||
Reference in New Issue
Block a user