Esempio n. 1
0
        /// <summary>
        /// Выполнить действия после добавления КП на линию связи
        /// </summary>
        public override void OnAddedToCommLine()
        {
            // получение или загрузка шаблона устройства
            string fileName = ReqParams.CmdLine.Trim();

            PrepareTemplate(fileName);

            // инициализация тегов КП на основе шаблона устройства
            floatSignals = new HashSet <int>();
            int             tagInd    = 0;
            List <TagGroup> tagGroups = CreateTagGroups(deviceTemplate, ref tagInd);

            InitKPTags(tagGroups);

            // определение режима передачи данных
            transMode = CustomParams.GetEnumParam("TransMode", false, TransMode.RTU);

            if (deviceTemplate == null)
            {
                elemGroups   = null;
                elemGroupCnt = 0;
            }
            else
            {
                // получение активных групп элементов
                elemGroups   = deviceTemplate.GetActiveElemGroups();
                elemGroupCnt = elemGroups.Count;

                // формирование PDU и ADU
                devAddr = (byte)Address;
                foreach (ElemGroup elemGroup in elemGroups)
                {
                    elemGroup.InitReqPDU();
                    elemGroup.InitReqADU(devAddr, transMode);
                }

                foreach (ModbusCmd cmd in deviceTemplate.Cmds)
                {
                    cmd.InitReqPDU();
                    cmd.InitReqADU(devAddr, transMode);
                }
            }

            // определение возможности отправки команд
            CanSendCmd = deviceTemplate != null && deviceTemplate.Cmds.Count > 0;
        }
Esempio n. 2
0
        /// <summary>
        /// Выполнить действия после добавления КП на линию связи
        /// </summary>
        public override void OnAddedToCommLine()
        {
            // получение или загрузка шаблона устройства
            string fileName = ReqParams.CmdLine.Trim();

            PrepareTemplate(fileName);

            // инициализация тегов КП на основе шаблона устройства
            floatSignals = new HashSet <int>();
            int             tagInd    = 0;
            List <TagGroup> tagGroups = CreateTagGroups(deviceTemplate, ref tagInd);

            InitKPTags(tagGroups);

            // определение режима передачи данных
            transMode = CustomParams.GetEnumParam("TransMode", false, TransMode.RTU);

            // определение возможности отправки команд
            CanSendCmd = deviceTemplate != null && deviceTemplate.Cmds.Count > 0;
        }
Esempio n. 3
0
        /// <summary>
        /// Выполнить действия при запуске линии связи
        /// </summary>
        public override void OnCommLineStart()
        {
            // получение режима передачи данных
            transMode = CustomParams.GetEnumParam("TransMode", false, TransModes.RTU);

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

            case TransModes.ASCII:
                request += modbusPoll.AsciiRequest;
                break;

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

            SetNewLine();

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

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

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