using HslCommunication.Core.Address;
using HslCommunication.Profinet.Melsec;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace HslCommunication.Profinet.Panasonic
{
///
/// 松下PLC的MC协议的信息,具体的地址格式请参考备注说明
///
///
/// 地址的输入的格式说明如下:
///
///
/// 地址名称
/// 地址代号
/// 地址示例一
/// 地址范围
/// 字操作
/// 位操作
///
/// -
/// 输入继电器
/// X
/// X0000,X100F
/// X0000~X109F
/// √
/// √
///
/// -
/// 输出继电器
/// Y
/// Y0000,Y100F
/// Y0000~Y109F
/// √
/// √
///
/// -
/// 链接继电器
/// L
/// L0000,L100F
/// L0000~L0127F
/// √
/// √
///
/// -
/// 内部继电器
/// R
/// R0000,R100F
/// R0000~R511F,R9000~R951F
/// √
/// √
///
/// -
/// 数据存储器
/// D
/// D100,D200
/// D0~D65532,D90000~D90999
/// √
/// ×
///
/// -
/// 链路寄存器
/// LD
/// LD0,LD100
/// LD0~LD255
/// √
/// ×
///
/// -
/// 定时器(当前值)
/// TN
/// TN100,TN200
/// TN0~TN1023
/// √
/// ×
///
/// -
/// 定时器(接点)
/// TS
/// TS100,TS200
/// TS0~TS1023
/// √
/// √
///
/// -
/// 计数器(当前值)
/// CN
/// CN100,CN200
/// CN0~CN1023
/// √
/// ×
///
/// -
/// 计数器(接点)
/// CS
/// CS100,CS200
/// CS0~CS1023
/// √
/// √
///
///
///
public class PanasonicMcNet : MelsecMcNet
{
#region Constructor
///
/// 实例化松下的的Qna兼容3E帧协议的通讯对象
///
public PanasonicMcNet( ) : base( )
{
}
///
/// 实例化一个基恩士的Qna兼容3E帧协议的通讯对象
///
/// PLC的Ip地址
/// PLC的端口
public PanasonicMcNet( string ipAddress, int port ) : base( ipAddress, port )
{
}
#endregion
#region Address Overeride
///
/// 分析地址的方法,允许派生类里进行重写操作
///
/// 地址信息
/// 数据长度
/// 解析后的数据信息
protected override OperateResult McAnalysisAddress( string address, ushort length )
{
return McAddressData.ParsePanasonicFrom( address, length );
}
#endregion
#region Object Override
///
/// 返回表示当前对象的字符串
///
/// 字符串信息
public override string ToString( )
{
return $"PanasonicMcNet[{IpAddress}:{Port}]";
}
#endregion
}
}