/// <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; }
/// <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; }
/// <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); } } }