Beispiel #1
0
        /// <summary>
        /// Выполнить действия при запуске линии связи
        /// </summary>
        public override void OnCommLineStart()
        {
            // получение режима передачи данных
            try { transMode = (Modbus.TransModes)Enum.Parse(typeof(Modbus.TransModes), UserParams["TransMode"], true); }
            catch { transMode = Modbus.TransModes.RTU; }

            // настройка библиотеки в зависимости от режима передачи данных
            switch (transMode)
            {
            case Modbus.TransModes.RTU:
                session += SerialSession;
                sendCmd += SerialSendCmd;
                request += modbus.RtuRequest;
                break;

            case Modbus.TransModes.ASCII:
                session           += SerialSession;
                sendCmd           += SerialSendCmd;
                request           += modbus.AsciiRequest;
                SerialPort.NewLine = Modbus.CRLF;
                break;

            default:     // Modbus.TransModes.TCP
                session += TcpSession;
                sendCmd += TcpSendCmd;
                request += modbus.TcpRequest;
                break;
            }

            // настройка объекта, реализующего протокол Modbus
            modbus.SerialPort = SerialPort;
            modbus.Timeout    = KPReqParams.Timeout;
            modbus.WriteToLog = WriteToLog;

            // формирование PDU и ADU
            if (deviceModel != null)
            {
                devAddr = (byte)Address;

                foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups)
                {
                    elemGroup.InitReqPDU();
                    elemGroup.InitReqADU(devAddr, transMode);
                }
            }
        }
Beispiel #2
0
        /// <summary>
        /// Выполнить действия при запуске линии связи
        /// </summary>
        public override void OnCommLineStart()
        {
            // получение режима передачи данных
            transMode = CustomParams.GetEnumParam <Modbus.TransModes>("TransMode", false, Modbus.TransModes.RTU);

            // настройка библиотеки в зависимости от режима передачи данных
            switch (transMode)
            {
            case Modbus.TransModes.RTU:
                request += modbus.RtuRequest;
                break;

            case Modbus.TransModes.ASCII:
                request += modbus.AsciiRequest;
                break;

            default:     // Modbus.TransModes.TCP
                request += modbus.TcpRequest;
                break;
            }

            // настройка объекта, реализующего протокол Modbus
            modbus.Timeout    = ReqParams.Timeout;
            modbus.WriteToLog = WriteToLog;

            // формирование PDU и ADU
            if (deviceModel != null)
            {
                devAddr = (byte)Address;

                foreach (Modbus.ElemGroup elemGroup in deviceModel.ElemGroups)
                {
                    elemGroup.InitReqPDU();
                    elemGroup.InitReqADU(devAddr, transMode);
                }
            }
        }