Стартовая страница › Форумы › Разработка и интеграция › Методы драйверов v6
- В этой теме 34 ответа, 4 участника, последнее обновление 2 года назад сделано Mikhail.
-
АвторСообщения
-
30.03.2022 в 11:16 #22708manjey73Участник
Сейчас в таблице Коммуникатора Номер и Код
я могу управлять Номером ? Менять его, как менял ранее ?
30.03.2022 в 11:30 #22709manjey73УчастникМогу ли я добавить свой формат в добавление к существующим в TagFormat ?
30.03.2022 в 15:43 #22715MikhailМодераторНашел причину такого поведения, вопрос выше в самом начале в силе..
Какой?
При запуске опроса какие методы и в какой последовательности исполняются в Версии 6
OnAddedToCommLine() — теперь нет, так понимаю вместо него InitDeviceTags() или с оговорками ?
Создание тегов должно быть в InitDeviceTags
Сейчас в таблице Коммуникатора Номер и Код
я могу управлять Номером ? Менять его, как менял ранее ?Уточните, как меняли ранее?
Могу ли я добавить свой формат в добавление к существующим в TagFormat ?
Можете создать свой формат new TagFormat(…). Если он используется часто, то записать его в отдельную константу static readonly внутри своего класса DeviceLogic, например.
30.03.2022 в 15:52 #22717manjey73УчастникУточните, как меняли ранее?
tagGroup.KPTags.Add(new KPTag(МОЙ НОМЕР, dAct.Value.OuVal.ValName));
МОЙ НОМЕР как раз и был номером сигнала в таблице и в случае исключения из списка номер никогда не менялся, пока я сам его не поменяю. Он же был Номером сигнала, передаваемым в cmdNum. Вот по этой части не помешало бы какого-то пояснения, как теперь со всем этим быть? Ранее обходили индексную нумерацию обманом, а как теперь? Так же в другой теме спрашивал, а что если код «DO» пользователь сменить на «DO1» — команда перестанет приниматься?
С порядком я понял уже, когда увидел, что в старте линии у меня не корректно рассчитывалась CRC, так как параметры по ней у меня считывались из шаблона, который как раз в InitTag запихнул. Вопрос и был связан с последовательностью и какие методы изменились.
- Этот ответ был изменен 2 года назад от manjey73.
30.03.2022 в 17:25 #22723manjey73Участник[2] CE301_serv -------------- Драйвер : DrvIEC61107 1.0.0.0 Состояние : норма Время сеанса : 30.03.2022 17:22:10 Время команды : неопределено Сеансы (всего / ошибок) : 3 / 0 Команды (всего / ошибок) : 0 / 0 Запросы (всего / ошибок) : 39 / 0 Текущие данные +-------+--------+-----------------+-----------------------+-------+ | Номер | Код | Наименование | Значение | Канал | +-------+--------+-----------------+-----------------------+-------+ | ******************* Счетчик Энергомера CE301 ******************* | +-------+--------+-----------------+-----------------------+-------+ | 1 | serial | Serial # | 8 841 163 127 043,000 | | +-------+--------+-----------------+-----------------------+-------+ | 2 | 2 | Voltage L1 | 235,903 | | +-------+--------+-----------------+-----------------------+-------+ | 3 | 3 | Voltage L2 | 244,102 | | +-------+--------+-----------------+-----------------------+-------+ | 4 | 4 | Voltage L3 | 257,160 | | +-------+--------+-----------------+-----------------------+-------+
Раньше Номер я мог устанавливать свой и именно по своему номеру я идентифицировал передаваемую команду. Теперь то, что у меня было номером стало Кодом. Но Код в Администраторе можно сменить ненароком. В общем пока не понял концепции, как идентифицировать поступающую команду, так как Код(если я буду использовать цифровое значение) и Номер могут не совпадать. Пример ниже
+-------+--------+-----------------+-----------------------+-------+ | 19 | 26 | tg_f L1 | -0,410 | | +-------+--------+-----------------+-----------------------+-------+ | 20 | 27 | tg_f L2 | -0,440 | | +-------+--------+-----------------+-----------------------+-------+ | 21 | 28 | tg_f L3 | -1,370 | | +-------+--------+-----------------+-----------------------+-------+ | 22 | Time | Time | 17:32:50 | | +-------+--------+-----------------+-----------------------+-------+ | 23 | 31 | Date | 30.03.2022 | | +-------+--------+-----------------+-----------------------+-------+
30.03.2022 в 17:42 #22724manjey73УчастникС Форматом даты и времени разобрался, а вот со строковой нет. Номер сигнала 1 — Serial# остался в цифровом виде.
По факту строка серийника выглядит так 008841163127043 и в Коммуникаторе передается в виде числа 8 841 163 127 043,000
В старом коде был метод ConvertTagDataToStr в котором можно было показать строкой в логе Коммуникатора.
В коде был перевод в double, предварительно сохраняя всю строку в буфереdouble d = ScadaUtils.EncodeAscii(data); SetCurData(sndList[i].tagIdx, d, 1);
а в методе просто возвращал полную строку. Теперь что необходимо вместо указанного кода SetCurData (аналог для 6-й версии) чтобы так же в Коммуникаторе отобразилась строка ? при этом сохранилась возможность в БД отправить просто в числовом виде ?
30.03.2022 в 20:20 #22725RomirosУчастникDeviceData.SetUnicode не подходит?
31.03.2022 в 10:02 #22728manjey73Участник@Romiros попробую чуть позже. Вопрос в том, что в БД попадает 8 байт и в Коммуникаторе ранее вроде тоже можно было отобразить только 8 байт строки, тоже проверю.
Из протокола IEC61107 есть только счетчик CE301 в офисе, а я сейчас на гибридном графике работы 🙂Вопрос к Михаилу, если есть возможность контролировать Номер сигнала самостоятельно, то как это сделать?
Если в 6-й версии вместо Номера возможен контроль только Кода, то насколько сложно сделать перегрузки метода добавления тега, чтобы можно было добавлять тег как по Номеру (как было в 5-й версии) так и по Коду ?Например сделать Словарь такого плана Dictionary<sting, class Tag>
где класс Tag это int Номер, string Имя Тега ???
В общем любая вариация которая позволит оперировать не только Кодом, но и Номером Сигнала.31.03.2022 в 10:06 #22729a80808УчастникЭто у вас там такой перекос по фазам по напряжению? Выгорит же все…
31.03.2022 в 10:18 #22731manjey73УчастникГде вы увидели перекос? все вполне в пределах нормы. Ну третья да, чутка не очень хороша… 🙂
31.03.2022 в 10:53 #22738MikhailМодераторНомера тегов теперь идут последовательно. От них планируется постепенно отказаться.
Используйте строковый код тега.а что если код «DO» пользователь сменить на «DO1» — команда перестанет приниматься?
Но Код в Администраторе можно сменить ненароком.Пользователь не имеет доступа к проекту. Если инженер изменит код тега, то работа может нарушиться. Точно также, как и изменение поля «Сигнал» в 5-й версии.
если есть возможность контролировать Номер сигнала самостоятельно, то как это сделать?
Нет
31.03.2022 в 10:54 #22739MikhailМодераторДля работы со строками, установите тип данных тега — строка.
Также важна длина данных тега. В 1-й единице длины 4 символа Unicode.31.03.2022 в 11:14 #22740manjey73УчастникЯ установил тип данных тега string но это не помогло. Выше привел код, как в 5-й версии в double для БД переводилась строка.
Почему это в 1-й единице 4-ре символа Unicode ? что за единица такая, о чем именно речь?
4-ре символа Unicode это 8 байт же? так понимаю как было раньше 8 байт так и осталось
В 6-й версии добавились же вроде БД текстовые, как перенаправить канал в другую БД из драйвера ?
з.ы. ну и ладно, будем оперировать Кодом, надо будет подумать как это теперь подшаманить без глобальной переделки кода….
- Этот ответ был изменен 2 года назад от manjey73.
31.03.2022 в 14:25 #22745a80808УчастникГде вы увидели перекос?
Ничего себе, больше 5%, между А и С аж 9%. А С превышает допустимое напряжение даже для МЭК (110% от 230 в — 253 в). Ничего хорошего для оборудования.31.03.2022 в 18:04 #22749 -
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.