Код ошибки обмена контроллер кладёт в последний регистр блока параметров сокета. Младшая часть таблицы — от 0 до 50 — описывает ошибки самого сокета: открытия, привязки порта, отправки и приёма. Код — Что означает. 0 — связь в норме. 1 — открывается сокет уже созданного соединения.
Четыре системные катушки описывают состояние сетевой части контроллера целиком — в отличие от флагов сокета, которые относятся к одному соединению. Катушка — Что означает. SM1900 — успешный вход на удалённый сервер. SM1901 — инициализация сети завершена.
X-NET — собственная полевая шина контроллеров PROMPOWER. Её поддерживают все порты PMP20: COM1, COM2, порты плат расширения и Ethernet. Со средой программирования по сети контроллер связывается именно по этому протоколу. Чем X-NET отличается от Modbus на том же проводе: Скорость.
Требование повторяется в руководстве трижды, для трёх разных способов настройки, и означает оно одно и то же: сетевые параметры контроллер читает при инициализации, поэтому подхватывает их только на старте.
В PMP20 есть два встречных механизма: обращение к биту внутри регистра и обращение к группе меркеров как к целому слову. Оба записываются прямо в операнде команды, отдельных инструкций упаковки не требуется. Бит регистра. Запись вида D0.0 означает младший бит регистра D0, D0.15 — старший.
В статическом режиме контроллер принимает только частные адреса — те, что зарезервированы для локальных сетей и не маршрутизируются в интернет. Руководство приводит три допустимых диапазона с указанием ёмкости каждого. Класс — Диапазон — Сколько устройств. A — 10.0.0.0–10.255.255.255 — 16 777 216.
Каналы модулей расширения не продолжают нумерацию процессорного модуля, а лежат в отдельных диапазонах с пятизначными номерами. Правило простое: каждому посадочному месту отведён свой блок из 64 адресов, и номер места входит в номер клеммы. Как распределены блоки: Правые модули расширения.
Действующие сетевые настройки контроллер держит в шести системных регистрах. Каждый адрес разложен на два регистра по два байта, значения читаются в шестнадцатеричном виде. Регистр — Что содержит. SD1905 — первые два байта адреса контроллера. SD1906 — последние два байта адреса контроллера.
Разрядность счётчика определяется не его номером, а командой, но диапазон номеров, в котором доступен 32-битный счёт, ограничен: это C0…C575 среди обычных счётчиков и HC0…HC95 среди энергонезависимых. Остальные номера остаются 16-битными.
Префикс задаёт систему счисления константы. В программе PMP20 используются четыре обозначения, и путаница между ними — типовая причина того, что уставка в контроллере не совпадает с уставкой в проекте. Префикс — Система — Пример. K — десятичная — K100 — это сто.
Да. Основных языков у PMP20 два — список инструкций и лестничная диаграмма, они взаимно преобразуются в среде PROMPOWER PLC Studio. Вдобавок к ним поддерживаются функциональные блоки на языке C: блок пишется отдельно и вызывается из лестничной диаграммы как обычная команда.
Обычно контроллер работает с образом процесса: входы читаются один раз в начале цикла, выходы выдаются в конце. Для случаев, когда ждать конца цикла нельзя, есть две команды немедленного доступа — LDD читает состояние физической клеммы прямо сейчас, OUTD немедленно выдаёт состояние на выходную…
Направление и переполнение контроллер отдаёт готовыми признаками: направление счёта — SM110 для HSC0, SM111 для HSC2 и далее по одному меркеру на счётчик до SM119, переполнение — SM130 для HSC0 и далее до SM139 по той же схеме. Зачем нужен признак направления.
Буферные цифры определяют разрядность ячейки приёмного буфера порта: 0 — восемь бит на ячейку, 1 — шестнадцать. Настройка касается связи в свободном формате, где принятые байты складываются в регистры программы, и от неё зависит, как разложится принятый поток.
Проверено экспертом
19.06.2025
Помогло 91%
2181 просмотр
Ограничения заданы жёстко: номеров сокетов всего 64 (от K0 до K63), соединений с установлением соединения — не больше 32, соединений без установления соединения — тоже не больше 32. Эти три числа и определяют потолок сетевой части проекта. Как это считать на практике.
Умножение двух 32-разрядных чисел даёт 64-разрядный результат, и контроллер размещает его в четырёх подряд идущих регистрах. Команда, записанная как DMUL D0 D2 D10, займёт регистры D10, D11, D12 и D13 — а не два, как ожидают при переносе программы с 16-разрядной арифметики.
Проверено экспертом
02.08.2024
Помогло 91%
3231 просмотр
Режим буфера задаётся в блоке параметров сокета и определяет, как байты посылки раскладываются по регистрам контроллера. Нулевое значение поля означает восьмибитный режим, любое ненулевое — шестнадцатибитный. Восьмибитный режим.
Проверено экспертом
24.07.2026
Помогло 90%
231 просмотр
Контроллер измеряет цикл сам и хранит три значения в системных регистрах: SD010 — текущий цикл сканирования, SD011 — минимальный за время работы, SD012 — максимальный. Единица измерения — микросекунды. Зачем эти три числа нужны на объекте: Текущий цикл показывает нагрузку прямо сейчас.
Команда CFGCR выгружает текущие настройки последовательного порта в блок регистров, откуда их можно вывести на панель оператора или сравнить с ожидаемыми. Это единственный штатный способ узнать из программы, с какими параметрами реально работает порт. Формат записи: CFGCR HD0 K8 K2.
При настройке порта из программы скорость задаётся не числом бит в секунду, а номером из таблицы. Записать в регистр скорости значение 19200 нельзя — контроллер ждёт код 7. Код — Скорость — Код — Скорость. 1 — 300 — 12 — 192000. 2 — 600 — 13 — 256000. 3 — 1200 — 14 — 288000. 4 — 2400 — 15 — 384000.
Проверено экспертом
23.09.2024
Помогло 90%
3441 просмотр
Только через порт RS-232. Порт Ethernet программатора для обновления прошивки контроллера не годится — это ограничение самого прибора, а не настроек. Более того, порт RS-232 нужен и в обычной работе через Ethernet: при копировании программы по сети кабель RS-232 всё равно должен быть подключён, по…
Аналоговые данные лежат не в регистрах D, а в собственных областях: ID — аналоговые входы, QD — аналоговые выходы. Обращаться к ним можно напрямую, как к обычным регистрам, командой пересылки, без команд чтения модуля.
Любой обмен по сети в программе контроллера начинается с инструкции открытия сокета — в среде программирования она называется S_OPEN. Она создаёт задачу связи — соединение по протоколу с установлением соединения либо прослушивание порта по протоколу без установления соединения — и привязывает к…
Точные таймеры, высокоскоростные счётчики и семафоры тоже вынесены в таблицу Modbus, причём у каждого из них два адреса: один в пространстве катушек — состояние, второй в пространстве регистров — значение. Что читаем — Пространство — Начальный адрес — Количество.
Кроме признаков ошибок ввода-вывода и связи, у контроллера есть группа системных сообщений о более глубоких неполадках. Они не всегда останавливают работу, но игнорировать их нельзя. SM450 — проверка ошибок системы. SM451 — прерывание по неисправности аппаратуры.
Сетевой вариант протокола обмена выполняется инструкцией M_TCP. Она работает только тогда, когда контроллер является клиентом, и применяется в паре с инструкциями открытия и закрытия сокета. Каждое срабатывание нарастающего фронта — один запрос и один ответ.
Штатных вариантов два: беспроводный адаптер к COM-порту и коммуникационные модули с выходом в сеть. Оба заменяют кабель между ноутбуком и контроллером, но решают разные задачи. Адаптер Bluetooth.
Свободный формат — режим, в котором контроллер отправляет и принимает произвольную посылку байт в байт, без протокола. Его берут для приборов, которые не понимают Modbus: сканеров штрихкода, весовых терминалов, принтеров этикеток, старых измерителей с фирменной посылкой.
Длина данных, чётность и стоповый бит задаются одним регистром: это не три отдельные настройки, а три битовых поля внутри одного слова. При настройке порта из программы формат кадра записывается в четвёртый регистр блока. Разбор полей: Биты 7 и 6 — стоповый бит.
Проверено экспертом
22.08.2025
Помогло 87%
2151 просмотр
Тайм-аут задаётся в блоке параметров сокета, измеряется десятками миллисекунд и принимает значения от 0 до 65536. Нулевое значение отключает контроль времени: контроллер будет ждать данные бесконечно. Любое ненулевое значение включает контроль. Единица измерения — главный источник ошибок.
Физический интерфейс контроллера — разъём RJ45. Руководство рекомендует кабель типа UTP или STP, ограничивает длину одного отрезка ста метрами и советует применять адаптивный коммутатор, работающий и на мегабитных, и на гигабитных скоростях. Разберём эти три требования по отдельности. Тип кабеля.
Старшая часть таблицы кодов относится уже не к сокету, а к самому обмену по протоколу: это ответы удалённого устройства и ошибки приёма посылки. Читаются они из того же поля кода ошибки в блоке параметров сокета. Код — Что означает. 100 — ошибка приёма. 101 — тайм-аут приёма.
Это базовый набор, который используется практически в каждой программе: постоянные уровни, импульс первого цикла и тактовые генераторы. Все они лежат в области системных меркеров и обновляются самим контроллером. Постоянные и пусковые: SM000 — включён всё время работы контроллера.
Блок занимает девять регистров подряд, начиная с адреса, указанного четвёртым операндом инструкции открытия сокета. Состав полей одинаков, а вот какие из них работают — зависит от роли контроллера в этом соединении.
Для обмена посылками произвольного вида служит протокол свободного сокета — сетевой аналог свободного формата на последовательном порту. Отправка выполняется инструкцией S_SEND, приём — инструкцией S_RCV, и обе работают только в паре с инструкциями открытия и закрытия сокета.
Конфигурация лежит в системных flash-регистрах, а не в пользовательской программе. Поэтому она сохраняется при разряженной батарее и переносится вместе с контроллером, но обновляется только после перезапуска по питанию.
Сетевые настройки задаются той же командой CFGCW, что и параметры последовательного порта, только блок регистров расшифровывается иначе. В регистр HD0 записывается тип сети — значение 4 соответствует Modbus TCP, после чего остальные регистры трактуются как сетевые.
Проверено экспертом
23.03.2026
Помогло 84%
981 просмотр
Самая частая причина — одна и та же катушка управляется в программе разными способами: в одной цепи обычной командой вывода, в другой командой установки или сброса.
Процедура нужна, когда программатор отказывается работать с заблокированным контроллером: пароль сначала считывается с контроллера-донора, у которого он известен, и только после этого программатор может обращаться к защищённым контроллерам с тем же паролем.
Команда CFGCW делает обратное чтению: она берёт блок регистров и применяет его как настройки порта. Формат тот же — CFGCW HD0 K8 K2, где HD0 — начало блока, K8 — число регистров, K2 — номер порта. Назначение регистров при работе по Modbus: Регистр — Что задаёт — Значения.
Проверено экспертом
13.03.2026
Помогло 82%
591 просмотр
Контроллер повторяет запрос дважды. Если и третья попытка не удалась, обмен завершается, признак занятости порта снимается, а причина остаётся в регистре результата — программа должна сама решить, что делать дальше. Как это устроено: Команда обмена запускается по нарастающему фронту условия.
На плате расширения с портом RS-485 предусмотрен встроенный оконечный резистор 120 Ом, включаемый переключателем на самой плате. По умолчанию переключатель находится в положении «выключено». Когда его нужно включать.
Энергонезависимые области вынесены в верхнюю часть адресной таблицы, и все их адреса больше 32767 — то есть в командах обмена они записываются шестнадцатеричной константой с ведущим нулём. Битовые области (катушки): Область — Диапазон по Modbus — Начальный адрес.
Да, и руководство разбирает именно такой пример: после включения питания контроллер поднимает сразу три независимые задачи связи — клиентскую, серверную и работающую без установления соединения. Каждая живёт на своём номере сокета и со своими регистрами. Как это выглядит в примере.
Логика каждого входа задаётся отдельным системным flash-регистром: диапазон с SFD138 по SFD201 описывает признак входа для точек от I00 до I77. Значение 0 означает положительную логику, любое другое — отрицательную. Что даёт инверсия на уровне контроллера.
Годятся оба варианта — прямой кабель через коммутатор и перекрёстный при соединении устройств напрямую. Руководство приводит раскладку жил по контактам для обоих случаев. Прямой кабель.
Контроллер называет номер сбойного модуля сам: при ошибке связи с модулем расширения номер посадочного места лежит в SD401, при ошибке связи с платой BD или модулем ED — в SD402. Это первое, что надо прочитать, прежде чем разбирать сборку. Дальше есть три уровня подробностей: Состояние модулей.
Когда контроллер выступает ведомым, а мастером является панель, диспетчерская станция или шлюз, разбор идёт сверху вниз — от физики к адресам. Порядок такой. Линия и адреса. Команда ping до контроллера должна давать «0% потерь».
Это блок эксплуатационной статистики в энергонезависимых системных регистрах: время работы контроллера, поведение при пропадании питания и износ flash-памяти. Данные ведёт сам контроллер, программе остаётся их прочитать. Что где лежит: HSD50 — время записи данных после сбоя питания, единица 1 мс.
Проверено экспертом
01.08.2025
Помогло 76%
1161 просмотр
Оба режима передают одни и те же запросы, но по-разному упаковывают их в линию. Режим задаётся в настройках порта: значение 0 — RTU, значение 128 — ASCII. У всех устройств линии он должен совпадать. RTU — двоичный режим.