Передать информацию о шаблоне устройства

Стартовая страница Форумы Понять, как работает ПО Передать информацию о шаблоне устройства

Просмотр 12 сообщений - с 1 по 12 (из 12 всего)
  • Автор
    Записи
  • #38297
    human23
    Участник

    Коллеги, добрый день!
    Подскажите, существует-ли возможность сообщить в канал(статус, имя, какой-нибудь номер, что угодно..) о том, какой шаблон выбран для опроса устройства?

    Есть несколько типов (моделей) устройств модбас, одинаковых по назначению, но с разными картами регистров. Я создал шаблоны для каждого и по коду тега данные прекрасно ложатся в соответствующие каналы.
    Пересчет регистров также отличается в зависимости от устройства, поэтому в одном из каналов каждого устройства я указываю его тип (целое число), тип передается в скрипты.

    В общем, хотелось бы выбирать тип устройства в одном месте (XML шаблон) и не лазить в каналы, чтобы избежать путаницы.

    #38298
    manjey73
    Участник

    Не совсем понятно, что именно хотите и для чего? Чтобы скрипты работали по разному, но при этом были общими для любого устройства ?
    В общем как-то примерами можно?

    По сути вы же сделали канал с цифровым кодом, это можно и использовать.

    #38300
    human23
    Участник

    Есть парк частотных преобразователей разных производителей. Мы запрашиваем с каждого по несколько параметров: признак работы, частота, ток и еще несколько.
    В коммуникаторе созданы шаблоны «чрп_тип1. xml», «чрп_тип2.xml».. Всего пять, но возможно добавятся еще.

    Одни скрипты уже обрабатывают разные устройства, на switch case это легко делается.

    Устройства передают аналоговые параметры с разными множителями, а статусы лежат в разных битах, это учтено в скриптах каналов, но скриптам нужно знать, с какой моделью чрп имеем дело.
    Сейчас, если чрп одного типа заменят на другой, нужно сделать два действия:
    1.Выбрать соответствующий шаблон в коммуникаторе
    2. Выбрать тип устройства в канале (для скриптов)

    При эксплуатации, обязательно будет путаница, поэтому нужно сделать так, чтобы тип устройства задавался в одном месте.
    Уйти от выбора шаблона в коммуникаторе мы все равно не сможем (карты регистров модбас отличаются), а вот сделать так, чтобы при выборе шаблона «чрп_тип1. xml» в канале было 1, а при «чрп_тип2. xml» в канале было 2 кажется вполне вероятным

    • Ответ изменён 1 год, 4 месяца назад пользователем human23.
    #38302
    manjey73
    Участник

    Вы можете сделать перечисление типов, в ячейках будет значение 0,1,2 и т.д.
    Делать расчетным/выходным.
    Чтобы было в одном месте, делаются формулы. Пихаются в каналы с одним номером с одинаковым смещением.
    Ну например у вас в частотниках по 100+ каналов, но не доходят до 200-т например.
    Можно 1000, 2000, 3000 сделать. а 1200, 2200, 3200 это ваше перечисление.
    Каждому можно назначить через формулу значение по умолчанию, на случай перезапусков и т.д.

    как минимум надо понимать ваши формулы, под них же надо подстраиваться.
    Учитывая, что Коммуникатор все равно перезапускать после изменения, не забыть поменять в одном канале значение по умолчанию из перечисления.

    В общем без ваших формул сложно сказать как лучше. Вам тут виднее должно быть.

    #38303
    manjey73
    Участник

    Вы хотите чтобы при смене шаблона сразу поменялось значение в определенном канале?
    Ну для Modbus это скорее всего невозможно. Да и для других драйверов сложно реализуемо. только если в самом устройстве типа ПЧ есть какой-то служебный регистр, где указывается его версия и т.д. и плясать отсюда в скриптах.

    #38305
    a80808
    Участник

    Так там Коммуникатор наверняка придется перезапускать…

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

    Добрый день!

    в одном из каналов каждого устройства я указываю его тип (целое число), тип передается в скрипты.

    Вы всё правильно делаете. На уровне Сервера неизвестно, какой шаблон устройства выбран в Коммуникаторе.

    #38314
    human23
    Участник

    Благодарю за ответы!

    Вы можете сделать перечисление типов, в ячейках будет значение 0,1,2 и т.д.
    Делать расчетным/выходным.
    Чтобы было в одном месте, делаются формулы. Пихаются в каналы с одним номером с одинаковым смещением.
    Ну например у вас в частотниках по 100+ каналов, но не доходят до 200-т например.
    Можно 1000, 2000, 3000 сделать. а 1200, 2200, 3200 это ваше перечисление.
    Каждому можно назначить через формулу значение по умолчанию, на случай перезапусков и т.д.

    Сделано по другому. В разных шаблонах коммуникатора прописаны одинаковые коды тега. При смене шаблона, данные попадают туда-же куда и до этого, дальше в дело вступают скрипты, они достают биты статусов и масштабируют аналоговые значения. Для их работы и нужен тип шаблона. Это отлажено и работает, просто тип ЧРП хотелось получать автоматически.

    Была надежда на статусы каналов:
    На уровне шаблона коммуникатора задаем код тега, уникальный для устройства, а на уровне сервера проверяем статусы каналов всех устройств.
    Почему-то не сработало, статусы каналов оказываются одинаковыми, несмотря на то, что в шаблоне прописан только один.

    #38315
    manjey73
    Участник

    Статусы — это качество, если по простому. Если Коммуникатор отправил данные серверу и тот принял, статус = 1.

    Еще раз, в ЧРП должен быть регистр с его идентификатором, если мы говорим применительно к Modbus. Типа Производитель, номер версии, имя. То, к чему можно привязаться.
    Какой-то id например.
    Иначе вы просто делаете любой канал расчетный, где указываете тип но уже руками, сразу же, при смене устройства и замены шаблона в Коммуникаторе. И используете данный канал для работы скриптов.

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

    > И используете данный канал для работы скриптов.
    +

    #38469
    human23
    Участник

    Нашел решение.
    В каждом шаблоне, на любой неиспользуемый регистр (все равно запрашиваем пачкой, а промежутки между нужными данными всегда есть) вписываем код тега, который не будет повторяться в других шаблонах, например в
    «чрп_тип1.xml» будет параметр с кодом «sign_fcd_type1», а в шаблоне «чрп_тип2.xml» соответственно «sign_fcd_type2».
    Далее, в каналах этих параметров прописываем вызов функций, которые и установят нужный код в канал с типом.
    По итогу, вызывается функция только в одном канале, код которого прописан в активном шаблоне.

    Особенно порадовало, что вызов функции происходит всегда, даже если устройство не на связи.

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

    Интересное решение.

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