@a63826ndrew
Студент, новичок в Python

Как правильно читать карты регистров Modbus?

Здравствуйте!
Я хотел бы разобраться в одном вопросе - как правильно понимать карты регистров Modbus, которые находятся в руководствах пользователя?
Объясню поподробнее что я хочу узнать:
Вот у меня есть программа на языке C#, и там есть вот такой вот кусок:
int[] registres1 = modClient.ReadHoldingRegisters(256, 15);
                for (int i = 0; i < registres1.Length; i++)
                {
                    lstData_2.Items.Add(registres1[i]); 
                }

И казалось бы, кусок рабочий, он выводит значения, но я хочу, например вывести значение из конкретной ячейки, для примера возьму небольшой кусок карты регистров панели оператора "ОВЕН СП307":
644814bea59bb107755181.png
И вот, если в представленном куске кода я получал значения из случайных ячеек, то я хочу получать значения из конкретных ячеек, а как это сделать я не знаю, вот на фотографии есть регистр с номером "PSB0", и я хочу взять из него значение, как мне понять что нужно написать вместо 256 в коде, чтобы я считал именно ячейку "PSB0", а не какую то другую?
Или может быть мне нужно в корне изменить код, чтобы необходимая начальная ячейка задавалась в том виде, каком она в карте регистров прописана, и также будет задаваться количество ячеек, которое нужно прочитать?
Если же все-таки необходимо менять код, то я буду благодарен показательному примеру, чтобы я понял как это надо делать со стороны кода.
Если же можно каким-то образом задать нужную ячейку, если можно интерпретировать "PSB0" в обычное число то я хотел бы тоже узнать как это можно сделать.
Заранее спасибо.
  • Вопрос задан
  • 547 просмотров
Решения вопроса 1
Регистры modbus разделяются на 4 типа:
1. Регистры Discrete (1x) - битовые данные только для чтения.
2. Регистры Coil (2x) - битовые данные чтения/записи. В терминах панели ОВЕН - регистры PSB.
3. Регистры Input (3x) - 16-битные регистры только для чтения
4. Регистры Holding (4x) - 16-битные регистры чтения/записи. В терминах панели ОВЕН - регистры PSW.

Согласно документации на панель ОВЕН PSB0 - это регистр с адресом 256 типа Coil.
Соответственно, для чтения значения регистра PSB0 вам надо вызывать функцию ReadCoils для адреса 256 ( подробнее смотрите документацию к вашей библиотеки модбас).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы