-
Notifications
You must be signed in to change notification settings - Fork 136
3.1 工具类介绍
-
ValueHelper.cs
ValueHelper是一个值转换工具类,分为ValueHelper(小端),BigEndianValueHelper(大端),BigEndianMsbValueHelper(大端高位)。
ValueHelper全部为单例。-
ByteLength
确定一钟类型的字节长度
-
GetBytes
把值类型转换为字节数组
-
ObjectArrayToByteArray
把值数组转换为字节数组
-
GetValue
把字节数组转换为值类型
-
ByteArrayToObjectArray
-
ByteArrayToDestinationArray
把字节数组转换为值数组
-
SetValue
把一个值写入字节数组当中
-
有关position系统的说明
几乎所有的函数都拥有一个ref pos的参数,这个参数的作用相当于一个指针,指向需要转换的字节数组的位置。
比如有一个长度为8的数组,现在需要转换这个数组的第5到第6字节。
此时pos的值为4。0x08 0x17 0xa3 0xc4 0x00 0x05 0xa1 0x03 pos=4 转换时调用:
(data == byte[], pos == 4) short a = ValueHelper.Instance.GetShort(data, ref pos);
调用完成后,pos自动变成6,供下一次转换使用。
0x08 0x17 0xa3 0xc4 0x00 0x05 0xa1 0x03 pos=6 -
有关获取ValueHelper
ValueHelper有一个静态方法GetInstance,传入Endian可以返回相应端格式的ValueHelper,利用这个函数可以把Endian变为参数获取其对应的实例。
-
-
CRC16.cs
CRC16中包含CRC16和LRC两种校验。
-
AsyncHelper.cs
AsyncHelper种包含了一些常用的异步操作。
- RunSync 让异步方法以同步方式运行。
- WithCancellation 让异步方法带上取消标识运行。
Nito.AsyncEx也包含在Modbus.Net中。
-
AddressHelper.cs
AddressHelper中包含了对子地址系统的快速转换方法。
-
有关对子地址系统的说明
Modbus.Net对设备子地址的描述分为绝对坐标和相对坐标
下面以Modbus协议说明这两种坐标之间的关系。Modbus协议中的数据读写(3X,4X)是以Word为单位进行操作的,Word由2个Byte组成。
绝对坐标永远以1个地址对应8个Bit构成,而相对坐标则根据协议不同而不同。
比如Modbus是一个地址由两个Byte构成,因此它的相对坐标的一个地址由16个bit构成。相对坐标 绝对坐标 30001 6b 3X 1 6b 30001 15b 3X 2 7b 40116 13b 4X 232 5b 而开关量读写(0X,1X)是以bit为单位进行操作。
因此相对坐标是一个地址由1个bit构成。
相对坐标 绝对坐标 00001 0b 0X 1 0b 00015 0b 0X 2 7b 10116 0b 1X 14 3b 简单来说,相对坐标表示协议中的一个地址中含有协议中指定的byte个数。而绝对坐标的一个地址中一定只含一个byte。
AddressHelper中的方法就是在相对坐标与绝对坐标之间快速转化。
-
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