Стартовая страница › Форумы › Понять, как работает ПО › Настройка Входных каналов
- В этой теме 11 ответов, 3 участника, последнее обновление 5 лет, 2 месяца назад сделано Mikhail.
-
АвторСообщения
-
23.01.2019 в 16:19 #11001parti3anУчастник
Господа я тут, срипя пытаюсь освоить R S и столкнулся с вопросами кое какие сам разобрался а другие не могу понять как решить. Протокол M-bus TCP-IP, создал шаблон все вроде понятно но запутался вот в чем у меня все Переменные HOLDING REGISTERS,
1- 2 байта со знаком это какой тип данных?2- Как считывать тип данных — бит регистр 65,66, бит от 2 до 5 и от 0-7,9 (фактически это дискретные сигналы) желательно получить на выходе все по отдельности с значениями 0-1. или как это в Выходных каналах правильно прописать?
3- 2 байта без знака регистр возвращает значение от 0-33, так как вот этим 33 переменым присвоить буквенное обозначение (это все статусы), текст перечислением не получился так как не больше 100 символов в строке, да и если можно как к ним еще цвета текста применить к примеру Тест системы синий, Работа — зеленая, Аварийные сообщения красные? Хелп Ми Плиззз!!!23.01.2019 в 16:48 #11004MikhailМодераторНапишите в эту тему, автор драйвера увидит уведомление и, надеюсь, ответит.
Или у Вас не M-Bus, а Modbus?
23.01.2019 в 17:38 #11005manjey73УчастникЯвно Modbus так как во втором нет понятия регистров…
23.01.2019 в 18:32 #11006parti3anУчастникНу да вот до чего лень и невнимательность приводит, ModBus у меня.
24.01.2019 в 16:16 #11008MikhailМодератор2 байта со знаком это какой тип данных?
short
24.01.2019 в 16:17 #11009MikhailМодераторКак считывать тип данных — бит регистр 65,66, бит от 2 до 5 и от 0-7,9
Нужно считывать весь регистр целиком (скорее всего, 2 байта без знака, ushort). Затем создавать отдельные входные каналы дорасчётного типа, в которых с помощью формул извлекать нужные биты.
24.01.2019 в 16:23 #11010MikhailМодератор2 байта без знака регистр возвращает значение от 0-33, так как вот этим 33 переменым присвоить буквенное обозначение
Для входного канала нужно использовать формат «Текст Unicode». Написать формулу в таблице Формулы, которая будет возвращать строку. Затем в формуле входного канала указать EncodeUnicode(MyFunc())
как к ним еще цвета текста применить к примеру Тест системы синий, Работа — зеленая, Аварийные сообщения красные?
В таблицы Типы событий создайте свои статусы с нужными цветами. Напишите свою формулу для вычисления статуса в зависимости от значения входного канала. В формуле для входного канала будет
EncodeUnicode(MyFunc()); MyStat()По мере продвижения, задавайте вопросы.
24.01.2019 в 16:24 #11011MikhailМодераторEncodeUnicode правда максимум отображает 4 русских символа.
28.01.2019 в 13:03 #11012parti3anУчастникЯ правильно понял как работать с таблицей Тип событий, значение канала соответствует номеру в таблице, state это только цвет или надпись тоже будет отображаться?
28.01.2019 в 19:15 #11013MikhailМодераторДанные входных каналов состоят из двух полей: значение и статус. Значение — всегда вещественное число, а статус — целое. Таблица Тип событий описывает поле Статус для входных каналов и влияет в частности на цвет вывода данных.
Отображать число или текст — задаётся полем Формат в таблице входных каналов. При отображении текста, текст получается декодированием числового значения.28.01.2019 в 22:10 #11014parti3anУчастникспасибо еще более запутался 🙂 что то понял что то нет, нет под рукой скады пишу в дороге как понял, можно сделать так. беру канал у него есть значение к примеру 23 это значение должно соответствовать тексту #авария датчика номр 8# для того чтобы не совпадали значения от 0-х я значение множу к примеру на 100 получаю 2300, так вот куда эту 2300 мне с чем сравнивать с таблицей событий или в статусе я должен указать 2300 циферкой, сори не могу понять где что с чем сравнивает.Я уже думал картинок с надписями наделать и их по условию сравнивать, но не уверен что сработает. С условиями еще не особо разобрался там есть именно = или только больше меньше и 1 и 0.
29.01.2019 в 17:23 #11018MikhailМодераторВ таблице формул добавьте что-то типа:
function MyFunc() { switch ((int)CnlVal) { case 0: return "Зн.1"; case 1: return "Зн.2"; default: return "????"; } }
Затем в формуле для входного канала напишите MyFunc() и задайте ему формат Текст Unicode. Макс. длина строки для русскиго текста — 4 символа.
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.