Задать вопрос
@a63826ndrew
Студент, новичок в Python

Как подправить вывод данных при работе с ПЛК?

Здравствуйте!
Работаю с панелью оператора ОВЕН СП307, получаю данные из системных регистром Modbus, и есть несколько моментов, которые не могу решить:
1. Некоторые данные выводятся возможно некорректно, может я их не правильно обрабатываю, но выглядит по итогу вот так:
645d409d28c20681841307.png
Октеты маски подсети могут принимать значения от 0 до 255, а у меня выходит 8227, и таких примеров много, что в таком случае можно сделать?
Если что, код для сбора информации выглядит вот так:
int[] reg1_PSW_PO = modClient.ReadHoldingRegisters(256, 120);
Reg_PSW_PO.Items.Add("Номер текущего экрана:" + reg1_PSW_PO[1]);

Первой строчкой беру из определенных регистров данные, а второй добавляю их в listbox
2. Некоторые регистры я не знаю как считывать, например вот такие:
645d43a23a3ed617409955.png
645d43c1152fd479553333.png
645d43e6eb505931601350.png
Как с ним работать в таком случае?
Библиотека, с которой работаю - EasyModbus.
Заранее спасибо.
  • Вопрос задан
  • 154 просмотра
Подписаться 2 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
@AlexSku
не буду отвечать из-за модератора
Если в регистре надо изменить биты (после точки это номер бита), то используйте логические операции с маской:
ИЛИ - для установки,
И (маска инверсная) - для сброса
исключающая ИЛИ - для смены на противоположное
Ответ написан
1. Регистр modbus - это 16 бит (2 байта). Если у вас значение занимает 1 байт, то смотрите порядок байт в регистре. Вообще, заниматься отладкой правильности чтения регистров modbus лучше с помощью какого-нибудь клиента, например modscan.
2. Читаете значение регистра и потом берете нужный бит из этого значения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы