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;
}
}
}