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