Стартовая страница › Форумы › Понять, как работает ПО › Перевод переменных чисел в слова на схеме
- В этой теме 9 ответов, 3 участника, последнее обновление 1 год, 1 месяц назад сделано
Vitaly_Zhidkov.
-
АвторЗаписи
-
16.06.2025 в 09:20 #38905
Vitaly_Zhidkov
УчастникОт контроллера по протоколу Modbus или SNMP приходят числовые параметры типа integer, для которых значению параметра соответствует какое-то слово, пояснение.
Например, регистр «Режим работы двигателя». Приходит значение 0 — двигатель остановлен, 1 — двигатель запускается, 2 — нормальная работа двигателя, 3 — двигатель останавливается, 4 — авария двигателя, 5 — ремонт двигателя.
Каким образом можно отображать на схеме вместо числа 0…5 соответствующие слова на русском языке?
Для этого можно использовать какой-то инструмент графического редактора или только через создание дорасчёта?
Приведите, пожалуйста, пример создания дорасчёта (скрипта, формулы).16.06.2025 в 09:32 #38906
a80808УчастникНе надо никаких дорасчетов.
В канале, где собираются эти значения, ставите «Формат чисел» = «Текст перечисления», в таблице «Размерности» добавляете строку «Двигатель остановлен; Двигатель запускается; Нормальная работа двигателя; Двигатель останавливается; Авария двигателя; Ремонт двигателя» и указываете эту размерность в поле «Размерности» канала. На схеме будет выводиться нужный текст16.06.2025 в 11:36 #38909Vitaly_Zhidkov
УчастникПрименил указанный способ. Создал свой формат в таблице Форматы. Добавил в канал. Всё работает.
16.06.2025 в 11:50 #38910Vitaly_Zhidkov
УчастникЕщё один вопрос по этой же теме.
От частотного преобразователя передаются данные по одному из регистров.
И здесь значения, которые соответствуют положению частотного преобразователя, могут быть разными.
1 — Запущен.
3 — Ожидание.
0, 4, 1280, 1344, 1368 — Остановлен.
1347 — Вперёд.Как в этом случае отображать на схеме вместо числа соответствующие слова на русском языке?
Наверное, можно создать канал с дорасчётом, где переменной на выходе будут соответствовать значения:
0, 4, 1280, 1344, 1368 —> 0
1 —> 1
2 —> 2
3 —> 3
1347 —> 4И потом уже использовать этот канал с дорасчётом, как в предыдущем случае.
Приведите, пожалуйста, пример создания дорасчёта (скрипта, формулы) для этого случая.
16.06.2025 в 11:53 #38911
a80808УчастникИдея верная. Если не срочно, скрипт немного позже. Если кто другой не поможет )))
16.06.2025 в 11:59 #38912
manjey73УчастникВам нужно сделать через case (выкладывали формулы) и привести в последовательности
А далее все точно так же.Если бы шаг был меньше, то каждый символ
;удаляет из перечисления число.
Например у вас нет никогда нуля, вы можете в начале перечисления поставить пустой; Тут 1; Тут 2; ; Тут 4Но как-то набивать 1344 точек с запятой это жесть 🙂
16.06.2025 в 12:00 #38913
manjey73УчастникМожно не дорасчетный, а там же во входной. Просто формула через case будет возвращать последовательные цифры.
16.06.2025 в 12:03 #38914
manjey73Участник16.06.2025 в 15:17 #38946Vitaly_Zhidkov
УчастникПо приведенному примеру написал скрипт
// Устанавливает значения для перечисления для статуса ПЧ.
public double StatusPCh(double val)
{
switch ((int)val)
{
case 0: return 0; // Остановлен
case 1: return 1; // Запущен
case 2: return 2; // Значение не используется
case 3: return 3; // Ожидание
case 4: return 0; // Остановлен
case 1280: return 0; // Остановлен
case 1344: return 0; // Остановлен
case 1347: return 4; // Вперёд
case 1368: return 0; // Остановлен
default: return 0;
}
}16.06.2025 в 15:20 #38947Vitaly_Zhidkov
УчастникСоздал канал с типом дорасчёт.
Написал в него входную формулу StatusPCh(Val(10051)); Stat(10051).
Создал и добавил в канал формат, как в примере с двигателем.
Всё работает. -
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.