Стартовая страница › Форумы › Понять, как работает ПО › Опрос канала по событию
- В этой теме 14 ответов, 3 участника, последнее обновление 1 год, 3 месяца назад сделано
manjey73.
-
АвторСообщения
-
07.03.2025 в 08:03 #37078
wkdx00
УчастникЗдравствуйте. Работа по modbus. Стоит проблема вычитки аварий из устройства по наступлению аварийного события. Возможных аварий более 500 (в каждом из 10+ устройств), читать их в цикле плохая идея. Могу отслеживать наличие самой аварии. Не получается запустить канал аварийных событий (вычитку пула аварийных флагов из устройства, опрос тех самых 500+ адресов) по сработке тэга (0 —> 1) в канале, крутящегося в цикле. Так же не понятно, как запустить такой разовый опрос из формы представления.
Ролики и доки смотрел, форум поиском шерстил.07.03.2025 в 09:02 #37080
manjey73УчастникНаверное надо сделать опрос по команде и как-то привязать эту команду к событию (какому-то каналу).
Проблема другая — куда сохранять то? нужны же каналы. Наверное надо делать отдельную БД с записью по изменению.
з.ы. вот не хватает БД с циклической перезаписью на Х значений. Давно не хватает.
07.03.2025 в 09:04 #37081
manjey73УчастникНапишите более развернуто, что хотите.
Как понимаю есть Х регистров, которые необходимо читать только по команде?1. Сделать отдельное устройство с шаблоном только на эти регистры
2. Опрос выставить по команде
3. Писать в отдельную БДЭто то, что приходит пока на ум.
07.03.2025 в 10:34 #37095wkdx00
УчастникЕсть десяток модулей управления генераторными установками, дежурный должен видеть параметры каждой + аварийные события (причину). С первым проблем нет, а вот причину вычитать можно только перебором всех аварийных флагов. Думал создать универсальный канал с пулом необходимых адресов модбас, который можно будет подключать при необходимости для опроса любого из приборов. Заносить аварийные события в базу так же планирую, но пока не разобрался как реализовать сам процесс хотя бы отображения у оператора…
07.03.2025 в 10:54 #37096
manjey73УчастникСмотрите, если у вас есть устройство, которое надо читать по разному, то надо создать два устройства. Одно с опросом в цикле. Второе с опросом с нужным периодом или по команде.
То есть физическое устройство одно, а в настройках БД их два (три и т.д.)По идее только так можно поиграться.
+ разные БД, настроенные по разному.Ну еще момент, что там за аварийные флаги? биты? строго в одном месте или плавающие переменные? Тут наверное только скриптами баловаться.
Например есть 5 регистров аварий и ошибки могут быть 1,3,5 последовательно в регистрах.
В другом случае 2,3,4 и тоже последовательно. То есть будут занимать с 1-го по 3-й регистры. И значения ошибок разные. В таком варианте только скриптами разруливать в расчетные каналы возникновения этих ошибок.
В общем надо понимать, что там у вас приборы установок отдают и как, чтобы выбрать путь.07.03.2025 в 11:34 #37098wkdx00
УчастникСпасибо, не знал что нужно реализовать 2 устройства… мне надо обдумать, пока это кажется очень кривым и неудобным. Возможно пока не разобрался. Я хотел один канал сделать универсальным и по команде опрашивать им любое из устройств…
07.03.2025 в 11:54 #37100
manjey73УчастникНет, скорее всего придется делать каналы по количеству устройств.
Создание 2-х устройств на примере счетчика.
Мгновенные значения читаем постоянно
Энергию раз в час.Примерно то же самое получится у вас только для других целей.
Хотя может быть можно уже иначе, не пробовал07.03.2025 в 11:57 #37101
manjey73УчастникВполне возможно что на 6-й можно одним устройством обойтись, просто разные шаблоны опроса в линии связи создавать и использовать.
07.03.2025 в 12:25 #37108
MikhailМодераторпричину вычитать можно только перебором всех аварийных флагов
Добрый день! Сделайте скриншот из документации, где описаны Модбас-регистры с флагами аварий.
07.03.2025 в 14:54 #37124wkdx00
УчастникДобрый! Возможно лучше официальная дока: AGC-150_modbus
Вкладка Input register.
Скрин:
07.03.2025 в 15:01 #37125
manjey73Участникну у вас там просто битовые маски вроде. Почему-то повторяется по три раза
G -P> 1 Вот это вот что означает ? и еще два параметра на том же бите по тому же адресу07.03.2025 в 15:05 #37126
manjey73УчастникG I>> 1
M I>> 1
BA I>> 1Предположу, что в каком-то State регистре надо смотреть к чему относится, типа G, M или BA и делать соотнесение.
Типа бит поднялся в 1, смотрим где-то что это из 3-х или 2-х и там орем об ошибке.
Думаю вполне можно скриптами обработать.
А так, регистры можно читать хоть постоянно, хоть по общей аварии.08.03.2025 в 13:29 #37132wkdx00
УчастникПросто контроллер — универсальный и может ставиться на генератор (Generator), сеть (Main) или BTB, соответственно одинаковая адресация modbus
08.03.2025 в 13:30 #37133wkdx00
УчастникВот пока не нашел как производить вычитку по флагу аварийного события.
08.03.2025 в 14:22 #37134
manjey73Участника, получается просто биты.
Так а зачем тогда вычитка по событию? это обычный вариант, настраиваете чтение этого регистра и указываете что это битовая маска, при создании будет создан массив каналов.
Заносите их в таблицу и переименовываете, что есть что.
Никаких плавающих ошибок там нет, все по полочкам в битах и можно читать всегда -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.