ModbusRtu 类 |
命名空间: HslCommunication.ModBus
ModbusRtu 类型公开以下成员。
名称 | 说明 | |
---|---|---|
ModbusRtu |
实例化一个Modbus-Rtu协议的客户端对象 Instantiate a client object of the Modbus-Rtu protocol | |
ModbusRtu(Byte) |
指定Modbus从站的站号来初始化 Specify the station number of the Modbus slave to initialize |
名称 | 说明 | |
---|---|---|
AddressStartWithZero |
获取或设置起始的地址是否从0开始,默认为True Gets or sets whether the starting address starts from 0. The default is True | |
BaudRate |
当前连接串口信息的波特率 (继承自 DeviceSerialPort。)Baud rate of current connection serial port information | |
BroadcastStation |
获取或是设置当前广播模式对应的站号,广播模式意味着不接收设备方的数据返回操作,默认为 -1,表示不使用广播模式。 Gets or sets the station number corresponding to the current broadcast mode. Broadcast mode means that the data return operation of the device is not received. The default value is -1, indicating that broadcast mode is not used. | |
ByteTransform |
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。 (继承自 DeviceCommunication。)The current data transformation mechanism is required when you need to convert type data from byte data. | |
CommunicationPipe | (继承自 DeviceSerialPort。) | |
ConnectionId |
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定 (继承自 BinaryCommunication。)The unique ID number of the current connection. The default is a 20-digit guid code plus a random number. | |
Crc16CheckEnable |
获取或设置是否启用CRC16校验码的检查功能,默认启用,如果需要忽略检查CRC16,则设置为 false 即可。 Gets or sets whether to enable the check function of CRC16 check code. It is enabled by default. If you need to ignore the check of CRC16, you can set it to false. | |
DataFormat |
获取或设置数据解析的格式,可选ABCD, BADC,CDAB,DCBA格式,对int,uint,float,double,long,ulong类型有作用 Get or set the format of the data analysis, optional ABCD, BADC, CDAB, DCBA format, effective for int, uint, float, double, long, ulong type | |
EnableWriteMaskCode |
获取或设置当前掩码写入的功能码是否激活状态,设置为 false 时,再执行写入位时,会通过读字,修改位,写字的方式来间接实现。 When the function code is set to false, and then the write bit is executed, it will be indirectly implemented by reading, modifying the bit, and writing the word. | |
IsClearCacheBeforeRead |
是否在发送数据前清空缓冲数据,默认是false (继承自 DeviceSerialPort。)Whether to empty the buffer before sending data, the default is false | |
IsStringReverse |
字符串数据是否按照字来反转,默认为False Whether the string data is reversed according to words. The default is False. | |
LogNet |
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出 (继承自 BinaryCommunication。)The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG | |
PortName |
当前连接串口信息的端口号名称 (继承自 DeviceSerialPort。)The port name of the current connection serial port information | |
ReceiveEmptyDataCount |
获取或设置连续接收空的数据次数,在数据接收完成时有效,每个单位消耗的时间为SleepTime。 (继承自 DeviceSerialPort。)Obtain or set the number of consecutive times to receive empty data, which is valid when the data is received, and the time consumed by each unit is SleepTime | |
ReceiveTimeOut |
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈 (继承自 BinaryCommunication。)Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback | |
RtsEnable |
获取或设置一个值,该值指示在串行通信中是否启用请求发送 (RTS) 信号。 (继承自 DeviceSerialPort。)Gets or sets a value indicating whether the request sending (RTS) signal is enabled in serial communication. | |
SendBeforeHex |
获取或设置在发送通信报文前追加发送的字节信息,HEX格式,通常用于lora组网时,需要携带 00 00 00 02 四个字节的站地址功能。 (继承自 BinaryCommunication。)Obtain or set the byte information sent before sending communication packets, HEX format, usually used for LORA networking, you need to carry 00 00 00 02 four-byte station address function. | |
SleepTime |
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为0的时候,不需要休息。 (继承自 BinaryCommunication。)Get or set the time required to rest before officially receiving the data from the other party. When it is set to 0, no rest is required. | |
Station |
获取或者重新修改服务器的默认站号信息,当然,你可以再读写的时候动态指定,例如地址 "s=2;100", 更详细的例子可以参考DEMO界面上的地址示例。 Get or re-modify the server's default station number information, of course, you can dynamically specify when reading and writing, such as the address "s=2; 100", a more detailed example can refer to the DEMO interface address example. | |
StationCheckMacth |
获取或设置当前是否启用站号检查的功能,默认启用,读写数据时将进行站号确认操作,如果需要忽略站号,则设置为 false 即可。 Gets or sets whether the station ID check function is enabled. It is enabled by default. When reading or writing data, the station ID is confirmed. | |
WordLength |
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效 (继承自 DeviceCommunication。)The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid |
名称 | 说明 | |
---|---|---|
Close |
关闭当前的串口连接 (继承自 DeviceSerialPort。)Close the current serial connection | |
DecideWhetherQAMessage |
决定当前的消息是否是用于问答机制返回的消息,默认直接返回 true, 实际的情况需要根据协议进行重写方法 (继承自 BinaryCommunication。)To determine whether the current message is the message returned by the question answering mechanism, the default is true. In actual cases, the rewriting method needs to be performed according to the protocol | |
Dispose | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. (继承自 DeviceCommunication。) | |
Dispose(Boolean) | Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. (继承自 DeviceCommunication。) | |
Equals | Determines whether the specified object is equal to the current object. (继承自 Object。) | |
ExtraAfterReadFromCoreServer |
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现 (继承自 BinaryCommunication。)The method called when the interaction with the server is completed can perform some additional operations based on the read and write results. The specific operations need to be rewritten according to actual needs. | |
ExtraOnDisconnect |
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道 (继承自 BinaryCommunication。)Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting. | |
ExtraOnDisconnectAsync |
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道 (继承自 BinaryCommunication。)Select whether to rewrite this method according to the actual protocol. Some protocols need to send some packets to close the current network channel before disconnecting. | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (继承自 Object。) | |
GetHashCode | Serves as the default hash function. (继承自 Object。) | |
GetLogTextFromBinary |
获取当前的报文进行日志记录的时候,是否使用二进制的格式记录,默认返回 LogMsgFormatBinary,重写可以根据session对象分别返回不同记录模式 (继承自 BinaryCommunication。)Whether to log the current packet in binary format, the default return is LogMsgFormatBinary. If you want to override it, different recording modes can be returned according to session | |
GetNewNetMessage |
获取一个新的消息对象的方法,需要在继承类里面进行重写 (重写 BinaryCommunicationGetNewNetMessage.)The method to get a new message object needs to be overridden in the inheritance class | |
GetType | Gets the Type of the current instance. (继承自 Object。) | |
GetWordLength |
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效 (继承自 DeviceCommunication。)The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid | |
InitializationOnConnect |
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。 (继承自 BinaryCommunication。)Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created. | |
InitializationOnConnectAsync |
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。 (继承自 BinaryCommunication。)Whether to rewrite this method is based on the actual protocol. Some protocols require some initial signal handshake to establish a network channel after the connection is created. | |
IsOpen |
获取一个值,指示串口是否处于打开状态 (继承自 DeviceSerialPort。)Gets a value indicating whether the serial port is open | |
LogRevcMessage(Byte) |
使用日志记录一个接收的报文信息 (继承自 BinaryCommunication。)` Logs are used to record information about a received packet | |
LogRevcMessage(Byte, PipeSession) |
使用日志记录一个接收的报文信息 (继承自 BinaryCommunication。)` Logs are used to record information about a received packet | |
LogSendMessage(Byte) |
使用日志记录一个发送的报文信息 (继承自 BinaryCommunication。)Logs are used to record information about a send packet | |
LogSendMessage(Byte, PipeSession) |
使用日志记录一个发送的报文信息 (继承自 BinaryCommunication。)Logs are used to record information about a send packet | |
MemberwiseClone | Creates a shallow copy of the current Object. (继承自 Object。) | |
Open |
打开一个新的串行端口连接 (继承自 DeviceSerialPort。)Open a new serial port connection | |
PackCommandWithHeader |
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包 (重写 BinaryCommunicationPackCommandWithHeader(Byte).)The current command is packaged, usually carrying the content of the command header, marking the length of the current command, and it needs to be rewritten, otherwise it is not packaged by default | |
Read(String, UInt16) |
从Modbus服务器批量读取寄存器的信息,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x03,如果需要使用04功能码,那么地址就写成 x=4;100 (重写 DeviceCommunicationRead(String, UInt16).)To read the register information from the Modbus server in batches, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x03. If you need to use the 04 function code, the address is written as x = 4; 100 | |
ReadT |
读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明,或是官网的详细文档 (继承自 DeviceCommunication。)Read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details. | |
ReadAsync(String, UInt16) |
异步批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组 (继承自 DeviceCommunication。)Asynchronous batch read byte array information, need to specify the address and length, return the original byte array | |
ReadAsyncT |
异步读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明 (继承自 DeviceCommunication。)Asynchronously read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details. | |
ReadBool(String) |
读取单个的Boolean数据信息 (继承自 DeviceCommunication。)Read a single Boolean data message | |
ReadBool(String, UInt16) |
批量读取线圈或是离散的数据信息,需要指定地址和长度,具体的结果取决于实现,如果富文本地址不指定,默认使用的功能码是 0x01 (重写 DeviceCommunicationReadBool(String, UInt16).)To read coils or discrete data in batches, you need to specify the address and length. The specific result depends on the implementation. If the rich text address is not specified, the default function code is 0x01. | |
ReadBoolAsync(String) |
异步读取单个的Boolean数据信息 (继承自 DeviceCommunication。)Asynchronously read a single Boolean data message | |
ReadBoolAsync(String, UInt16) |
异步批量读取Boolean数组信息,需要指定地址和长度,返回Boolean 数组 (继承自 DeviceCommunication。)Asynchronously batch read Boolean array information, need to specify the address and length, return Boolean array | |
ReadCoil(String) |
读取线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x01 To read the coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x01. | |
ReadCoil(String, UInt16) |
批量的读取线圈,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x01 For batch reading coils, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x01. | |
ReadCoilAsync(String) |
读取线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x01 To read the coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x01. | |
ReadCoilAsync(String, UInt16) |
批量的读取线圈,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x01 For batch reading coils, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x01. | |
ReadCustomerT(String) |
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。 (继承自 DeviceCommunication。)To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type. | |
ReadCustomerT(String, T) |
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。 (继承自 DeviceCommunication。)To read a custom data type, you need to inherit from the IDataTransfer interface, pass in an instance, assign a value to this instance, and return the object of the instance. | |
ReadCustomerAsyncT(String) |
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。 (继承自 DeviceCommunication。)To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type. | |
ReadCustomerAsyncT(String, T) |
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。 (继承自 DeviceCommunication。)To read a custom data type, you need to inherit from the IDataTransfer interface, pass in an instance, assign a value to this instance, and return the object of the instance. | |
ReadDiscrete(String) |
读取输入线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x02 To read the input coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x02. | |
ReadDiscrete(String, UInt16) |
批量的读取输入点,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x02 To read input points in batches, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x02 | |
ReadDiscreteAsync(String) |
读取输入线圈,需要指定起始地址,如果富文本地址不指定,默认使用的功能码是 0x02 To read the input coil, you need to specify the start address. If the rich text address is not specified, the default function code is 0x02. | |
ReadDiscreteAsync(String, UInt16) |
批量的读取输入点,需要指定起始地址,读取长度,如果富文本地址不指定,默认使用的功能码是 0x02 To read input points in batches, you need to specify the start address and read length. If the rich text address is not specified, the default function code is 0x02 | |
ReadDouble(String) |
读取双浮点的数据 (继承自 DeviceCommunication。)Read double floating point data | |
ReadDouble(String, UInt16) |
读取双浮点数据的数组 (重写 DeviceCommunicationReadDouble(String, UInt16).)Read double floating point data array | |
ReadDoubleAsync(String) |
异步读取双浮点的数据 (继承自 DeviceCommunication。)Asynchronously read double floating point data | |
ReadDoubleAsync(String, UInt16) |
异步读取双浮点数据的数组 (重写 DeviceCommunicationReadDoubleAsync(String, UInt16).)Asynchronously read double floating point data array | |
ReadFloat(String) |
读取单浮点数据 (继承自 DeviceCommunication。)Read single floating point data | |
ReadFloat(String, UInt16) |
读取单浮点精度的数组 (重写 DeviceCommunicationReadFloat(String, UInt16).)Read single floating point array | |
ReadFloatAsync(String) |
异步读取单浮点数据 (继承自 DeviceCommunication。)Asynchronously read single floating point data | |
ReadFloatAsync(String, UInt16) |
异步读取单浮点精度的数组 (重写 DeviceCommunicationReadFloatAsync(String, UInt16).)Asynchronously read single floating point array | |
ReadFromCoreServer(IEnumerableByte) |
将多个数据报文按顺序发到设备,并从设备接收返回的数据内容,然后拼接成一个Byte[]信息,需要重写UnpackResponseContent(Byte, Byte)方法才能返回正确的结果。 (继承自 BinaryCommunication。)Send multiple data packets to the device in sequence, and receive the returned data content from the device, and then splicing them into a Byte[] message, you need to rewrite UnpackResponseContent(Byte, Byte) method to return the correct result. | |
ReadFromCoreServer(Byte) |
将Modbus报文数据发送到当前的通道中,并从通道中接收Modbus的报文,通道将根据当前连接自动获取,本方法是线程安全的。 (重写 BinaryCommunicationReadFromCoreServer(Byte).)Send Modbus message data to the current channel, and receive Modbus messages from the channel. The channel will automatically obtain it according to the current connection. This method is thread-safe. | |
ReadFromCoreServer(Byte, Boolean, Boolean) |
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。 (继承自 BinaryCommunication。)Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object | |
ReadFromCoreServer(CommunicationPipe, Byte, Boolean, Boolean) |
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。) | |
ReadFromCoreServerAsync(IEnumerableByte) |
将多个数据报文按顺序发到设备,并从设备接收返回的数据内容,然后拼接成一个Byte[]信息,需要重写UnpackResponseContent(Byte, Byte)方法才能返回正确的结果。 (继承自 BinaryCommunication。)Send multiple data packets to the device in sequence, and receive the returned data content from the device, and then splicing them into a Byte[] message, you need to rewrite UnpackResponseContent(Byte, Byte) method to return the correct result. | |
ReadFromCoreServerAsync(Byte) |
将Modbus报文数据发送到当前的通道中,并从通道中接收Modbus的报文,通道将根据当前连接自动获取,本方法是线程安全的。 (重写 BinaryCommunicationReadFromCoreServerAsync(Byte).)Send Modbus message data to the current channel, and receive Modbus messages from the channel. The channel will automatically obtain it according to the current connection. This method is thread-safe. | |
ReadFromCoreServerAsync(Byte, Boolean, Boolean) |
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。 (继承自 BinaryCommunication。)Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object | |
ReadFromCoreServerAsync(CommunicationPipe, Byte, Boolean, Boolean) |
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。) | |
ReadInt16(String) |
读取16位的有符号的整型数据 (继承自 DeviceCommunication。)Read 16-bit signed integer data | |
ReadInt16(String, UInt16) |
读取16位的有符号整型数组 (继承自 DeviceCommunication。)Read 16-bit signed integer array | |
ReadInt16Async(String) |
异步读取16位的有符号的整型数据 (继承自 DeviceCommunication。)Asynchronously read 16-bit signed integer data | |
ReadInt16Async(String, UInt16) |
异步读取16位的有符号整型数组 (继承自 DeviceCommunication。)Asynchronously read 16-bit signed integer array | |
ReadInt32(String) |
读取32位的有符号整型 (继承自 DeviceCommunication。)Read 32-bit signed integer | |
ReadInt32(String, UInt16) |
读取32位有符号整型数组 (重写 DeviceCommunicationReadInt32(String, UInt16).)Read 32-bit signed integer array | |
ReadInt32Async(String) |
异步读取32位的有符号整型 (继承自 DeviceCommunication。)Asynchronously read 32-bit signed integer | |
ReadInt32Async(String, UInt16) |
异步读取32位有符号整型数组 (重写 DeviceCommunicationReadInt32Async(String, UInt16).)Asynchronously read 32-bit signed integer array | |
ReadInt64(String) |
读取64位的有符号整型 (继承自 DeviceCommunication。)Read 64-bit signed integer | |
ReadInt64(String, UInt16) |
读取64位的有符号整型数组 (重写 DeviceCommunicationReadInt64(String, UInt16).)Read 64-bit signed integer array | |
ReadInt64Async(String) |
异步读取64位的有符号整型 (继承自 DeviceCommunication。)Asynchronously read 64-bit signed integer | |
ReadInt64Async(String, UInt16) |
异步读取64位的有符号整型数组 (重写 DeviceCommunicationReadInt64Async(String, UInt16).)Asynchronously read 64-bit signed integer array | |
ReadString(String, UInt16) |
读取字符串数据,默认为最常见的ASCII编码 (继承自 DeviceCommunication。)Read string data, default is the most common ASCII encoding | |
ReadString(String, UInt16, Encoding) |
使用指定的编码,读取字符串数据 (继承自 DeviceCommunication。)Reads string data using the specified encoding | |
ReadStringAsync(String, UInt16) |
异步读取字符串数据,默认为最常见的ASCII编码 (继承自 DeviceCommunication。)Asynchronously read string data, default is the most common ASCII encoding | |
ReadStringAsync(String, UInt16, Encoding) |
异步使用指定的编码,读取字符串数据 (继承自 DeviceCommunication。)Asynchronously reads string data using the specified encoding | |
ReadStructT |
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。) | |
ReadStructAsyncT |
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。) | |
ReadUInt16(String) |
读取16位的无符号整型 (继承自 DeviceCommunication。)Read 16-bit unsigned integer | |
ReadUInt16(String, UInt16) |
读取16位的无符号整型数组 (继承自 DeviceCommunication。)Read 16-bit unsigned integer array | |
ReadUInt16Async(String) |
异步读取16位的无符号整型 (继承自 DeviceCommunication。)Asynchronously read 16-bit unsigned integer | |
ReadUInt16Async(String, UInt16) |
异步读取16位的无符号整型数组 (继承自 DeviceCommunication。)Asynchronously read 16-bit unsigned integer array | |
ReadUInt32(String) |
读取32位的无符号整型 (继承自 DeviceCommunication。)Read 32-bit unsigned integer | |
ReadUInt32(String, UInt16) |
读取32位的无符号整型数组 (重写 DeviceCommunicationReadUInt32(String, UInt16).)Read 32-bit unsigned integer array | |
ReadUInt32Async(String) |
异步读取32位的无符号整型 (继承自 DeviceCommunication。)Asynchronously read 32-bit unsigned integer | |
ReadUInt32Async(String, UInt16) |
异步读取32位的无符号整型数组 (重写 DeviceCommunicationReadUInt32Async(String, UInt16).)Asynchronously read 32-bit unsigned integer array | |
ReadUInt64(String) |
读取64位的无符号整型 (继承自 DeviceCommunication。)Read 64-bit unsigned integer | |
ReadUInt64(String, UInt16) |
读取64位的无符号整型的数组 (重写 DeviceCommunicationReadUInt64(String, UInt16).)Read 64-bit unsigned integer array | |
ReadUInt64Async(String) |
异步读取64位的无符号整型 (继承自 DeviceCommunication。)Asynchronously read 64-bit unsigned integer | |
ReadUInt64Async(String, UInt16) |
异步读取64位的无符号整型的数组 (重写 DeviceCommunicationReadUInt64Async(String, UInt16).)Asynchronously read 64-bit unsigned integer array | |
ReadWrite |
使用0x17功能码来实现同时写入并读取数据的操作,使用一条报文来实现,需要指定读取的地址,长度,写入的地址,写入的数据信息,返回读取的结果数据。 Use 0x17 function code to write and read data at the same time, and use a message to implement it, you need to specify the read address, length, written address, written data information, and return the read result data. | |
RegisteredAddressMapping |
注册一个新的地址映射关系,注册地址映射关系后,就可以使用新的地址来读写Modbus数据了,通常用于其他的支持Modbus协议的PLC。 After registering a new address mapping, you can use the new address to read and write Modbus data, which is usually used for other PLCs that support the Modbus protocol. | |
SerialPortInni(ActionSerialPort) |
根据自定义初始化方法进行初始化串口信息 (继承自 DeviceSerialPort。)Initialize the serial port information according to the custom initialization method | |
SerialPortInni(String) |
初始化串口信息,9600波特率,8位数据位,1位停止位,无奇偶校验 (继承自 DeviceSerialPort。)Initial serial port information, 9600 baud rate, 8 data bits, 1 stop bit, no parity | |
SerialPortInni(String, Int32) |
初始化串口信息,波特率,8位数据位,1位停止位,无奇偶校验 (继承自 DeviceSerialPort。)Initializes serial port information, baud rate, 8-bit data bit, 1-bit stop bit, no parity | |
SerialPortInni(String, Int32, Int32, StopBits, Parity) |
初始化串口信息,波特率,数据位,停止位,奇偶校验需要全部自己来指定 (继承自 DeviceSerialPort。)Start serial port information, baud rate, data bit, stop bit, parity all need to be specified | |
SetDtuPipe |
将当前的通信对象设置DTU模式,允许传入现成的管道,并返回初始化结果,如果该设备重写了握手报文,就是返回握手结果 (继承自 BinaryCommunication。)Set the current communication object to DTU mode, allow the existing pipe to be passed in, and return the initialization result, if the device rewrites the handshake packet, the handshake result is returned | |
SetDtuPipeAsync |
将当前的通信对象设置DTU模式,允许传入现成的管道,并返回初始化结果,如果该设备重写了握手报文,就是返回握手结果 (继承自 BinaryCommunication。)Set the current communication object to DTU mode, allow the existing pipe to be passed in, and return the initialization result, if the device rewrites the handshake packet, the handshake result is returned | |
ToString | Returns a string that represents the current object. (重写 DeviceSerialPortToString.) | |
TranslateToModbusAddress |
将当前的地址信息转换成Modbus格式的地址,如果转换失败,返回失败的消息。默认不进行任何的转换。 Convert the current address information into a Modbus format address. If the conversion fails, a failure message will be returned. No conversion is performed by default. | |
UnpackResponseContent |
根据对方返回的报文命令,对命令进行基本的拆包,例如各种Modbus协议拆包为统一的核心报文,还支持对报文的验证 (重写 BinaryCommunicationUnpackResponseContent(Byte, Byte).)According to the message command returned by the other party, the command is basically unpacked, for example, various Modbus protocols are unpacked into a unified core message, and the verification of the message is also supported | |
Wait(String, Boolean, Int32, Int32) |
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Boolean value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, Int16, Int32, Int32) |
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, Int32, Int32, Int32) |
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, Int64, Int32, Int32) |
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, UInt16, Int32, Int32) |
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, UInt32, Int32, Int32) |
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Wait(String, UInt64, Int32, Int32) |
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, Boolean, Int32, Int32) |
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Boolean value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, Int16, Int32, Int32) |
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, Int32, Int32, Int32) |
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, Int64, Int32, Int32) |
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the Int64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, UInt16, Int32, Int32) |
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt16 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, UInt32, Int32, Int32) |
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt32 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
WaitAsync(String, UInt64, Int32, Int32) |
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。 (继承自 DeviceCommunication。)Waiting for the UInt64 value of the specified address to be the specified value, you can specify the frequency of refreshing the data, and the timeout time to wait. If the timeout time is -1, it is an indefinite wait. | |
Write(String, Double) |
写入double数据,返回是否成功 (继承自 DeviceCommunication。)Write double data, return whether the write was successful | |
Write(String, Int16) |
写入short数组,返回是否成功 (继承自 DeviceCommunication。)Write short array, return whether the write was successful | |
Write(String, Int32) |
写入int数据,返回是否成功 (继承自 DeviceCommunication。)Write int data, return whether the write was successful | |
Write(String, Int64) |
写入long数据,返回是否成功 (继承自 DeviceCommunication。)Write long data, return whether the write was successful | |
Write(String, Single) |
写入float数据,返回是否成功 (继承自 DeviceCommunication。)Write float data, return whether the write was successful | |
Write(String, String) |
写入字符串信息,编码为ASCII (继承自 DeviceCommunication。)Write string information, encoded as ASCII | |
Write(String, UInt16) |
写入ushort数组,返回是否成功 (继承自 DeviceCommunication。)Write ushort array, return whether the write was successful | |
Write(String, UInt32) |
写入uint数据,返回是否成功 (继承自 DeviceCommunication。)Write uint data, return whether the write was successful | |
Write(String, UInt64) |
写入ulong数据,返回是否成功 (继承自 DeviceCommunication。)Write ulong data, return whether the write was successful | |
Write(String, Boolean) |
向线圈中写入bool数值,返回是否写入成功,如果富文本地址不指定,默认使用的功能码是 0x05,
如果你的地址为字地址,例如100.2,那么将使用0x16的功能码,通过掩码的方式来修改寄存器的某一位,需要Modbus服务器支持,否则自动切换为读取字数据,修改位,在写入字的方式。 (重写 DeviceCommunicationWrite(String, Boolean).)Write bool value to the coil and return whether the writing is successful. If the rich text address is not specified, the default function code is 0x05. If your address is a word address, such as 100.2, then you will use the function code of 0x16 to modify a bit of the register through a mask. It needs Modbus server support, Otherwise, it automatically switches to read the word data, modifies the bits, and writes the word in the way. | |
Write(String, Boolean) |
向线圈中写入bool数组,返回是否写入成功,如果富文本地址不指定,默认使用的功能码是 0x0F (重写 DeviceCommunicationWrite(String, Boolean).)Write the bool array to the coil, and return whether the writing is successful. If the rich text address is not specified, the default function code is 0x0F. | |
Write(String, Byte) |
将数据写入到Modbus的寄存器上去,需要指定起始地址和数据内容,如果富文本地址不指定,默认使用的功能码是 0x10 (重写 DeviceCommunicationWrite(String, Byte).)To write data to Modbus registers, you need to specify the start address and data content. If the rich text address is not specified, the default function code is 0x10 | |
Write(String, Double) |
写入double数组,返回是否成功 (重写 DeviceCommunicationWrite(String, Double).)Write double array, return whether the write was successful | |
Write(String, Int16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 (重写 DeviceCommunicationWrite(String, Int16).)To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
Write(String, Int32) |
写入int[]数组,返回是否成功 (重写 DeviceCommunicationWrite(String, Int32).)Write int array, return whether the write was successful | |
Write(String, Int64) |
写入long数组,返回是否成功 (重写 DeviceCommunicationWrite(String, Int64).)Write long array, return whether the write was successful | |
Write(String, Single) |
写入float数组,返回是否成功 (重写 DeviceCommunicationWrite(String, Single).)Write float array, return whether the write was successful | |
Write(String, UInt16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 (重写 DeviceCommunicationWrite(String, UInt16).)To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
Write(String, UInt32) |
写入uint[]数组,返回是否成功 (重写 DeviceCommunicationWrite(String, UInt32).)Write uint array, return whether the write was successful | |
Write(String, UInt64) |
写入ulong数组,返回是否成功 (重写 DeviceCommunicationWrite(String, UInt64).)Write ulong array, return whether the write was successful | |
Write(String, String, Int32) |
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII (继承自 DeviceCommunication。)Write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, it is filled with 0 and the encoding is ASCII. | |
Write(String, String, Encoding) |
写入字符串信息,需要指定的编码信息 (继承自 DeviceCommunication。)Write string information, need to specify the encoding information | |
Write(String, String, Int32, Encoding) |
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息 (继承自 DeviceCommunication。)Write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, then the operation is complemented with 0 , you should specified the encoding information | |
WriteT(T) |
写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明 (继承自 DeviceCommunication。)Write data that supports the Hsl attribute, and return whether the write was successful. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details. | |
WriteAsync(String, Boolean) |
异步批量写入Boolean数组数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously batch write Boolean array data, return success | |
WriteAsync(String, Byte) |
异步写入原始的byte数组数据到指定的地址,返回是否写入成功 (继承自 DeviceCommunication。)Asynchronously writes the original byte array data to the specified address, and returns whether the write was successful | |
WriteAsync(String, Double) |
异步写入double数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write double data, return whether the write was successful | |
WriteAsync(String, Int16) |
异步写入short数组,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write short array, return whether the write was successful | |
WriteAsync(String, Int32) |
异步写入int数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write int data, return whether the write was successful | |
WriteAsync(String, Int64) |
异步写入long数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write long data, return whether the write was successful | |
WriteAsync(String, Single) |
异步写入float数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write float data, return whether the write was successful | |
WriteAsync(String, String) |
异步写入字符串信息,编码为ASCII (继承自 DeviceCommunication。)Asynchronously write string information, encoded as ASCII | |
WriteAsync(String, UInt16) |
异步写入ushort数组,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write ushort array, return whether the write was successful | |
WriteAsync(String, UInt32) |
异步写入uint数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write uint data, return whether the write was successful | |
WriteAsync(String, UInt64) |
异步写入ulong数据,返回是否成功 (继承自 DeviceCommunication。)Asynchronously write ulong data, return whether the write was successful | |
WriteAsync(String, Boolean) |
向线圈中写入bool数值,返回是否写入成功,如果富文本地址不指定,默认使用的功能码是 0x05,
如果你的地址为字地址,例如100.2,那么将使用0x16的功能码,通过掩码的方式来修改寄存器的某一位,需要Modbus服务器支持,否则自动切换为读取字数据,修改位,在写入字的方式。 (重写 DeviceCommunicationWriteAsync(String, Boolean).)Write bool value to the coil and return whether the writing is successful. If the rich text address is not specified, the default function code is 0x05. If your address is a word address, such as 100.2, then you will use the function code of 0x16 to modify a bit of the register through a mask. It needs Modbus server support, Otherwise, it automatically switches to read the word data, modifies the bits, and writes the word in the way. | |
WriteAsync(String, Double) |
异步写入double数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, Double).)Asynchronously write double array, return whether the write was successful | |
WriteAsync(String, Int16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 (重写 DeviceCommunicationWriteAsync(String, Int16).)To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
WriteAsync(String, Int32) |
异步写入int[]数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, Int32).)Asynchronously write int array, return whether the write was successful | |
WriteAsync(String, Int64) |
异步写入long数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, Int64).)Asynchronously write long array, return whether the write was successful | |
WriteAsync(String, Single) |
异步写入float数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, Single).)Asynchronously write float array, return whether the write was successful | |
WriteAsync(String, UInt16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 (重写 DeviceCommunicationWriteAsync(String, UInt16).)To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
WriteAsync(String, UInt32) |
异步写入uint[]数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, UInt32).)Asynchronously write uint array, return whether the write was successful | |
WriteAsync(String, UInt64) |
异步写入ulong数组,返回是否成功 (重写 DeviceCommunicationWriteAsync(String, UInt64).)Asynchronously write ulong array, return whether the write was successful | |
WriteAsync(String, String, Int32) |
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII (继承自 DeviceCommunication。)Asynchronously write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, it is filled with 0 and the encoding is ASCII. | |
WriteAsync(String, String, Encoding) |
异步写入字符串信息,需要指定的编码信息 (继承自 DeviceCommunication。)Asynchronously write string information, need to specify the encoding information | |
WriteAsync(String, String, Int32, Encoding) |
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息 (继承自 DeviceCommunication。)Asynchronously write string information of the specified length. If it exceeds the value, the string is truncated. If the length is not enough, then the operation is complemented with 0 , you should specified the encoding information | |
WriteAsyncT(T) |
异步写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明 (继承自 DeviceCommunication。)Asynchronously write data that supports the Hsl attribute, and return whether the write was successful. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details. | |
WriteCustomerT |
写入自定义类型的数据,该类型必须继承自IDataTransfer接口 (继承自 DeviceCommunication。)Write data of a custom type, which must inherit from the IDataTransfer interface | |
WriteCustomerAsyncT |
写入自定义类型的数据,该类型必须继承自IDataTransfer接口 (继承自 DeviceCommunication。)Write data of a custom type, which must inherit from the IDataTransfer interface | |
WriteMask |
向设备写入掩码数据,使用0x16功能码,需要确认对方是否支持相关的操作,掩码数据的操作主要针对寄存器。 To write mask data to the server, using the 0x16 function code, you need to confirm whether the other party supports related operations. The operation of mask data is mainly directed to the register. | |
WriteMaskAsync |
向设备写入掩码数据,使用0x16功能码,需要确认对方是否支持相关的操作,掩码数据的操作主要针对寄存器。 To write mask data to the server, using the 0x16 function code, you need to confirm whether the other party supports related operations. The operation of mask data is mainly directed to the register. | |
WriteOneRegister(String, Int16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
WriteOneRegister(String, UInt16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
WriteOneRegisterAsync(String, Int16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. | |
WriteOneRegisterAsync(String, UInt16) |
将数据写入到Modbus的单个寄存器上去,需要指定起始地址和数据值,如果富文本地址不指定,默认使用的功能码是 0x06 To write data to a single register of Modbus, you need to specify the start address and data value. If the rich text address is not specified, the default function code is 0x06. |
名称 | 说明 | |
---|---|---|
LogMsgFormatBinary |
设置日志记录报文是否二进制,如果为False,那就使用ASCII码 (继承自 BinaryCommunication。)Set whether the log message is binary, if it is False, then use ASCII code |
名称 | 说明 | |
---|---|---|
ToJsonString |
获取当前对象的JSON格式表示的字符串。 (由 HslExtension 定义。)Gets the string represented by the JSON format of the current object. |
// modbus-tcp和udp的例子是一样的,只是实例化方面不一样,对于rtu及ascii则没有消息号这一个功能 ModbusTcpNet modbusTcp = new ModbusTcpNet( "127.0.0.1", 502 ); // 如果是modbus-udp ModbusUdpNet modbusUdp = new ModbusUdpNet( "127.0.0.1", 502 ); // 重置最大值,这样的话,消息号就在0-1000 modbusTcp.MessageId.ResetMaxValue( 1000 ); // 如果我们需要一直保持消息号在0,不需要增长的计数 modbusTcp.MessageId.IncreaseTick = 0; // 同理,我们需要消息号保持在1000 modbusTcp.MessageId.ResetCurrentValue( 1000 ); modbusTcp.MessageId.IncreaseTick = 0; // 如果消息号需要为1,3,5,7,9,......999 modbusTcp.MessageId.ResetStartValue( 1 ); modbusTcp.MessageId.ResetMaxValue( 999 ); modbusTcp.MessageId.IncreaseTick = 2; // 更加详细的用法需要参考SoftIncrementCount类
重要事项 |
---|
地址共可以携带4个信息,常见的使用表示方式"s=2;x=3;100",对应的modbus报文是 02 03 00 64 00 01 的前四个字节,站号,功能码,起始地址,下面举例 |
// 本类支持的读写操作提供了非常多的重载方法,总有你想要的方法 private ModbusTcpNet modbus = new ModbusTcpNet( "192.168.0.1" ); // 实例化 // 如果你的是rtu private ModbusRtu modbusRtu = new ModbusRtu( 1 );// 实例化 // 方法的调用都是一模一样的。 private void CoilExample() { // 读取线圈示例,使用01功能码 bool coil100 = modbus.ReadCoil( "100" ).Content; // 判断是否读取成功 OperateResult<bool> result_coil100 = modbus.ReadCoil( "100" ); if(result_coil100.IsSuccess) { // success bool value = result_coil100.Content; } else { // failed } // 假设读取站号10的线圈100的值 bool coil_station_ten_100 = modbus.ReadCoil( "s=10;100" ).Content; // ============================================================================================= // 写入也是同理,线圈100写通,使用的是05功能码 modbus.Write( "100", true ); // 站号10的线圈写通 modbus.Write( "s=10;100", true ); // 想要判断是否写入成功 if(modbus.Write( "s=10;100", true ).IsSuccess) { // success } else { // failed } // =========================================================================================== // 批量读写也是类似,批量的读取,使用01功能码 bool[] coil10_19 = modbus.ReadCoil( "100", 10 ).Content; // 写入也是同理,使用的0F功能码 modbus.Write( "100", new bool[] { true, false, true, false, false, false, true, false, false, false } ); // 离散输入的数据读取同理 ModbusTcpNet plc = modbus; OperateResult write = plc.Write( "100", "ABCDEF" ); if (write.IsSuccess) Console.WriteLine( "Write Address[100] Success!" ); else Console.WriteLine( "Write Address[100] failed: " + write.Message ); OperateResult<string> read = plc.ReadString( "100", 3 ); if (read.IsSuccess) Console.WriteLine( "Read Address[100] Success: " + read.Content ); else Console.WriteLine( "Read Address[100] Failed: " + read.Message ); } private void RegisterExample( ) { // 读取寄存器100的值,使用的03功能码 short register100 = modbus.ReadInt16( "100" ).Content; // 批量读取寄存器100-109的值 short[] register100_109 = modbus.ReadInt16( "100", 10 ).Content; // 写入寄存器100的值,注意,一定要强制转换short类型,使用的是06功能码 modbus.Write( "100", (short)123 ); // 批量写,使用的是10功能码 modbus.Write( "100", new short[] { 123, -123, 4244 } ); // ============================================================================================== // 以下是一些常规的操作,不再对是否成功的结果进行判断 // 读取操作,除了第一个,其他都是03功能码 bool coil100 = modbus.ReadCoil( "100" ).Content; // 读取线圈100的通断,01功能码 short short100 = modbus.ReadInt16( "100" ).Content; // 读取寄存器100的short值 ushort ushort100 = modbus.ReadUInt16( "100" ).Content; // 读取寄存器100的ushort值 int int100 = modbus.ReadInt32( "100" ).Content; // 读取寄存器100-101的int值 uint uint100 = modbus.ReadUInt32( "100" ).Content; // 读取寄存器100-101的uint值 float float100 = modbus.ReadFloat( "100" ).Content; // 读取寄存器100-101的float值 long long100 = modbus.ReadInt64( "100" ).Content; // 读取寄存器100-103的long值 ulong ulong100 = modbus.ReadUInt64( "100" ).Content; // 读取寄存器100-103的ulong值 double double100 = modbus.ReadDouble( "100" ).Content; // 读取寄存器100-103的double值 string str100 = modbus.ReadString( "100", 5 ).Content; // 读取100到104共10个字符的字符串 // 写入操作,第一个05功能码,第二第三是06功能码,后面是10功能码 modbus.Write( "100", true ); // 写入线圈100为通 modbus.Write( "100", (short)12345 ); // 写入寄存器100为12345 modbus.Write( "100", (ushort)45678 ); // 写入寄存器100为45678 modbus.Write( "100", 123456789 ); // 写入寄存器100-101为123456789 modbus.Write( "100", (uint)123456778 ); // 写入寄存器100-101为123456778 modbus.Write( "100", 123.456 ); // 写入寄存器100-101为123.456 modbus.Write( "100", 12312312312414L ); //写入寄存器100-103为一个大数据 modbus.Write( "100", 12634534534543656UL ); // 写入寄存器100-103为一个大数据 modbus.Write( "100", 123.456d ); // 写入寄存器100-103为一个双精度的数据 modbus.Write( "100", "K123456789" ); modbus.Write( "100", "测试数据", Encoding.Unicode ); // 写入unicode编码的中文 // =============================================================================================== // 读取输入寄存器,使用的04功能码 short input_short100 = modbus.ReadInt16( "x=4;100" ).Content; // 读取寄存器100的short值 ushort input_ushort100 = modbus.ReadUInt16( "x=4;100" ).Content; // 读取寄存器100的ushort值 int input_int100 = modbus.ReadInt32( "x=4;100" ).Content; // 读取寄存器100-101的int值 uint input_uint100 = modbus.ReadUInt32( "x=4;100" ).Content; // 读取寄存器100-101的uint值 float input_float100 = modbus.ReadFloat( "x=4;100" ).Content; // 读取寄存器100-101的float值 long input_long100 = modbus.ReadInt64( "x=4;100" ).Content; // 读取寄存器100-103的long值 ulong input_ulong100 = modbus.ReadUInt64( "x=4;100" ).Content; // 读取寄存器100-103的ulong值 double input_double100 = modbus.ReadDouble( "x=4;100" ).Content; // 读取寄存器100-103的double值 string input_str100 = modbus.ReadString( "x=4;100", 5 ).Content; // 读取100到104共10个字符的字符串 }