Example #1
0
        /// <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();
        }
Example #2
0
 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);
 }
Example #3
0
 /// <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);
 }
Example #4
0
        /// <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);
        }
Example #5
0
 public SiemensMachine(SiemensType connectionType, string connectionString, SiemensMachineModel model,
                       IEnumerable <AddressUnit> getAddresses)
     : this(connectionType, connectionString, model, getAddresses, false)
 {
 }
Example #6
0
 /// <summary>
 ///     设置连接类型
 /// </summary>
 /// <param name="connectionType">需要设置的连接类型</param>
 public override void SetConnectionType(int connectionType)
 {
     ConnectionType = (SiemensType)connectionType;
 }
Example #7
0
 /// <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)
 {
 }
Example #8
0
 /// <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);
 }
Example #9
0
 /// <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;
 }