| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
-
- using System;
- using System.Windows.Forms;
- namespace Curtain.Net.Sockets.PLC
- {
- /// <summary>
- /// PLC报文类型
- /// </summary>
- public enum PLCMessageType
- {
- /// <summary>
- /// 其他
- /// </summary>
- Other = -1,
- /// <summary>
- /// 发送命令
- /// </summary>
- Send = 0,
- /// <summary>
- /// 读取PLC
- /// </summary>
- Read = 1,
- /// <summary>
- /// 写入PLC
- /// </summary>
- Write = 2,
- /// <summary>
- /// 连接后第一次握手(西门子S7-1200)
- /// </summary>
- SocketConnect1 = 11,
- /// <summary>
- /// 连接后第二次握手(西门子S7-1200)
- /// </summary>
- SocketConnect2 = 12,
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- [Serializable]
- public class PLCMessage
- {
- /// <summary>
- /// PLC报文
- /// </summary>
- public PLCMessage() : this(PLCMessageType.Send)
- {
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- /// <param name="messageType">报文类型</param>
- public PLCMessage(PLCMessageType messageType)
- {
- MessageType = messageType;
- }
- /// <summary>
- /// 主机地址
- /// </summary>
- public string Host
- {
- get;
- internal set;
- }
- /// <summary>
- /// 主机端口
- /// </summary>
- public int Port
- {
- get;
- internal set;
- }
- /// <summary>
- /// 报文类型
- /// </summary>
- public PLCMessageType MessageType
- {
- get;
- }
- /// <summary>
- /// PLC软元件代码
- /// </summary>
- public string Code
- {
- get;
- set;
- }
- /// <summary>
- /// PLC软元件编码
- /// </summary>
- public string Number
- {
- get;
- set;
- }
- /// <summary>
- /// PLC软元件点数
- /// </summary>
- public int Length
- {
- get;
- set;
- }
- /// <summary>
- /// 命令报文
- /// </summary>
- public string Command
- {
- get;
- set;
- }
- //public string Result
- //{
- // get;
- // set;
- //}
- /// <summary>
- /// 响应报文-头
- /// </summary>
- public string Head
- {
- get;
- set;
- }
- /// <summary>
- /// 响应报文-文本
- /// </summary>
- public string Content
- {
- get;
- set;
- }
- /// <summary>
- /// PLC处理是否返回错误
- /// </summary>
- public bool PLCError
- {
- get;
- set;
- }
- /// <summary>
- /// 命令报文
- /// </summary>
- [NonSerialized]
- public byte[] CommandBytes;
- //[NonSerialized]
- //public byte[] ResultByte;
- /// <summary>
- /// 响应报文-头
- /// </summary>
- [NonSerialized]
- public byte[] HeadBytes;
- /// <summary>
- /// 响应报文-文本
- /// </summary>
- [NonSerialized]
- public byte[] ContentBytes;
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return $"PLCMessage[{MessageType}][{Command}]";
- }
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- [Serializable]
- public class PLCMessage<TValue> : PLCMessage
- {
- /// <summary>
- /// PLC报文
- /// </summary>
- public PLCMessage() : this(PLCMessageType.Send)
- {
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- /// <param name="messageType">报文类型</param>
- public PLCMessage(PLCMessageType messageType) : base(messageType)
- {
- }
- /// <summary>
- /// 读取或写入值
- /// </summary>
- public TValue Value
- {
- get;
- set;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return $"PLCMessage[{MessageType}][{Value}]";
- }
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- /// <typeparam name="TValue"></typeparam>
- /// <typeparam name="TAddress"></typeparam>
- public class PLCMessage<TValue, TAddress> : PLCMessage<TValue>
- {
- /// <summary>
- /// PLC报文
- /// </summary>
- public PLCMessage() : this(PLCMessageType.Send)
- {
- }
- /// <summary>
- /// PLC报文
- /// </summary>
- /// <param name="messageType">报文类型</param>
- public PLCMessage(PLCMessageType messageType) : base(messageType)
- {
- }
- /// <summary>
- /// PLC地址对象
- /// </summary>
- public TAddress AddressData
- {
- get;
- set;
- }
- /// <summary>
- ///
- /// </summary>
- /// <returns></returns>
- public override string ToString()
- {
- return $"PLCMessage[{MessageType}][{Value}]";
- }
- }
- }
|