Опрос канала по событию

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Автор
    Сообщения
  • #37078
    wkdx00
    Участник

    Здравствуйте. Работа по modbus. Стоит проблема вычитки аварий из устройства по наступлению аварийного события. Возможных аварий более 500 (в каждом из 10+ устройств), читать их в цикле плохая идея. Могу отслеживать наличие самой аварии. Не получается запустить канал аварийных событий (вычитку пула аварийных флагов из устройства, опрос тех самых 500+ адресов) по сработке тэга (0 —> 1) в канале, крутящегося в цикле. Так же не понятно, как запустить такой разовый опрос из формы представления.
    Ролики и доки смотрел, форум поиском шерстил.

    #37080
    manjey73
    Участник

    Наверное надо сделать опрос по команде и как-то привязать эту команду к событию (какому-то каналу).

    Проблема другая — куда сохранять то? нужны же каналы. Наверное надо делать отдельную БД с записью по изменению.

    з.ы. вот не хватает БД с циклической перезаписью на Х значений. Давно не хватает.

    #37081
    manjey73
    Участник

    Напишите более развернуто, что хотите.
    Как понимаю есть Х регистров, которые необходимо читать только по команде?

    1. Сделать отдельное устройство с шаблоном только на эти регистры
    2. Опрос выставить по команде
    3. Писать в отдельную БД

    Это то, что приходит пока на ум.

    #37095
    wkdx00
    Участник

    Есть десяток модулей управления генераторными установками, дежурный должен видеть параметры каждой + аварийные события (причину). С первым проблем нет, а вот причину вычитать можно только перебором всех аварийных флагов. Думал создать универсальный канал с пулом необходимых адресов модбас, который можно будет подключать при необходимости для опроса любого из приборов. Заносить аварийные события в базу так же планирую, но пока не разобрался как реализовать сам процесс хотя бы отображения у оператора…

    #37096
    manjey73
    Участник

    Смотрите, если у вас есть устройство, которое надо читать по разному, то надо создать два устройства. Одно с опросом в цикле. Второе с опросом с нужным периодом или по команде.
    То есть физическое устройство одно, а в настройках БД их два (три и т.д.)

    По идее только так можно поиграться.
    + разные БД, настроенные по разному.

    Ну еще момент, что там за аварийные флаги? биты? строго в одном месте или плавающие переменные? Тут наверное только скриптами баловаться.
    Например есть 5 регистров аварий и ошибки могут быть 1,3,5 последовательно в регистрах.
    В другом случае 2,3,4 и тоже последовательно. То есть будут занимать с 1-го по 3-й регистры. И значения ошибок разные. В таком варианте только скриптами разруливать в расчетные каналы возникновения этих ошибок.
    В общем надо понимать, что там у вас приборы установок отдают и как, чтобы выбрать путь.

    #37098
    wkdx00
    Участник

    Спасибо, не знал что нужно реализовать 2 устройства… мне надо обдумать, пока это кажется очень кривым и неудобным. Возможно пока не разобрался. Я хотел один канал сделать универсальным и по команде опрашивать им любое из устройств…

    #37100
    manjey73
    Участник

    Нет, скорее всего придется делать каналы по количеству устройств.
    Создание 2-х устройств на примере счетчика.
    Мгновенные значения читаем постоянно
    Энергию раз в час.

    Примерно то же самое получится у вас только для других целей.
    Хотя может быть можно уже иначе, не пробовал

    #37101
    manjey73
    Участник

    Вполне возможно что на 6-й можно одним устройством обойтись, просто разные шаблоны опроса в линии связи создавать и использовать.

    #37108
    Mikhail
    Модератор

    причину вычитать можно только перебором всех аварийных флагов

    Добрый день! Сделайте скриншот из документации, где описаны Модбас-регистры с флагами аварий.

    #37124
    wkdx00
    Участник

    Добрый! Возможно лучше официальная дока: AGC-150_modbus
    Вкладка Input register.
    Скрин: agc-150

    #37125
    manjey73
    Участник

    ну у вас там просто битовые маски вроде. Почему-то повторяется по три раза
    G -P> 1 Вот это вот что означает ? и еще два параметра на том же бите по тому же адресу

    #37126
    manjey73
    Участник

    G I>> 1
    M I>> 1
    BA I>> 1

    Предположу, что в каком-то State регистре надо смотреть к чему относится, типа G, M или BA и делать соотнесение.

    Типа бит поднялся в 1, смотрим где-то что это из 3-х или 2-х и там орем об ошибке.
    Думаю вполне можно скриптами обработать.
    А так, регистры можно читать хоть постоянно, хоть по общей аварии.

    #37132
    wkdx00
    Участник

    Просто контроллер — универсальный и может ставиться на генератор (Generator), сеть (Main) или BTB, соответственно одинаковая адресация modbus

    #37133
    wkdx00
    Участник

    Вот пока не нашел как производить вычитку по флагу аварийного события.

    #37134
    manjey73
    Участник

    а, получается просто биты.
    Так а зачем тогда вычитка по событию? это обычный вариант, настраиваете чтение этого регистра и указываете что это битовая маска, при создании будет создан массив каналов.
    Заносите их в таблицу и переименовываете, что есть что.
    Никаких плавающих ошибок там нет, все по полочкам в битах и можно читать всегда

Просмотр 15 сообщений - с 1 по 15 (из 15 всего)
  • Для ответа в этой теме необходимо авторизоваться.