/// <summary> /// 构造函数 /// </summary> /// <param name="connectionType">连接类型</param> /// <param name="connectionString">连接字符串</param> /// <param name="model">设备类型</param> /// <param name="slaveAddress">从站地址</param> /// <param name="masterAddress">主站地址</param> public SiemensUtility(SiemensType connectionType, string connectionString, SiemensMachineModel model, byte slaveAddress, byte masterAddress) : base(slaveAddress, masterAddress) { ConnectionString = connectionString; switch (model) { case SiemensMachineModel.S7_200: { _tdpuSize = 0x09; _taspSrc = 0x1001; _tsapDst = 0x1000; _maxCalling = 0x0001; _maxCalled = 0x0001; _maxPdu = 0x03c0; break; } case SiemensMachineModel.S7_300: case SiemensMachineModel.S7_400: { _tdpuSize = 0x1a; _taspSrc = 0x4b54; _tsapDst = 0x0302; _maxCalling = 0x0001; _maxCalled = 0x0001; _maxPdu = 0x00f0; break; } case SiemensMachineModel.S7_1200: case SiemensMachineModel.S7_1500: { _tdpuSize = 0x0a; _taspSrc = 0x1011; _tsapDst = 0x0301; _maxCalling = 0x0003; _maxCalled = 0x0003; _maxPdu = 0x0100; break; } case SiemensMachineModel.S7_200_Smart: { _tdpuSize = 0x0a; _taspSrc = 0x0101; _tsapDst = 0x0101; _maxCalling = 0x0001; _maxCalled = 0x0001; _maxPdu = 0x03c0; break; } default: { throw new NotImplementedException("Siemens PLC Model not Supported"); } } ConnectionType = connectionType; AddressTranslator = new AddressTranslatorSiemens(); }
public SiemensMachine(SiemensType connectionType, string connectionString, SiemensMachineModel model, IEnumerable <AddressUnit> getAddresses, bool keepConnect) : base(getAddresses, keepConnect) { BaseUtility = new SiemensUtility(connectionType, connectionString, model); AddressFormater = new AddressFormaterSiemens(); AddressCombiner = new AddressCombinerContinus(AddressTranslator); AddressCombinerSet = new AddressCombinerContinus(AddressTranslator); }
/// <summary> /// 构造函数 /// </summary> /// <param name="connectionType">连接类型</param> /// <param name="connectionString">连接地址</param> /// <param name="model">设备类型</param> /// <param name="getAddresses">读写的地址</param> /// <param name="keepConnect">是否保持连接</param> /// <param name="slaveAddress">从站号</param> /// <param name="masterAddress">主站号</param> public SiemensMachine(SiemensType connectionType, string connectionString, SiemensMachineModel model, IEnumerable <AddressUnit <TUnitKey> > getAddresses, bool keepConnect, byte slaveAddress, byte masterAddress) : base(getAddresses, keepConnect, slaveAddress, masterAddress) { BaseUtility = new SiemensUtility(connectionType, connectionString, model, slaveAddress, masterAddress); AddressFormater = new AddressFormaterSiemens(); AddressCombiner = new AddressCombinerContinus <TUnitKey>(AddressTranslator, 100); AddressCombinerSet = new AddressCombinerContinus <TUnitKey>(AddressTranslator, 100); }
/// <summary> /// 初始化方法 -> Initialize method /// </summary> /// <param name="siemens">指定西门子的型号 -> Designation of Siemens</param> /// <param name="ipAddress">Ip地址 -> IpAddress</param> private void Initialization(SiemensType siemens, string ip)//plc型号选择,默认是1200,ip默认为127.0.0.1 { WordLength = 2; IpAddress = ip; Port = 102; CurrentPlc = siemens; switch (siemens) { case SiemensType.S1200: plcHead1[21] = 0; break; case SiemensType.S300: plcHead1[21] = 2; break; case SiemensType.S400: plcHead1[21] = 3; plcHead1[17] = 0x00; break; case SiemensType.S1500: plcHead1[21] = 0; break; case SiemensType.S200Smart: { plcHead1 = plcHead1_200smart; plcHead2 = plcHead2_200smart; break; } case SiemensType.S200: { plcHead1 = plcHead1_200; plcHead2 = plcHead2_200; break; } default: plcHead1[18] = 0; break; } SocketBase sk = new SocketBase(); //sk.initSocketBase(ip, Port); }
public SiemensMachine(SiemensType connectionType, string connectionString, SiemensMachineModel model, IEnumerable <AddressUnit> getAddresses) : this(connectionType, connectionString, model, getAddresses, false) { }
/// <summary> /// 设置连接类型 /// </summary> /// <param name="connectionType">需要设置的连接类型</param> public override void SetConnectionType(int connectionType) { ConnectionType = (SiemensType)connectionType; }
/// <summary> /// 构造函数 /// </summary> /// <param name="connectionType">连接类型</param> /// <param name="connectionString">连接地址</param> /// <param name="model">设备类型</param> /// <param name="getAddresses">读写的地址</param> /// <param name="slaveAddress">从站号</param> /// <param name="masterAddress">主站号</param> public SiemensMachine(SiemensType connectionType, string connectionString, SiemensMachineModel model, IEnumerable <AddressUnit <TUnitKey> > getAddresses, byte slaveAddress, byte masterAddress) : this(connectionType, connectionString, model, getAddresses, false, slaveAddress, masterAddress) { }
/// <summary> /// 实例化一个西门子的S7协议的通讯对象并指定Ip地址 -> /// Instantiate a communication object for a Siemens S7 protocol and specify an IP address /// </summary> /// <param name="siemens">指定西门子的型号</param> /// <param name="ipAddress">Ip地址</param> public SiemensS7Net(SiemensType siemens, string ipAddress) { Initialization(siemens, ipAddress); }
/// <summary> /// 实例化一个西门子的S7协议的通讯对象 -> /// Instantiate a communication object for a Siemens S7 protocol /// </summary> /// <param name="siemens">指定西门子的型号</param> public SiemensS7Net(SiemensType siemens) { Initialization(siemens, string.Empty); }
public SiemensElement(SiemensType type, ReadOnlyMemory <byte> data) { Type = type; Raw = data; }