@iot9x.com/ipc-utils
Version:
九星云、九星小程序、九星配置工具所共用的库方法
317 lines (316 loc) • 14.7 kB
TypeScript
import { F32Encode, F64Encode, I16Encode, I32Encode, I64Encode, ModbusDataType } from './constant';
/** 线圈值 */
type CoilValue = 0 | 1;
/** 保持寄存器的值类型 */
type HoldRegisterValue = string | number;
/** 编解码参数 */
interface EncodeOptions {
/** 16位整型编码(有符号+无符号) */
i16?: I16Encode;
/** 32位整型编码(有符号+无符号) */
i32?: I32Encode;
/** 32位浮点型编码(FLOAT) */
f32?: F32Encode;
/** 64位整型编码(有符号+无符号) */
i64?: I64Encode;
/** 64位浮点型编码(Double) */
f64?: F64Encode;
}
/** 生成指令额外参数 */
interface GetCMDOptions {
/**
* 指令字符是否小写
* @description 传入`true`,返回示例:`010001000a`;
* @description 传入`false`或不传,返回示例:`010001000A`
* @default false
*/
lowerCase?: boolean;
/**
* 分隔符
* @description 不传返回示例:`0100010001`;
* @description 传入`' '`空格返回示例:`01 00 01 00 01`;
* @description 传入`'-'`返回示例:`01-00-01-00-01`;
*/
separator?: string;
}
export declare class ModbusPDU {
/** 16位整型编码(有符号+无符号) */
private i16Encode;
/** 32位整型编码(有符号+无符号) */
private i32Encode;
/** 32位浮点型编码(FLOAT) */
private f32Encode;
/** 64位整型编码(有符号+无符号) */
private i64Encode;
/** 64位浮点型编码(Double) */
private f64Encode;
/**
* 实例化ModbusRTU类
* @param params 初始化参数
*/
constructor(params?: EncodeOptions);
/**
* 读线圈寄存器——01功能码
* @param startAddress 起始地址
* @param count 线圈数量
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readCoilCMD(startAddress: number, count: number, options?: GetCMDOptions): string;
/**
* 读离散输入寄存器——02功能码
* @param startAddress 起始地址
* @param count 离散输入寄存器数量
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readDiscreteInputCMD(startAddress: number, count: number, options?: GetCMDOptions): string;
/**
* 读保持寄存器——03功能码
* @param startAddress 起始地址
* @param count 保持寄存器数量
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readHoldCMD(startAddress: number, count: number, options?: GetCMDOptions): string;
/**
* 根据数据类型读保持寄存器——03功能码
* @param startAddress 起始地址
* @param dataType 想要读取的数据类型
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readHoldCMDByDataType(startAddress: number, dataType: ModbusDataType, options?: GetCMDOptions): string;
/**
* 根据数据类型列表读保持寄存器——03功能码
* @param startAddress 起始地址
* @param dataTypeList 想要读取的数据类型列表(按顺序排列哦)
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readHoldCMDByDataTypeList(startAddress: number, dataTypeList: ModbusDataType[], options?: GetCMDOptions): string;
/**
* 读输入寄存器——04功能码
* @param startAddress 起始地址
* @param count 输入寄存器数量
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readInputCMD(startAddress: number, count: number, options?: GetCMDOptions): string;
/**
* 根据数据类型读输入寄存器——04功能码
* @param startAddress 起始地址
* @param dataType 想要读取的数据类型
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readInputCMDByDataType(startAddress: number, dataType: ModbusDataType, options?: GetCMDOptions): string;
/**
* 根据数据类型列表读输入寄存器——04功能码
* @param startAddress 起始地址
* @param dataTypeList 想要读取的数据类型列表(按顺序排列哦)
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
static readInputCMDByDataTypeList(startAddress: number, dataTypeList: ModbusDataType[], options?: GetCMDOptions): string;
/**
* 读取指令统一实现
* @param codeHex 功能码
* @param startAddress 起始地址
* @param count 寄存器数量
* @param options 生成指令额外参数
* @returns 读取命令——十六进制字符串
*/
private getReadCMD;
/**
* 解析01功能码返回内容
* @param resHex 发送读取线圈指令(01功能码)后modbus从机返回内容,十六进制字符串
* @returns 解析结果
*/
static resolveCoilRes(resHex: string): CoilValue[];
/**
* 解析02功能码返回内容
* @param resHex 发送读取输入寄存器指令(02功能码)后modbus从机返回内容,十六进制字符串
* @returns 解析结果
*/
static resolveDiscreteInputRes(resHex: string): CoilValue[];
/**
* 解析03功能码返回内容
* @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串
* @returns 寄存器原始值,十六进制字符串
*/
static resolveHoldResRaw(resHex: string): string;
/**
* 按照数据类型解析03功能码返回内容
* @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串
* @param dataType 数据类型
* @param options 附加参数
* @returns 寄存器值
*/
resolveHoldResByDataType(resHex: string, dataType: ModbusDataType, options?: EncodeOptions): HoldRegisterValue;
/**
* 按照数据类型列表解析03功能码返回内容
* @param resHex 送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串
* @param dataTypeList 数据类型列表
* @param options 附加参数
* @returns 寄存器值列表
*/
resolveHoldResByDataTypeList(resHex: string, dataTypeList: ModbusDataType[], options?: EncodeOptions): HoldRegisterValue[];
/**
* 按照数据类型解析03功能码返回内容
* @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串
* @param dataType 数据类型
* @param options 附加参数
* @returns 寄存器值
*/
static resolveHoldResByDataType(resHex: string, dataType: ModbusDataType, options?: EncodeOptions): HoldRegisterValue;
/**
* 按照数据类型列表解析03功能码返回内容
* @param resHex 送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串
* @param dataTypeList 数据类型列表
* @param options 附加参数
* @returns 寄存器值列表
*/
static resolveHoldResByDataTypeList(resHex: string, dataTypeList: ModbusDataType[], options?: EncodeOptions): HoldRegisterValue[];
/**
* Modbus读取返回内容合法性校验
* @param codeHex 功能码十六进制字符串
* @param resHex 读取返回内容
*/
private resCheck;
/**
* 写单个线圈——05功能码
* @param startAddress 线圈寄存器地址
* @param value 线圈值
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeCoilCMD(startAddress: number, value: CoilValue, options?: GetCMDOptions): string;
/**
* 写多个线圈——0F功能码
* @param startAddress 线圈寄存器起始地址
* @param valueList 线圈值列表(按顺序哦)
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeMultiCoilCMD(startAddress: number, valueList: CoilValue[], options?: GetCMDOptions): string;
/**
* 写单个保持寄存器——06功能码
* @param startAddress 保持寄存器的地址
* @param valueHex 保持寄存器的值,十六进制字符串格式
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeHoldCMD(startAddress: number, valueHex: string, options?: GetCMDOptions): string;
/**
* 根据数据类型写单个保持寄存器——06功能码
* @param startAddress 保持寄存器的地址
* @param data 数据值
* @param dataType 数据类型
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
writeHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string;
/**
* 根据数据类型写单个保持寄存器——06功能码
* @param startAddress 保持寄存器的地址
* @param data 数据值
* @param dataType 数据类型
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string;
/**
* 写多个保持寄存器——10功能码
* @param startAddress 保持寄存器起始地址
* @param valueHex 保持寄存器的值,十六进制字符串格式
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeMultiHoldCMD(startAddress: number, valueHex: string, options?: GetCMDOptions): string;
/**
* 根据数据类型写多个保持寄存器——10功能码
* @param startAddress 保持寄存器起始地址
* @param data 数据值
* @param dataType 数据类型
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
writeMultiHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string;
/**
* 根据数据类型写多个保持寄存器——10功能码
* @param startAddress 保持寄存器起始地址
* @param data 数据值
* @param dataType 数据类型
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeMultiHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string;
/**
* 根据数据列表写多个保持寄存器——10功能码
* @param startAddress 保持寄存器起始地址
* @param dataList 要写入的数据和类型元组的列表
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
writeMultiHoldByDataTypeListCMD(startAddress: number, dataList: [number | string, ModbusDataType][], options?: GetCMDOptions & EncodeOptions): string;
/**
* 根据数据列表写多个保持寄存器——10功能码
* @param startAddress 保持寄存器起始地址
* @param dataList 要写入的数据和类型元组的列表
* @param options 生成指令额外参数
* @returns 写入命令——十六进制字符串
*/
static writeMultiHoldByDataTypeListCMD(startAddress: number, dataList: [number | string, ModbusDataType][], options?: GetCMDOptions & EncodeOptions): string;
/**
* 解析06功能码返回内容
* @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串
* @param startAddress 保持寄存器的地址
* @param valueHex 保持寄存器的值,十六进制字符串格式
* @returns 写入结果
*/
resolveWriteHoldRes(resHex: string, startAddress: number, valueHex: string): boolean;
/**
* 解析06功能码返回内容
* @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串
* @param startAddress 保持寄存器的地址
* @param valueHex 保持寄存器的值,十六进制字符串格式
* @returns 写入结果
*/
static resolveWriteHoldRes(resHex: string, startAddress: number, valueHex: string): boolean;
/**
* 解析06功能码返回内容
* @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串
* @param startAddress 保持寄存器的地址
* @param data 数据值
* @param dataType 数据类型
* @param options 附加参数
* @returns 写入结果
*/
resolveWriteHoldByDataTypeRes(resHex: string, startAddress: number, data: number, dataType: ModbusDataType, options?: EncodeOptions): boolean;
/**
* 解析06功能码返回内容
* @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串
* @param startAddress 保持寄存器的地址
* @param data 数据值
* @param dataType 数据类型
* @param options 附加参数
* @returns 写入结果
*/
static resolveWriteHoldByDataTypeRes(resHex: string, startAddress: number, data: number, dataType: ModbusDataType, options?: EncodeOptions): boolean;
/**
* 解析10功能码返回内容
* @param resHex 发送写入多个寄存器(10功能码)指令后modbus从机返回内容,十六进制字符串
* @param options 附加参数
* @returns 元组类型,第一个元素为写入寄存器的地址,第二个元素为写入寄存器的数量
*/
resolveWriteMultiHoldRes(resHex: string, options?: EncodeOptions): [number, number];
/**
* 解析10功能码返回内容
* @param resHex 发送写入多个寄存器(10功能码)指令后modbus从机返回内容,十六进制字符串
* @param options 附加参数
* @returns 元组类型,第一个元素为写入寄存器的地址,第二个元素为写入寄存器的数量
*/
static resolveWriteMultiHoldRes(resHex: string, options?: EncodeOptions): [number, number];
}
export {};