-
Notifications
You must be signed in to change notification settings - Fork 136
2.6 协议表示层 Utility
协议表示层是Modbus.Net的第一层可以调用的API,利用这个协议API,既可以以协议为理解目标直接与设备通讯,也可以自己封装一个针对某种特定通讯的API。
协议表示曾分为两部分,属性IUtilityProperty和方法组IUtilityMethod。
IUtilityProperty内部有一个AddressTranslator,负责把string地址解析为有具体含义的地址AddressDef。
AddressTranslator可以自由替换
IUtilityProperty还有一个Endian端系统,可以指定数据的存储方式,分为小端格式,大端(小端bit)格式,大端(大端bit)格式。
IUtilityMethod是协议的方法组接口,定义了底层API可以执行的一组方法,这组方法需要继承IUtilityMethod并定义相应的接口,然后在类(Modbus.Net中为BaseUtility)中实现。
用户调用时只能直接看到IUtilityProperty,但是可以调用IUtilityProperty中的GetUtilityMethods来调用IUtilityMethod。
BaseUtility实现了IUtilityProperty和IUtilityMethodData,IUtilityMethodData包含一组GetDatas/GetDatasAsync负责读数据,以及SetDatas/SetDatasAsync负责写数据,在继承BaseUtility时只需要实现两个抽象函数,其余函数由框架自动完成。
public abstract Task<byte[]> GetDatasAsync(string startAddress, int getByteCount);
public abstract Task<bool> SetDatasAsync(string startAddress, object[] setContents);
当IMachineMethod发送命令的时候,IUtilityProperty解析地址,确定地址范围,然后IUtilityMethod把命令发送给IProtocol。
Modbus.Net Hangzhou Delian Science Technology Co.,Ltd. © 2023
-
2 Specification of Modbus.Net main framework
- 2.1 Modbus.Net Architecture
- 2.2 Transmission Control Layer Controller
- 2.3 Transmission Link Layer Connector
- 2.4 Concrete Protocol Layer ProtocolLinker
- 2.5 Abstract Protocol Layer Protocol
- 2.6 Protocol Presentation Layer Utility
- 2.7 Device Application Layer Machine
- 2.8 Task Application Layer MachineJob
-
3 Using Modbus.Net to implement a protocol
- 3.1 Global Tools
- 3.2 Extends Protocol and ProtocolUnit according to protocol specification
- 3.3 Extends Connector to create a link method
- 3.4 Extends Machine and Utility, creating two apis
- 3.5 Extends API methods to Machine and Utility
- 3.6 Extends Formater, Translator and Combiner, Creating Encoding,Decoding,Combining methods for address
- 3.7 Extends Controller, to control message