Стартовая страница › Форумы › Понять, как работает ПО › Передать информацию о шаблоне устройства
- В этой теме 11 ответов, 4 участника, последнее обновление 1 год, 3 месяца назад сделано
Mikhail.
-
АвторЗаписи
-
05.05.2025 в 19:54 #38297
human23
УчастникКоллеги, добрый день!
Подскажите, существует-ли возможность сообщить в канал(статус, имя, какой-нибудь номер, что угодно..) о том, какой шаблон выбран для опроса устройства?Есть несколько типов (моделей) устройств модбас, одинаковых по назначению, но с разными картами регистров. Я создал шаблоны для каждого и по коду тега данные прекрасно ложатся в соответствующие каналы.
Пересчет регистров также отличается в зависимости от устройства, поэтому в одном из каналов каждого устройства я указываю его тип (целое число), тип передается в скрипты.В общем, хотелось бы выбирать тип устройства в одном месте (XML шаблон) и не лазить в каналы, чтобы избежать путаницы.
05.05.2025 в 22:01 #38298
manjey73УчастникНе совсем понятно, что именно хотите и для чего? Чтобы скрипты работали по разному, но при этом были общими для любого устройства ?
В общем как-то примерами можно?По сути вы же сделали канал с цифровым кодом, это можно и использовать.
06.05.2025 в 07:58 #38300human23
УчастникЕсть парк частотных преобразователей разных производителей. Мы запрашиваем с каждого по несколько параметров: признак работы, частота, ток и еще несколько.
В коммуникаторе созданы шаблоны «чрп_тип1. xml», «чрп_тип2.xml».. Всего пять, но возможно добавятся еще.Одни скрипты уже обрабатывают разные устройства, на switch case это легко делается.
Устройства передают аналоговые параметры с разными множителями, а статусы лежат в разных битах, это учтено в скриптах каналов, но скриптам нужно знать, с какой моделью чрп имеем дело.
Сейчас, если чрп одного типа заменят на другой, нужно сделать два действия:
1.Выбрать соответствующий шаблон в коммуникаторе
2. Выбрать тип устройства в канале (для скриптов)При эксплуатации, обязательно будет путаница, поэтому нужно сделать так, чтобы тип устройства задавался в одном месте.
Уйти от выбора шаблона в коммуникаторе мы все равно не сможем (карты регистров модбас отличаются), а вот сделать так, чтобы при выборе шаблона «чрп_тип1. xml» в канале было 1, а при «чрп_тип2. xml» в канале было 2 кажется вполне вероятным-
Ответ изменён 1 год, 4 месяца назад пользователем
human23.
06.05.2025 в 10:10 #38302
manjey73УчастникВы можете сделать перечисление типов, в ячейках будет значение 0,1,2 и т.д.
Делать расчетным/выходным.
Чтобы было в одном месте, делаются формулы. Пихаются в каналы с одним номером с одинаковым смещением.
Ну например у вас в частотниках по 100+ каналов, но не доходят до 200-т например.
Можно 1000, 2000, 3000 сделать. а 1200, 2200, 3200 это ваше перечисление.
Каждому можно назначить через формулу значение по умолчанию, на случай перезапусков и т.д.как минимум надо понимать ваши формулы, под них же надо подстраиваться.
Учитывая, что Коммуникатор все равно перезапускать после изменения, не забыть поменять в одном канале значение по умолчанию из перечисления.В общем без ваших формул сложно сказать как лучше. Вам тут виднее должно быть.
06.05.2025 в 10:13 #38303
manjey73УчастникВы хотите чтобы при смене шаблона сразу поменялось значение в определенном канале?
Ну для Modbus это скорее всего невозможно. Да и для других драйверов сложно реализуемо. только если в самом устройстве типа ПЧ есть какой-то служебный регистр, где указывается его версия и т.д. и плясать отсюда в скриптах.06.05.2025 в 10:53 #38305
a80808УчастникТак там Коммуникатор наверняка придется перезапускать…
06.05.2025 в 13:57 #38312
MikhailМодераторДобрый день!
в одном из каналов каждого устройства я указываю его тип (целое число), тип передается в скрипты.
Вы всё правильно делаете. На уровне Сервера неизвестно, какой шаблон устройства выбран в Коммуникаторе.
06.05.2025 в 14:27 #38314human23
УчастникБлагодарю за ответы!
Вы можете сделать перечисление типов, в ячейках будет значение 0,1,2 и т.д.
Делать расчетным/выходным.
Чтобы было в одном месте, делаются формулы. Пихаются в каналы с одним номером с одинаковым смещением.
Ну например у вас в частотниках по 100+ каналов, но не доходят до 200-т например.
Можно 1000, 2000, 3000 сделать. а 1200, 2200, 3200 это ваше перечисление.
Каждому можно назначить через формулу значение по умолчанию, на случай перезапусков и т.д.Сделано по другому. В разных шаблонах коммуникатора прописаны одинаковые коды тега. При смене шаблона, данные попадают туда-же куда и до этого, дальше в дело вступают скрипты, они достают биты статусов и масштабируют аналоговые значения. Для их работы и нужен тип шаблона. Это отлажено и работает, просто тип ЧРП хотелось получать автоматически.
Была надежда на статусы каналов:
На уровне шаблона коммуникатора задаем код тега, уникальный для устройства, а на уровне сервера проверяем статусы каналов всех устройств.
Почему-то не сработало, статусы каналов оказываются одинаковыми, несмотря на то, что в шаблоне прописан только один.06.05.2025 в 14:50 #38315
manjey73УчастникСтатусы — это качество, если по простому. Если Коммуникатор отправил данные серверу и тот принял, статус = 1.
Еще раз, в ЧРП должен быть регистр с его идентификатором, если мы говорим применительно к Modbus. Типа Производитель, номер версии, имя. То, к чему можно привязаться.
Какой-то id например.
Иначе вы просто делаете любой канал расчетный, где указываете тип но уже руками, сразу же, при смене устройства и замены шаблона в Коммуникаторе. И используете данный канал для работы скриптов.07.05.2025 в 11:43 #38318
MikhailМодератор> И используете данный канал для работы скриптов.
+24.05.2025 в 07:19 #38469human23
УчастникНашел решение.
В каждом шаблоне, на любой неиспользуемый регистр (все равно запрашиваем пачкой, а промежутки между нужными данными всегда есть) вписываем код тега, который не будет повторяться в других шаблонах, например в
«чрп_тип1.xml» будет параметр с кодом «sign_fcd_type1», а в шаблоне «чрп_тип2.xml» соответственно «sign_fcd_type2».
Далее, в каналах этих параметров прописываем вызов функций, которые и установят нужный код в канал с типом.
По итогу, вызывается функция только в одном канале, код которого прописан в активном шаблоне.Особенно порадовало, что вызов функции происходит всегда, даже если устройство не на связи.
26.05.2025 в 14:20 #38540
MikhailМодераторИнтересное решение.
-
Ответ изменён 1 год, 4 месяца назад пользователем
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.