Доброго дня.
Хотел уточнить некоторые моменты по опросу панелью СП3xx-Р регистров Slave устройств.
Из инструкции: При опросе регистров (3x и 4x) панель создает групповые запросы, если разрыв между опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x05 будут считаны одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Т.е. получается, если у меня 3 экрана с последовательной нумерацией регистров допустим по 10 WORD регистров на каждом (всего 30 регистров), то находясь допустим на первом экране опрашиваться будут все 30 регистров?
Не может.
(Из технического описания): Панель автоматически формирует групповые запросы к slave-устройствам. Если в
групповой запрос входит номер регистра, который отсутствует в slave-устройстве (что характерно
для устройств с «рваными» или формируемыми пользователем картами регистров), то в ответ
вместо данных приходит сообщение с кодом ошибки. Максимальное число опрашиваемых
регистров в одном групповом запросе – 16.
В моем случае были рванные регистры. Перелопатил все карты регистров, проблема ушла но вопросы остались.
Выстроил на экране все в ряд и получил новую проблему. Данные DWORD перестали отображаться. При подсчете выяснилось, что крайний регистр оказывается 17-ым, соответственно при опросе дробится элемент DWORD и рушит весь опрос. Пришлось сделать отмену группового опроса (Из технического описания): Во время опроса регистров (3x и 4x) панель создает групповые запросы, если разрыв между
опрашиваемыми регистрами не превышает 4. Иными словами, регистры 4x0 и 4x5 будут считаны
одним групповым запросом (6 регистров с 4x0), а 4x0 и 4x6 – двумя одиночными.
Чтобы отключить автоформирование групповых запросов следует в настройках каждого из
элементов, участвующих в опросе, поставить галочку Дин. адр. и указать регистр, который не
используется панелью (т. е. его значение всегда равно 0).
После этих манипуляций все заработало, но танцы с бубном еще те.
Решил описать ситуацию, может кому пригодится.
Но иногда панель МОЖЕТ формировать групповые запросы к слейву с количеством регистров больше чем 16.
Это тот случай, когда на экране есть таблица
Таблицы в группировке с другими элементами экрана не участвуют. Для таблиц всегда будут свои групповые(если столбцов несколько) или одиночные(если только один столбец) запросы к слейву.
Таблица представлена массивом структур.
Формат структуры и количество регистров в ней определяется количество столбцов и типом данных в каждом столбце.
Таблицы читаются построчно. Причем второе правило "максимальное число регистров в групповой команде чтения не может превышать 16" на таблицы не распространяется, в одной группе будет столько регистров, сколько нужно для одной строки, хоть 125!
Запросы на чтение строк разнесены по разным циклам выполнения программы.
В каждом цикле читаются все регистры только одной строки
Например
Дисплей и таблица 1 столбец 3 строки
Захват-1.png Захват-2.png
1. чтение 4х0 (дисплей)
2. чтение 4х2 (первая строка таблицы)
3. чтение 4х0 (дисплей)
4. чтение 4х3 (вторая строка таблицы)
5. чтение 4х0 (дисплей)
6. чтение 4х4 (третья строка таблицы)
и т.д.
Дисплей и таблица 10 столбцов DWORD 3 строки
Захват-6.png
1. чтение 4х0 (дисплей)
2. чтение группы 4х2, 4х3...4х21 (первая строка таблицы 20 регистров в запросе)
3. чтение 4х0 (дисплей)
4. чтение группы 4х22, 4х23...4х41 (вторая строка таблицы 20 регистров в запросе)
5. чтение 4х0 (дисплей)
6. чтение группы 4х42, 4х43...4х61 (третья строка таблицы 20 регистров в запросе)
и т.д.
Последний раз редактировалось petera; 03.04.2025 в 11:11.
Мой канал на ютубе
https://www.youtube.com/c/ПетрАртюков
Мой канал на РУТУБЕ
https://rutube.ru/channel/23641433/
Библиотека ГМ для СП300
https://disk.yandex.com/d/gHLMhLi8x1_HBg
Вопрос выше не просто из любопытства.
Есть сборка, панель мастер и 4 слейва ПР103, сборка по ТСР. Так вот, на каждом слейве от 3 до 10 термопреобразователей. При отключенных датчиках все работает быстро без тормозов, просто шикарно. Но стоит начать подключать датчики панель начинает дико тормозить. Самое интересное что тормозит даже на окнах где нет регистров опрашиваемых датчиков. Складывается впечатление что регистры привязанные к аналоговым входам опрашиваются как то постоянно. Ошибка одна, по тайм ауту, добавление времени тайм аута не помогает.В проекте нет отключения последовательного опроса, внутренние регистры панели используются только на опрос ошибок и отключение слейв устройств.