点击或拖拽改变大小

OmronConnectedCipNet 类

基于连接的对象访问的CIP协议的实现,用于对Omron PLC进行标签的数据读写,对数组,多维数组进行读写操作,支持的数据类型请参照API文档手册。
The implementation of the CIP protocol based on connected object access is used to read and write tag data to Omron PLC, and read and write arrays and multidimensional arrays. For the supported data types, please refer to the API documentation manual.
继承层次

命名空间:  HslCommunication.Profinet.Omron
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:12.0.0.0 (12.0.0.0)
语法
public class OmronConnectedCipNet : NetworkConnectedCip, 
	IReadWriteCip, IReadWriteNet

OmronConnectedCipNet 类型公开以下成员。

构造函数
  名称说明
公共方法OmronConnectedCipNet
实例化一个默认的对象
公共方法OmronConnectedCipNet(String, Int32)
根据指定的IP及端口来实例化这个连接对象
Top
属性
  名称说明
公共属性AlienSession
当前的异形连接对象,如果设置了异形连接的话,仅用于异形模式的情况使用
The current alien connection object, if alien connection is set, is only used in the case of alien mode
(继承自 DeviceTcpNet。)
公共属性代码示例ByteTransform
当前的数据变换机制,当你需要从字节数据转换类型数据的时候需要。
The current data transformation mechanism is required when you need to convert type data from byte data.
(继承自 DeviceCommunication。)
公共属性CommunicationPipe
获取或设置当前的管道信息,管道类型为CommunicationPipe的继承类,内置了PipeTcpNet管道,PipeUdpNet管道,PipeSerialPort管道等
(继承自 BinaryCommunication。)
公共属性ConnectionId
当前连接的唯一ID号,默认为长度20的guid码加随机数组成,方便列表管理,也可以自己指定
The unique ID number of the current connection. The default is a 20-digit guid code plus a random number.
(继承自 BinaryCommunication。)
公共属性ConnectionTimeoutMultiplier
获取或设置不通信时超时的时间,默认02,为 32 秒,设置06 时为8分多,计算方法为 (2的x次方乘以8) 的秒数
Get or set the timeout time when there is no communication. The default is 02, which is 32 seconds, and when 06 is set, it is more than 8 minutes. The calculation method is (2 times the power of x times 8) seconds.
公共属性代码示例ConnectTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 DeviceTcpNet。)
公共属性代码示例IpAddress
获取或是设置远程服务器的IP地址,如果是本机测试,那么需要设置为127.0.0.1
Get or set the IP address of the remote server. If it is a local test, then it needs to be set to 127.0.0.1
(继承自 DeviceTcpNet。)
公共属性LocalBinding
获取或设置绑定的本地的IP地址和端口号信息,如果端口设置为0,代表任何可用的端口
Get or set the bound local IP address and port number information, if the port is set to 0, it means any available port
(继承自 DeviceTcpNet。)
公共属性代码示例LogNet
组件的日志工具,支持日志记录,只要实例化后,当前网络的基本信息,就以DEBUG等级进行输出
The component's logging tool supports logging. As long as the instantiation of the basic network information, the output will be output at DEBUG
(继承自 BinaryCommunication。)
公共属性代码示例Port
获取或设置服务器的端口号,具体的值需要取决于对方的配置
Gets or sets the port number of the server. The specific value depends on the configuration of the other party.
(继承自 DeviceTcpNet。)
公共属性ProductName
当前产品的型号信息
Model information of the current product
公共属性代码示例ReceiveTimeOut
获取或设置接收服务器反馈的时间,如果为负数,则不接收反馈
Gets or sets the time to receive server feedback, and if it is a negative number, does not receive feedback
(继承自 BinaryCommunication。)
公共属性SendBeforeHex
获取或设置在发送通信报文前追加发送的字节信息,HEX格式,通常用于lora组网时,需要携带 00 00 00 02 四个字节的站地址功能。
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.
(继承自 BinaryCommunication。)
公共属性SessionHandle
The current session handle, which is determined by the PLC when communicating with the PLC handshake
(继承自 NetworkConnectedCip。)
公共属性SleepTime
获取或设置在正式接收对方返回数据前的时候,需要休息的时间,当设置为0的时候,不需要休息。
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.
(继承自 BinaryCommunication。)
公共属性SocketKeepAliveTime
获取或设置客户端的Socket的心跳时间信息,这个是Socket底层自动实现的心跳包,不基于协议层实现。默认小于0,不开启心跳检测,如果需要开启,设置 60_000 比较合适,单位毫秒
Get or set the heartbeat time information of the Socket of the client. This is the heartbeat packet automatically implemented by the bottom layer of the Socket, not based on the protocol layer. The default value is less than 0, and heartbeat detection is not enabled. If you need to enable it, it is more appropriate to set 60_000, in milliseconds.
(继承自 DeviceTcpNet。)
受保护的属性WordLength
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效
The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid
(继承自 DeviceCommunication。)
Top
方法
  名称说明
公共方法代码示例ConnectClose
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectCloseAsync
手动断开与远程服务器的连接,如果当前是长连接模式,那么就会切换到短连接模式
Manually disconnect from the remote server, if it is currently in long connection mode, it will switch to short connection mode
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectServer
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectServer(AlienSession)
使用指定的套接字创建异形客户端,在异形客户端的模式下,网络通道需要被动创建。
Use the specified socket to create the alien client. In the alien client mode, the network channel needs to be created passively.
(继承自 DeviceTcpNet。)
公共方法代码示例ConnectServerAsync
尝试连接远程的服务器,如果连接成功,就切换短连接模式到长连接模式,后面的每次请求都共享一个通道,使得通讯速度更快速
Try to connect to a remote server. If the connection is successful, switch the short connection mode to the long connection mode. Each subsequent request will share a channel, making the communication speed faster.
(继承自 DeviceTcpNet。)
受保护的方法DecideWhetherQAMessage
决定当前的消息是否是用于问答机制返回的消息,默认直接返回 true, 实际的情况需要根据协议进行重写方法
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
(继承自 BinaryCommunication。)
公共方法Equals (继承自 Object。)
受保护的方法ExtraAfterReadFromCoreServer
和服务器交互完成的时候调用的方法,可以根据读写结果进行一些额外的操作,具体的操作需要根据实际的需求来重写实现
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.
(继承自 BinaryCommunication。)
受保护的方法代码示例ExtraOnDisconnect
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
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.
(继承自 NetworkConnectedCip。)
受保护的方法代码示例ExtraOnDisconnectAsync
根据实际的协议选择是否重写本方法,有些协议在断开连接之前,需要发送一些报文来关闭当前的网络通道
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.
(继承自 NetworkConnectedCip。)
受保护的方法Finalize (继承自 Object。)
公共方法GetHashCode (继承自 Object。)
受保护的方法GetLargeForwardClose
获取数据通信的后置关闭命令,不同的PLC的信息不一样。
(继承自 NetworkConnectedCip。)
受保护的方法GetLargeForwardOpen
获取数据通信的前置打开命令,不同的PLC的信息不一样。
(重写 NetworkConnectedCipGetLargeForwardOpen(UInt16).)
受保护的方法GetLogTextFromBinary
获取当前的报文进行日志记录的时候,是否使用二进制的格式记录,默认返回 LogMsgFormatBinary,重写可以根据session对象分别返回不同记录模式
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
(继承自 BinaryCommunication。)
受保护的方法GetMaxTransferBytes
获取传递的最大长度的字节信息
受保护的方法GetNewNetMessage
获取一个新的消息对象的方法,需要在继承类里面进行重写
The method to get a new message object needs to be overridden in the inheritance class
(继承自 NetworkConnectedCip。)
公共方法GetType (继承自 Object。)
受保护的方法GetWordLength
一个字单位的数据表示的地址长度,西门子为2,三菱,欧姆龙,modbusTcp就为1,AB PLC无效
The address length represented by one word of data, Siemens is 2, Mitsubishi, Omron, modbusTcp is 1, AB PLC is invalid
(继承自 DeviceCommunication。)
受保护的方法代码示例InitializationOnConnect
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
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.
(重写 NetworkConnectedCipInitializationOnConnect.)
受保护的方法代码示例InitializationOnConnectAsync
根据实际的协议选择是否重写本方法,有些协议在创建连接之后,需要进行一些初始化的信号握手,才能最终建立网络通道。
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.
(重写 NetworkConnectedCipInitializationOnConnectAsync.)
公共方法IpAddressPing
对当前设备的IP地址进行PING的操作,返回PING的结果,正常来说,返回Success
PING the IP address of the current device and return the PING result. Normally, it returns Success
(继承自 DeviceTcpNet。)
受保护的方法LogRevcMessage(Byte)
使用日志记录一个接收的报文信息
` Logs are used to record information about a received packet
(继承自 BinaryCommunication。)
受保护的方法LogRevcMessage(Byte, PipeSession)
使用日志记录一个接收的报文信息
` Logs are used to record information about a received packet
(继承自 BinaryCommunication。)
受保护的方法LogSendMessage(Byte)
使用日志记录一个发送的报文信息
Logs are used to record information about a send packet
(继承自 BinaryCommunication。)
受保护的方法LogSendMessage(Byte, PipeSession)
使用日志记录一个发送的报文信息
Logs are used to record information about a send packet
(继承自 BinaryCommunication。)
受保护的方法MemberwiseClone (继承自 Object。)
受保护的方法PackCommandService
将多个的CIP命令打包成一个服务的命令
(继承自 NetworkConnectedCip。)
公共方法PackCommandWithHeader
对当前的命令进行打包处理,通常是携带命令头内容,标记当前的命令的长度信息,需要进行重写,否则默认不打包
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
(继承自 NetworkConnectedCip。)
公共方法Read(String, UInt16)
批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组
Batch read byte array information, need to specify the address and length, return the original byte array
(重写 DeviceCommunicationRead(String, UInt16).)
公共方法Read(String, UInt16)
[商业授权] 批量读取多地址的数据信息,例如我可以读取两个标签的数据 "A","B[0]", 长度为 [1, 5],返回的是一整个的字节数组,需要自行解析
[Authorization] Read the data information of multiple addresses in batches. For example, I can read the data "A", "B[0]" of two tags, the length is [1, 5], and the return is an entire byte array, and I need to do it myself Parsing
公共方法代码示例ReadT
读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法ReadAsync(String, UInt16)
异步批量读取字节数组信息,需要指定地址和长度,返回原始的字节数组
Asynchronous batch read byte array information, need to specify the address and length, return the original byte array
(重写 DeviceCommunicationReadAsync(String, UInt16).)
公共方法ReadAsync(String, UInt16)
[商业授权] 批量读取多地址的数据信息,例如我可以读取两个标签的数据 "A","B[0]", 长度为 [1, 5],返回的是一整个的字节数组,需要自行解析
[Authorization] Read the data information of multiple addresses in batches. For example, I can read the data "A", "B[0]" of two tags, the length is [1, 5], and the return is an entire byte array, and I need to do it myself Parsing
公共方法代码示例ReadAsyncT
异步读取支持Hsl特性的数据内容,该特性为HslDeviceAddressAttribute,详细参考api文档说明
Asynchronously read the data content of the Hsl attribute. The attribute is HslDeviceAddressAttribute, please refer to the api documentation for details.
(继承自 DeviceCommunication。)
公共方法ReadBool(String)
读取单个的Boolean数据信息
Read a single Boolean data message
(继承自 DeviceCommunication。)
公共方法ReadBool(String, UInt16)
读取bool数据信息,如果读取的是单bool变量,就直接写变量名,如果是 bool 数组,就
Read a single bool data information, if it is a single bool variable, write the variable name directly, if it is a value of a bool array composed of int, it is always accessed with "i=" at the beginning, for example, "i=A[0]"
(重写 DeviceCommunicationReadBool(String, UInt16).)
公共方法ReadBoolAsync(String)
异步读取单个的Boolean数据信息
Asynchronously read a single Boolean data message
(继承自 DeviceCommunication。)
公共方法ReadBoolAsync(String, UInt16)
读取bool数据信息,如果读取的是单bool变量,就直接写变量名,如果是 bool 数组,就
Read a single bool data information, if it is a single bool variable, write the variable name directly, if it is a value of a bool array composed of int, it is always accessed with "i=" at the beginning, for example, "i=A[0]"
(重写 DeviceCommunicationReadBoolAsync(String, UInt16).)
公共方法ReadByte
读取PLC的byte类型的数据
Read the byte type of PLC data
公共方法ReadByteAsync
读取PLC的byte类型的数据
Read the byte type of PLC data
公共方法ReadCipFromServer
使用CIP报文和服务器进行核心的数据交换
公共方法ReadCipFromServerAsync
使用CIP报文和服务器进行核心的数据交换
公共方法代码示例ReadCustomerT(String)
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。
To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerT(String, T)
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。
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.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerAsyncT(String)
读取自定义的数据类型,需要继承自IDataTransfer接口,返回一个新的类型的实例对象。
To read a custom data type, you need to inherit from the IDataTransfer interface and return an instance object of a new type.
(继承自 DeviceCommunication。)
公共方法代码示例ReadCustomerAsyncT(String, T)
读取自定义的数据类型,需要继承自IDataTransfer接口,传入一个实例,对这个实例进行赋值,并返回该实例的对象。
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.
(继承自 DeviceCommunication。)
公共方法ReadDate
读取指定地址的日期数据,最小日期为 1970年1月1日,当PLC的变量类型为 "Date" 和 "TimeAndDate" 时,都可以用本方法读取。
Read the date data of the specified address. The minimum date is January 1, 1970. When the PLC variable type is "Date" and "TimeAndDate", this method can be used to read.
公共方法ReadDateAsync
读取指定地址的日期数据,最小日期为 1970年1月1日,当PLC的变量类型为 "Date" 和 "TimeAndDate" 时,都可以用本方法读取。
Read the date data of the specified address. The minimum date is January 1, 1970. When the PLC variable type is "Date" and "TimeAndDate", this method can be used to read.
公共方法代码示例ReadDouble(String)
读取双浮点的数据
Read double floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadDouble(String, UInt16)
读取双浮点数据的数组
Read double floating point data array
(重写 DeviceCommunicationReadDouble(String, UInt16).)
公共方法代码示例ReadDoubleAsync(String)
异步读取双浮点的数据
Asynchronously read double floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadDoubleAsync(String, UInt16)
异步读取双浮点数据的数组
Asynchronously read double floating point data array
(重写 DeviceCommunicationReadDoubleAsync(String, UInt16).)
公共方法代码示例ReadFloat(String)
读取单浮点数据
Read single floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadFloat(String, UInt16)
读取单浮点精度的数组
Read single floating point array
(重写 DeviceCommunicationReadFloat(String, UInt16).)
公共方法代码示例ReadFloatAsync(String)
异步读取单浮点数据
Asynchronously read single floating point data
(继承自 DeviceCommunication。)
公共方法代码示例ReadFloatAsync(String, UInt16)
异步读取单浮点精度的数组
Asynchronously read single floating point array
(重写 DeviceCommunicationReadFloatAsync(String, UInt16).)
公共方法代码示例ReadFromCoreServer(Byte)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServer(IEnumerableByte) (继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServer(Byte, Boolean, Boolean)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServer(CommunicationPipe, Byte, Boolean, Boolean)
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServerAsync(Byte)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServerAsync(IEnumerableByte) (继承自 BinaryCommunication。)
公共方法代码示例ReadFromCoreServerAsync(Byte, Boolean, Boolean)
将二进制的数据发送到管道中去,然后从管道里接收二进制的数据回来,并返回是否成功的结果对象。
Send binary data to the pipeline, and then receive binary data back from the pipeline, and return whether the success of the result object
(继承自 BinaryCommunication。)
公共方法ReadFromCoreServerAsync(CommunicationPipe, Byte, Boolean, Boolean)
使用指定的管道来进行数据通信,发送原始数据到管道,然后从管道接收相关的数据返回,本方法无锁
(继承自 BinaryCommunication。)
公共方法代码示例ReadInt16(String)
读取16位的有符号的整型数据
Read 16-bit signed integer data
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt16(String, UInt16)
读取16位的有符号整型数组
Read 16-bit signed integer array
(重写 DeviceCommunicationReadInt16(String, UInt16).)
公共方法代码示例ReadInt16Async(String)
异步读取16位的有符号的整型数据
Asynchronously read 16-bit signed integer data
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt16Async(String, UInt16)
异步读取16位的有符号整型数组
Asynchronously read 16-bit signed integer array
(重写 DeviceCommunicationReadInt16Async(String, UInt16).)
公共方法代码示例ReadInt32(String)
读取32位的有符号整型
Read 32-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32(String, UInt16)
读取32位有符号整型数组
Read 32-bit signed integer array
(重写 DeviceCommunicationReadInt32(String, UInt16).)
公共方法代码示例ReadInt32Async(String)
异步读取32位的有符号整型
Asynchronously read 32-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt32Async(String, UInt16)
异步读取32位有符号整型数组
Asynchronously read 32-bit signed integer array
(重写 DeviceCommunicationReadInt32Async(String, UInt16).)
公共方法代码示例ReadInt64(String)
读取64位的有符号整型
Read 64-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64(String, UInt16)
读取64位的有符号整型数组
Read 64-bit signed integer array
(重写 DeviceCommunicationReadInt64(String, UInt16).)
公共方法代码示例ReadInt64Async(String)
异步读取64位的有符号整型
Asynchronously read 64-bit signed integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadInt64Async(String, UInt16)
异步读取64位的有符号整型数组
Asynchronously read 64-bit signed integer array
(重写 DeviceCommunicationReadInt64Async(String, UInt16).)
公共方法ReadPlcType
从PLC里读取当前PLC的型号信息
Read the current PLC model information from the PLC
公共方法ReadString(String)
公共方法代码示例ReadString(String, UInt16)
读取字符串数据,默认为UTF-8编码
Read string data, default is UTF-8 encoding
(重写 DeviceCommunicationReadString(String, UInt16).)
公共方法代码示例ReadString(String, UInt16, Encoding)
使用指定的编码,读取字符串数据
Reads string data using the specified encoding
(重写 DeviceCommunicationReadString(String, UInt16, Encoding).)
公共方法ReadStringAsync(String)
公共方法代码示例ReadStringAsync(String, UInt16)
读取字符串数据,默认为UTF-8编码
Read string data, default is UTF-8 encoding
(重写 DeviceCommunicationReadStringAsync(String, UInt16).)
公共方法代码示例ReadStringAsync(String, UInt16, Encoding)
异步使用指定的编码,读取字符串数据
Asynchronously reads string data using the specified encoding
(重写 DeviceCommunicationReadStringAsync(String, UInt16, Encoding).)
公共方法代码示例ReadStructT(String)
[商业授权] 读取一个结构体的对象,需要事先根据实际的数据点位定义好结构体,然后使用本方法进行读取,当结构体定义不对时,本方法将会读取失败
[Authorization] To read a structure object, you need to define the structure in advance according to the actual data points, and then use this method to read. When the structure definition is incorrect, this method will fail to read
公共方法代码示例ReadStructT(String, UInt16)
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。)
公共方法代码示例ReadStructAsyncT(String)
[商业授权] 读取一个结构体的对象,需要事先根据实际的数据点位定义好结构体,然后使用本方法进行读取,当结构体定义不对时,本方法将会读取失败
[Authorization] To read a structure object, you need to define the structure in advance according to the actual data points, and then use this method to read. When the structure definition is incorrect, this method will fail to read
公共方法代码示例ReadStructAsyncT(String, UInt16)
读取结构体类型的数据,根据结构体自身的定义,读取原始字节数组,然后解析出实际的结构体数据,结构体需要实现HslStructAttribute特性
(继承自 DeviceCommunication。)
公共方法ReadTag
从PLC里读取一个指定标签名的原始数据信息及其数据类型信息
Read the original data information of a specified tag name and its data type information from the PLC
公共方法ReadTagAsync
从PLC里读取一个指定标签名的原始数据信息及其数据类型信息
Read the original data information of a specified tag name and its data type information from the PLC
公共方法ReadTime
读取指定地址的时间数据,最小时间为 0,如果获取秒,可以访问 TotalSeconds,当PLC的变量类型为 "Time" 和 "TimeOfDate" 时,都可以用本方法读取。
Read the time data of the specified address. The minimum time is 0. If you get seconds, you can access TotalSeconds. When the PLC variable type is "Time" and "TimeOfDate", you can use this Method to read.
公共方法ReadTimeAsync
读取指定地址的时间数据,最小时间为 0,如果获取秒,可以访问 TotalSeconds,当PLC的变量类型为 "Time" 和 "TimeOfDate" 时,都可以用本方法读取。
Read the time data of the specified address. The minimum time is 0. If you get seconds, you can access TotalSeconds. When the PLC variable type is "Time" and "TimeOfDate", you can use this Method to read.
公共方法代码示例ReadUInt16(String)
读取16位的无符号整型
Read 16-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt16(String, UInt16)
读取16位的无符号整型数组
Read 16-bit unsigned integer array
(重写 DeviceCommunicationReadUInt16(String, UInt16).)
公共方法代码示例ReadUInt16Async(String)
异步读取16位的无符号整型
Asynchronously read 16-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt16Async(String, UInt16)
异步读取16位的无符号整型数组
Asynchronously read 16-bit unsigned integer array
(重写 DeviceCommunicationReadUInt16Async(String, UInt16).)
公共方法代码示例ReadUInt32(String)
读取32位的无符号整型
Read 32-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32(String, UInt16)
读取32位的无符号整型数组
Read 32-bit unsigned integer array
(重写 DeviceCommunicationReadUInt32(String, UInt16).)
公共方法代码示例ReadUInt32Async(String)
异步读取32位的无符号整型
Asynchronously read 32-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt32Async(String, UInt16)
异步读取32位的无符号整型数组
Asynchronously read 32-bit unsigned integer array
(重写 DeviceCommunicationReadUInt32Async(String, UInt16).)
公共方法代码示例ReadUInt64(String)
读取64位的无符号整型
Read 64-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64(String, UInt16)
读取64位的无符号整型的数组
Read 64-bit unsigned integer array
(重写 DeviceCommunicationReadUInt64(String, UInt16).)
公共方法代码示例ReadUInt64Async(String)
异步读取64位的无符号整型
Asynchronously read 64-bit unsigned integer
(继承自 DeviceCommunication。)
公共方法代码示例ReadUInt64Async(String, UInt16)
异步读取64位的无符号整型的数组
Asynchronously read 64-bit unsigned integer array
(重写 DeviceCommunicationReadUInt64Async(String, UInt16).)
公共方法ToString (重写 DeviceTcpNetToString.)
公共方法UnpackResponseContent
根据对方返回的报文命令,对命令进行基本的拆包,例如各种Modbus协议拆包为统一的核心报文,还支持对报文的验证
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
(继承自 BinaryCommunication。)
公共方法Wait(String, Boolean, Int32, Int32)
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int16, Int32, Int32)
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int32, Int32, Int32)
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, Int64, Int32, Int32)
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt16, Int32, Int32)
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt32, Int32, Int32)
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法Wait(String, UInt64, Int32, Int32)
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Boolean, Int32, Int32)
等待指定地址的Boolean值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int16, Int32, Int32)
等待指定地址的Int16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int32, Int32, Int32)
等待指定地址的Int32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, Int64, Int32, Int32)
等待指定地址的Int64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt16, Int32, Int32)
等待指定地址的UInt16值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt32, Int32, Int32)
等待指定地址的UInt32值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法WaitAsync(String, UInt64, Int32, Int32)
等待指定地址的UInt64值为指定的值,可以指定刷新数据的频率,等待的超时时间,如果超时时间为-1的话,则是无期限等待。
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.
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Double)
写入double数据,返回是否成功
Write double data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int16)
写入short数据,返回是否成功
Write short data, returns whether success
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int32)
写入int数据,返回是否成功
Write int data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Int64)
写入long数据,返回是否成功
Write long data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, Single)
写入float数据,返回是否成功
Write float data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt16)
写入ushort数据,返回是否成功
Write ushort data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt32)
写入uint数据,返回是否成功
Write uint data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, UInt64)
写入ulong数据,返回是否成功
Write ulong data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法Write(String, Boolean)
写入单个的Boolean数据,返回是否成功
Write a single Boolean data, and return whether the write was successful
(重写 DeviceCommunicationWrite(String, Boolean).)
公共方法Write(String, Boolean)
批量写入Boolean数组数据,返回是否成功
Batch write Boolean array data, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Boolean).)
公共方法Write(String, Byte)
公共方法Write(String, Byte)
当前写入字节数组使用数据类型 0xD1 写入,如果其他的字节类型需要调用 WriteTag(String, UInt16, Byte, Int32) 方法来实现。
The currently written byte array is written using the data type 0xD1. If other byte types need to be called WriteTag(String, UInt16, Byte, Int32) Method to achieve.
(重写 DeviceCommunicationWrite(String, Byte).)
公共方法代码示例Write(String, Double)
写入double数组,返回是否成功
Write double array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Double).)
公共方法代码示例Write(String, Int16)
写入short数组,返回是否成功
Write short array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Int16).)
公共方法代码示例Write(String, Int32)
写入int[]数组,返回是否成功
Write int array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Int32).)
公共方法代码示例Write(String, Int64)
写入long数组,返回是否成功
Write long array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Int64).)
公共方法代码示例Write(String, Single)
写入float数组,返回是否成功
Write float array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, Single).)
公共方法代码示例Write(String, String)
写入字符串信息,编码为ASCII
Write string information, encoded as ASCII
(重写 DeviceCommunicationWrite(String, String).)
公共方法代码示例Write(String, UInt16)
写入ushort数组,返回是否成功
Write ushort array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, UInt16).)
公共方法代码示例Write(String, UInt32)
写入uint[]数组,返回是否成功
Write uint array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, UInt32).)
公共方法代码示例Write(String, UInt64)
写入ulong数组,返回是否成功
Write ulong array, return whether the write was successful
(重写 DeviceCommunicationWrite(String, UInt64).)
公共方法代码示例Write(String, String, Int32)
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII
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.
(继承自 DeviceCommunication。)
公共方法代码示例Write(String, String, Encoding)
写入字符串信息,需要指定的编码信息
Write string information, need to specify the encoding information
(重写 DeviceCommunicationWrite(String, String, Encoding).)
公共方法代码示例Write(String, String, Int32, Encoding)
写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息
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
(继承自 DeviceCommunication。)
公共方法代码示例WriteT(T)
写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明
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.
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Double)
异步写入double数据,返回是否成功
Asynchronously write double data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int16)
异步写入short数据,返回是否成功
Asynchronously write short data, returns whether success
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int32)
异步写入int数据,返回是否成功
Asynchronously write int data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Int64)
异步写入long数据,返回是否成功
Asynchronously write long data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, Single)
异步写入float数据,返回是否成功
Asynchronously write float data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt16)
异步写入ushort数据,返回是否成功
Asynchronously write ushort data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt32)
异步写入uint数据,返回是否成功
Asynchronously write uint data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, UInt64)
异步写入ulong数据,返回是否成功
Asynchronously write ulong data, return whether the write was successful
(继承自 DeviceCommunication。)
公共方法WriteAsync(String, Boolean)
写入单个的Boolean数据,返回是否成功
Write a single Boolean data, and return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Boolean).)
公共方法WriteAsync(String, Boolean)
批量写入Boolean数组数据,返回是否成功
Batch write Boolean array data, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Boolean).)
公共方法WriteAsync(String, Byte)
公共方法WriteAsync(String, Byte)
当前写入字节数组使用数据类型 0xD1 写入,如果其他的字节类型需要调用 WriteTag(String, UInt16, Byte, Int32) 方法来实现。
The currently written byte array is written using the data type 0xD1. If other byte types need to be called WriteTag(String, UInt16, Byte, Int32) Method to achieve.
(重写 DeviceCommunicationWriteAsync(String, Byte).)
公共方法代码示例WriteAsync(String, Double)
写入double数组,返回是否成功
Write double array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Double).)
公共方法代码示例WriteAsync(String, Int16)
写入short数组,返回是否成功
Write short array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Int16).)
公共方法代码示例WriteAsync(String, Int32)
写入int[]数组,返回是否成功
Write int array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Int32).)
公共方法代码示例WriteAsync(String, Int64)
写入long数组,返回是否成功
Write long array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Int64).)
公共方法代码示例WriteAsync(String, Single)
写入float数组,返回是否成功
Write float array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, Single).)
公共方法代码示例WriteAsync(String, String)
写入字符串信息,编码为ASCII
Write string information, encoded as ASCII
(重写 DeviceCommunicationWriteAsync(String, String).)
公共方法代码示例WriteAsync(String, UInt16)
写入ushort数组,返回是否成功
Write ushort array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, UInt16).)
公共方法代码示例WriteAsync(String, UInt32)
写入uint[]数组,返回是否成功
Write uint array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, UInt32).)
公共方法代码示例WriteAsync(String, UInt64)
写入ulong数组,返回是否成功
Write ulong array, return whether the write was successful
(重写 DeviceCommunicationWriteAsync(String, UInt64).)
公共方法WriteAsync(String, String, Int32)
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为ASCII
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.
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsync(String, String, Encoding)
异步写入字符串信息,需要指定的编码信息
Asynchronously write string information, need to specify the encoding information
(重写 DeviceCommunicationWriteAsync(String, String, Encoding).)
公共方法WriteAsync(String, String, Int32, Encoding)
异步写入指定长度的字符串信息,如果超出,就截断字符串,如果长度不足,那就补0操作,编码为指定的编码信息
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
(继承自 DeviceCommunication。)
公共方法代码示例WriteAsyncT(T)
异步写入支持Hsl特性的数据,返回是否写入成功,该特性为HslDeviceAddressAttribute,详细参考api文档说明
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.
(继承自 DeviceCommunication。)
公共方法代码示例WriteCustomerT
写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Write data of a custom type, which must inherit from the IDataTransfer interface
(继承自 DeviceCommunication。)
公共方法代码示例WriteCustomerAsyncT
写入自定义类型的数据,该类型必须继承自IDataTransfer接口
Write data of a custom type, which must inherit from the IDataTransfer interface
(继承自 DeviceCommunication。)
公共方法WriteDate
使用日期格式(Date)将指定的数据写入到指定的地址里,PLC的地址类型变量必须为 "Date",否则写入失败。
Use the date format (Date) to write the specified data to the specified address. The PLC address type variable must be "Date", otherwise the writing will fail.
公共方法WriteDateAsync
使用日期格式(Date)将指定的数据写入到指定的地址里,PLC的地址类型变量必须为 "Date",否则写入失败。
Use the date format (Date) to write the specified data to the specified address. The PLC address type variable must be "Date", otherwise the writing will fail.
公共方法WriteTag
使用指定的类型写入指定的节点数据,类型信息参考API文档,地址支持协议类型代号信息,例如 "type=0xD1;A"
Use the specified type to write the specified node data. For type information, refer to the API documentation. The address supports protocol type code information, such as "type=0xD1;A"
公共方法WriteTagAsync
使用指定的类型写入指定的节点数据,类型信息参考API文档,地址支持协议类型代号信息,例如 "type=0xD1;A"
Use the specified type to write the specified node data. For type information, refer to the API documentation. The address supports protocol type code information, such as "type=0xD1;A"
公共方法WriteTime
使用时间格式(TIME)将时间数据写入到PLC中指定的地址里去,PLC的地址类型变量必须为 "TIME",否则写入失败。
Use the time format (TIME) to write the time data to the address specified in the PLC. The PLC address type variable must be "TIME", otherwise the writing will fail.
公共方法WriteTimeAndDate
使用日期格式(Date)将指定的数据写入到指定的地址里,PLC的地址类型变量必须为 "Date",否则写入失败。
Use the date format (Date) to write the specified data to the specified address. The PLC address type variable must be "Date", otherwise the writing will fail.
公共方法WriteTimeAndDateAsync
使用日期格式(Date)将指定的数据写入到指定的地址里,PLC的地址类型变量必须为 "Date",否则写入失败。
Use the date format (Date) to write the specified data to the specified address. The PLC address type variable must be "Date", otherwise the writing will fail.
公共方法WriteTimeAsync
使用时间格式(TIME)将时间数据写入到PLC中指定的地址里去,PLC的地址类型变量必须为 "TIME",否则写入失败。
Use the time format (TIME) to write the time data to the address specified in the PLC. The PLC address type variable must be "TIME", otherwise the writing will fail.
公共方法WriteTimeOfDate
使用时间格式(TimeOfDate)将时间数据写入到PLC中指定的地址里去,PLC的地址类型变量必须为 "TimeOfDate",否则写入失败。
Use the time format (TimeOfDate) to write the time data to the address specified in the PLC. The PLC address type variable must be "TimeOfDate", otherwise the writing will fail.
公共方法WriteTimeOfDateAsync
使用时间格式(TimeOfDate)将时间数据写入到PLC中指定的地址里去,PLC的地址类型变量必须为 "TimeOfDate",否则写入失败。
Use the time format (TimeOfDate) to write the time data to the address specified in the PLC. The PLC address type variable must be "TimeOfDate", otherwise the writing will fail.
Top
字段
  名称说明
受保护的字段LogMsgFormatBinary
设置日志记录报文是否二进制,如果为False,那就使用ASCII码
Set whether the log message is binary, if it is False, then use ASCII code
(继承自 BinaryCommunication。)
受保护的字段OTConnectionId
O -> T Network Connection ID
(继承自 NetworkConnectedCip。)
受保护的字段TOConnectionId
T -> O Network Connection ID
(继承自 NetworkConnectedCip。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
支持普通标签的读写,类型要和标签对应上。如果标签是数组,例如 A 是 INT[0...9] 那么Read("A", 1),返回的是10个short所有字节数组。 如果需要返回10个长度的short数组,请调用 ReadInt16("A[0], 10"); 地址必须写 "A[0]",不能写 "A" , 如需要读取结构体,参考 ReadStructT(String)
示例
首先说明支持的类型地址,在PLC里支持了大量的类型,有些甚至在C#里是不存在的。现在做个统一的声明
PLC类型含义代号C# 类型备注
bool位类型数据0xC1bool
SINT8位的整型0xC2sbyte有符号8位很少用,HSL直接用byte
USINT无符号8位的整型0xC6byte如需要,使用WriteTag(String, UInt16, Byte, Int32)实现
BYTE8位字符数据0xD1byte如需要,使用WriteTag(String, UInt16, Byte, Int32)实现
INT16位的整型0xC3short
UINT无符号的16位整型0xC7ushort
DINT32位的整型0xC4int
UDINT无符号的32位整型0xC8uint
LINT64位的整型0xC5long
ULINT无符号的64位的整型0xC9ulong
REAL单精度浮点数0xCAfloat
DOUBLE双精度浮点数0xCBdouble
STRING字符串数据0xD0string前两个字节为字符长度
8bit string BYTE8位的字符串0xD1本质是BYTE数组
16bit string WORD16位的字符串0xD2本质是WORD数组,可存放中文
32bit string DWORD32位的字符串0xD2本质是DWORD数组,可存放中文
在读写操作之前,先看看怎么实例化和连接PLC
实例化及连接示例
// 实例化对象,指定PLC的ip地址
OmronConnectedCipNet omron = new OmronConnectedCipNet( "192.168.1.110" );

// 连接PLC,如果不连接直接读,那就是短连接
OperateResult connect = omron.ConnectServer( );
if (!connect.IsSuccess)
{
    Console.WriteLine( "connect failed:" + connect.Message );
    return;
}

// 然后就可以进行读写操作了
// ....


// 系统退出的时候,关闭连接,实际上不关闭问题也不大
omron.ConnectClose( );
现在来说明以下具体的操作细节。我们假设有如下的变量:
CESHI_A SINT
CESHI_B BYTE
CESHI_C INT
CESHI_D UINT
CESHI_E SINT[0..9]
CESHI_F BYTE[0..9]
CESHI_G INT[0..9]
CESHI_H UINT[0..9]
CESHI_I INT[0..511]
CESHI_J STRING[12]
ToPc_ID1 ARRAY[0..99] OF STRING[20]
CESHI_O BOOL
CESHI_P BOOL[0..31]
对 CESHI_A 来说,读写这么操作
读写示例
OperateResult<byte> read = omron.ReadByte( "CESHI_A" );
if (read.IsSuccess)
{
    // 因为是 SINT 类型,本质上需要强制转换,如果是 USINT 类型,就不需要操作了
    sbyte value = (sbyte)read.Content;
}
else
{
    // 读取失败,可能网络问题
}

// 写入的话
OperateResult write = omron.Write( "CESHI_A", (byte)100 );
if (write.IsSuccess)
{
    // Write Success
}
else
{
    // Write Failed
}
对于 CESHI_B 来说,写入的操作有点特殊
读写示例
OperateResult<byte> read = omron.ReadByte( "CESHI_B" );
if (read.IsSuccess)
{
    byte value = read.Content;
}
else
{
    // 读取失败,可能网络问题
}

// 写入的话,因为默认类型是C2, 如果和plc的数据类型不一致的话,可以额外指定
OperateResult write = omron.Write( "type=0xD1;CESHI_B", Convert.ToByte( 100 ) );
if (write.IsSuccess)
{
    // Write Success
}
else
{
    // Write Failed
}

// 当然直接使用 WriteTag 写入也是可以的,这个方法是底层写入的方法
write = omron.WriteTag( "CESHI_B", 0xD1, new byte[] { 100 } );
if (write.IsSuccess)
{
    // Write Success
}
else
{
    // Write Failed
}
对于 CESHI_C, CESHI_D 来说,就是 ReadInt16(string address) , Write( string address, short value ) 和 ReadUInt16(string address) 和 Write( string address, ushort value ) 差别不大。 所以我们着重来看看数组的情况,以 CESHI_G 标签为例子:
情况一,我想一次读取这个标签所有的字节数组(当长度满足的情况下,会一次性返回数据)
读写示例
// 以下省略判断是否读取写入成功
OperateResult<byte[]> read = omron.Read( "CESHI_G", 1 );
情况二,我想读取第3个数,或是第6个数开始,一共5个数
读写示例
// 以下省略判断是否读取写入成功

// 这是读取第三个数
OperateResult<short> read = omron.ReadInt16( "CESHI_G[2]" );
// 这是写入第三个数
OperateResult write = omron.Write( "CESHI_G[2]", (short)1234 );

// 这是读取第6个数开始,一共5个数
OperateResult<short[]> readArray = omron.ReadInt16( "CESHI_G[5]", 5 );
// 这是写入第6个数开始,一共5个数
OperateResult writeArray = omron.Write( "CESHI_G[5]", new short[] { 1, 2, 3, 4, 5 } );
其他的数组情况都是类似的,我们来看看字符串 CESHI_J 变量
读写示例
// 以下省略判断是否读取写入成功
// 假如标签 CESHI_J 的字符串值为 A123

// 猜猜返回什么?
OperateResult<byte[]> read = omron.Read( "CESHI_J", 1 );
// 返回 04 00 41 31 32 33 00 00 00 00 00 00 00 00
// 我们看到前两个字节是字符串长度,可以自行解析,任意编码都可以

// 也可以简单点操作,默认UTF-8编码
OperateResult<string> readstr = omron.ReadString( "CESHI_J" );

// 写入的话
OperateResult write = omron.Write( "CESHI_J", "123456" );
对于 bool 变量来说,就是 ReadBool("CESHI_O") 和 Write("CESHI_O", true) 操作,如果是bool数组,就不一样了
读写示例
// 以下省略判断是否读取写入成功

// 猜猜返回什么?
OperateResult<byte[]> readTag = omron.Read( "CESHI_P", 1 );
// 返回 20 00 10 1A
// 我们看到所有的位变成了一个字节数组,自行解析的话,就是byte[]转bool: HslCommunication.BasicFramework.SoftBasic.ByteToBoolArray(read.Content)

// 如果读写某个位
OperateResult<bool> readBool = omron.ReadBool( "CESHI_J[2]" );
OperateResult write = omron.Write( "CESHI_J[2]", true );

// 读取全部的位或部分,读取10个bool数组
OperateResult<bool[]> readArray = omron.ReadBool( "CESHI_J[0]", 10 );
// 批量写入部分的位
OperateResult writeBoolArray = omron.Write( "CESHI_J[2]", new bool[] { true, false, true } );
最后我们来看看结构体的操作,假设我们有个结构体
MyData.Code STRING(12)
MyData.Value1 INT
MyData.Value2 INT
MyData.Value3 REAL
MyData.Value4 INT
MyData.Value5 INT
MyData.Value6 INT[0..3]
因为bool比较复杂,暂时不考虑。要读取上述的结构体,我们需要定义结构一样的数据
结构体
// 注意:using System.Runtime.InteropServices;

[StructLayout( LayoutKind.Sequential )]
struct MyStruct
{
    [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 12 )]
    public string code;

    public short value1;

    public short value2;

    public float value3;

    public short value4;

    public short value5;

    [MarshalAs( UnmanagedType.ByValArray, SizeConst = 4 )]
    public short[] value6;
}
定义好后,我们再来读取就很简单了。
读写示例
OperateResult<MyStruct> read = omron.ReadStruct<MyStruct>( "MyData" );
参见