Сколько данных влезает в один сетевой запрос к PMP20?
Ограничений два, и они разной природы. Первое — длина кадра: максимальная длина одного кадра протокола обмена составляет 256 байт, и в этот размер укладывается вся посылка. Второе — предельное количество элементов в запросе, своё для каждого кода функции.
| Код функции | Действие | Предел за запрос |
|---|---|---|
| 01H | чтение катушек | 2000 |
| 02H | чтение входных катушек | 2000 |
| 03H | чтение регистров хранения | 120 |
| 04H | чтение входных регистров | 120 |
| 05H | запись одной катушки | одна |
| 06H | запись одного регистра | один |
| 0FH | запись нескольких катушек | 2000 |
| 10H | запись нескольких регистров | 120 |
Отсюда практическое правило проектирования: словных данных за один запрос проходит не больше ста двадцати регистров. Нужно двести — делайте два запроса подряд, разнеся их по времени и по разным адресам, а не увеличивайте количество в одной инструкции.
Что происходит при превышении. Ведомое устройство отвечает ошибкой длины, обмен по этому запросу не идёт, а данные в регистрах остаются старыми. Симптом характерный: часть переменных обновляется нормально, а один блок «замёрз» — как раз тот, где количество задано с превышением.
Совет по раскладке данных. Собирайте всё, что нужно верхнему уровню, в непрерывные блоки регистров: сто двадцать регистров одним запросом читаются в разы быстрее, чем те же данные, разбросанные по памяти и вычитываемые десятком коротких запросов. Время на установление соединения и накладные расходы кадра одинаковы и для одного регистра, и для ста двадцати.
Прикреплённая документация
Георгий Жуков
Ведущий инженер