Если вы думали, что управлять промышленным контроллером — это что-то сверхсложное, как освоить язык акул (WireShark, если что), то эта статья для вас. Мы погрузимся в мир Beckhoff CX8080, узнаем, как одновременно использовать Device 1 и Device 2, что за зверь такой Modbus и почему выбор правильной библиотеки — это необходимость. Если хотите понять, как за пару кликов найти ваш контроллер в сети и написать простую программу на TwinCAT, оставайтесь с нами!

Что такое Beckhoff CX8080 и можно ли использовать сразу два девайса?

Beckhoff CX8080 — это промышленный контроллер (PLC), который умеет общаться с разными устройствами и протоколами. В вашем распоряжении есть:

  • Device 1 (CX8000-BK) — для работы с аналоговыми и дискретными входами/выходами
  • Device 2 (COM Port) — для общения по Modbus через последовательный порт (RS-232/RS-485)

Вопрос: можно ли их использовать одновременно? Ответ — да, но есть нюансы.

Пользователь Arist007 с форума пояснил, что хотел подключить по Device 1 датчики, а по Device 2 общаться с Modbus-устройствами. Однако программа упрямо "писала" данные только через Device 1, игнорируя Device 2, несмотря на правильную настройку привязки переменных в TwinCAT System Manager.

В чем причина? Правильный выбор библиотеки!

Основная ошибка — использование старой библиотеки *.lb6, которая подходит для устаревших версий PLC. Для современных Beckhoff нужны библиотеки формата *.lib.

Вместо ModbusRtuMaster_KL6x22B следует использовать ModbusRtuMaster_PcCOM. Это функциональный блок, который правильно работает с COM портом контроллера.

Так что если ваш Modbus не читает данные с устройств, проверьте библиотеку — это почти всегда спасает!

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

Modbus — это классический протокол для обмена данными в автоматизации. Beckhoff CX8080 поддерживает Modbus через свой COM порт с разъемом DB9, который может работать в режиме RS-232 или RS-485.

Параметр Описание
Порт COM порт контроллера (DB9 разъем)
Протокол Modbus RTU (последовательный), Modbus TCP
Привязка в PLC Переменные в TwinCAT System Manager привязываются к Device 2 (COM Port)
Необходимость Использовать правильный блок из актуальной библиотеки

Важно: иногда бывает, что Modbus не отвечает, хотя устройства на линии рабочие (проверено на ПК). Тогда дело либо в библиотеке, либо в неправильной настройке программы.

Если хотите управлять или мониторить PLC по Ethernet, то используется протокол TwinCAT ADS поверх UDP/TCP.

Broadcast Search — это метод поиска всех контроллеров в локальной сети:

  • Отправляется широковещательный пакет по UDP (порт 48899)
  • Все устройства, получившие пакет, отвечают в строго заданном формате
  • Работает только в локальной подсети

Для удобства программирования есть метод BroadcastSearchAsync в библиотеке AdsRemote. Он асинхронный и принимает:

  • широковещательный адрес подсети
  • таймаут поиска (например, 100 мс для локальной сети)

Чтобы узнать широковещательный адрес, используют вспомогательный класс IPHelper, который выдает локальные IP и вычисляет широковещательный адрес.

Так что не надо лазить в темные дебри сетей — есть уже готовые помощники!

Работа с AMS-роутером: добавление маршрутов

Контроллер Beckhoff имеет таблицу AMS-роутера — своего рода адресную книгу маршрутизации. Чтобы добавить новый маршрут:

public async Task<bool> AddRecordAsync(
    IPAddress localhost,
    IPAddress remoteHost,
    AmsNetId localAmsNetId,
    string localIpName = null,
    string name = null,
    string login = "Administrator",
    string password = "1",
    bool isTemporaryRoute = false,
    int timeout = 10000,
    int adsUdpPort = Request.DEFAULT_UDP_PORT)
  • localIpName — имя локального компьютера или IP
  • name — имя записи (по умолчанию имя машины)
  • login/password — учетные данные с правами администратора
  • isTemporaryRoute — временный маршрут (редко нужен)

Таблицу можно посмотреть в реестре Windows (HKLM) по пути SOFTWARE\Beckhoff\TwinCAT\Remote.

Программирование в TwinCAT: от поиска контроллера до запуска программы

Программирование PLC в Beckhoff строится в среде TwinCAT.

  1. Поиск устройства
    В TwinCAT System Manager используйте "Search (Ethernet)" и затем "Broadcast Search" — найдете свой контроллер.

  2. Получение списка устройств ввода/вывода
    Через меню I/O → Configuration → I/O Devices → Scan Devices.

  3. Создание программы в TwinCAT PLC Control
    Выберите устройство CX (ARM) под вашу модель, создайте главный программный блок.

  4. Объявление переменных с адресами
    Важно: для связи с физическими входами/выходами нужно прописать адреса, например:

plaintext In01 : BOOL := %IX0.1; // Вход 1, бит 1 Out01 : BOOL := %QX0.3; // Выход 3, бит 3

  1. Пример простой логики на языке лестничной диаграммы (LD):

Если вход In01 замкнут — включить выход Out01, иначе выключить.

  1. Привязка каналов к переменным
    В System Manager выбираете канал → Linked to → выбираете переменную.

  2. Загрузка и запуск программы
    В PLC Control выберите Online → Choose Runtime System → Login → Run.

Если все настроено верно, программа начнет работать и выходы PLC будут управляться согласно логике.


Таблица сравнения ключевых моментов

Вопрос Решение / Факт
Использовать два устройства Да, но с правильной библиотекой и настройкой
Настройка Modbus Использовать ModbusRtuMaster_PcCOM из новых библиотек
Поиск контроллера по Ethernet Использовать Broadcast Search с UDP 48899
Программирование PLC TwinCAT System Manager + TwinCAT PLC Control
Привязка переменных Объявлять с адресами %IX, %QX
Работа с AMS-роутером Добавлять маршруты через AddRecordAsync

Часто задаваемые вопросы (FAQ)

Можно ли одновременно использовать Device 1 и Device 2 на Beckhoff CX8080?
Да, но для Modbus на Device 2 нужно использовать правильную библиотеку ModbusRtuMaster_PcCOM, иначе данные не будут считываться.

Что делать, если Modbus не читает данные?
Проверьте, что используете актуальную библиотеку (*.lib), а не устаревшую (*.lb6), и правильно привязали переменные к COM порту.

Как найти контроллер в сети?
Применяйте Broadcast Search через TwinCAT или вызывайте метод BroadcastSearchAsync из библиотеки AdsRemote.

Зачем нужны адреса переменных в формате %IX0.1?
Это магический код, который указывает конкретный бит входа или выхода физического устройства для связи с программой.

Можно ли удаленно конфигурировать контроллер по Ethernet?
Да, но только для настройки и мониторинга, не для управления процессами в реальном времени.


Чек-лист для успешного запуска Beckhoff CX8080 с Modbus и двумя устройствами

  • [ ] Установлена последняя версия TwinCAT и соответствующие библиотеки .lib
  • [ ] Правильно настроен COM порт (Device 2) и Ethernet (Device 1)
  • [ ] Переменные объявлены с адресами в PLC программе
  • [ ] Используется ModbusRtuMaster_PcCOM для Modbus связи
  • [ ] В системе правильно настроены привязки переменных к портам
  • [ ] Выполнен поиск контроллера в сети через Broadcast Search
  • [ ] Добавлены необходимые записи в таблицу AMS-роутера при необходимости
  • [ ] Программа загружена и запущена через TwinCAT PLC Control

Советы от экспертов

  • Не бойтесь экспериментов с библиотеками, но обязательно используйте актуальные версии.
  • Изучайте мануалы Beckhoff, особенно документы типа "BECKHOFF_Modbus_Step-by-step".
  • Для сетевых настроек всегда имейте под рукой инструменты, которые показывают локальные и широковещательные адреса.
  • Локальная таблица AMS-роутера — ваш лучший друг при решении проблем с маршрутизацией.
  • Не пренебрегайте форумами и сообществами — там часто можно найти решение, которое экономит часы и дни работы.

Путь освоения Beckhoff CX8080 — это немного шаманства, немного инженерии и немножко магии программирования. Но с правильными инструментами и подходом вы легко подружитесь с этим мощным устройством и научитесь использовать сразу несколько девайсов для реализации любых задач автоматизации. Удачи!