Как получить доступ к COM порту панели оператора и ПЛК CTRL01 Weintek из встроенного Codesys?
![Как получить доступ к COM порту панели оператора и ПЛК CTRL01 Weintek из встроенного Codesys? Как получить доступ к COM порту панели оператора и ПЛК CTRL01 Weintek из встроенного Codesys?](https://www.rusavtomatika.com/articles/images/116/Article_codesys_com_port_logo_small_09.png)
Согласно документации на встроенный Codesys доступными из Codesys остаются только Ethernet порт и CAN bus. COM порт остается в "билдеровской части".
Но на практике очень часто COM порт нужен в "вычислительной" части Codesys, а не в панели.
Вопрос: как получить доступ к COM порту в Codesys?
Поясним вопрос: как в программе Codesys получить данные от устройства на COM порту панели оператора Weintek (от устройства, которое использует последовательный интерфейс).
Ответ: нужно в "билдеровской" части создать два устройства: одно Modbus RTU и второе Modbus server.
Рассматривать решение будем на следующем примере: к панели Weintek по RS-485 и Modbus RTU подключен ПЛК. В Codesys этой панели крутится программа, которой нужны данные от этого ПЛК.
Примечание: | Подход для доступа к COM порту из Codesys одинаков для панелей и ПЛК CTR01. |
Схематично это будет выглядеть примерно так, как на рисунке ниже.
Схема доступа к COM порту из Codesys
Алгоритм реализации такой схемы будет следующий:
1) В EasyBuilder Pro создаем новый проект для операторской панели, добавляем устройство типа MODBUS RTU с интерфейсом COM2.
2) Добавляем устройство типа Modbus server.
3) В настройках устройства Modbus server включаем опцию "Шлюз" и настраиваем Таблицы привязки
4) В нашем примере мы создадим простую таблицу: в обоих устройствах адреса регистров начинаются с 1го и всего 10 регистров
5) В окно №10 добавляем несколько графических объектов типа "Числовой" (Numeric) и привязываем их к соответствующим регистрам в устройстве MODBUS RTU
6) В этом же окне добавим некоторую диагностическую информацию по устройству Modbus server
7) Сохраняем проект, компилируем, загружаем в панель. Если подключение по RS-485 сделано корректно, настройки COM порта в обоих устройствах совпадают, то наблюдаем получение данных с устройства Modbus RTU
8) Теперь перейдём в среду разработки Codesys 3.5 и создадим там новый проект
9) Находим нашу панель и делаем подключение к ней активным
10) Создаем простую программу, в которой объявляем массив из 10 элементов типа WORD, которые будут инициализироваться при старте Runtime Codesys
Создаем программу в Codesys
11) Щёлкаем правой кнопкой мыши на узле Device и через контекстное меню добавляем устройство Ethernet
12) Выберем для этого Ethernet устройства соответствующий интерфейс "eth0"
12) Щёлкаем правой кнопкой мыши на узле Ethernet и через контекстное меню добавляем устройство Modbus TCP Master
14) Через контекстное меню переименуем этот объект в "hmi"
15) Щёлкаем правой кнопкой мыши на узле hmi и через контекстное меню добавляем устройство Modbus TCP Slave
16) Через контекстное меню переименуем этот объект в "com_port"
17) Задаим IP адрес и TCP порт нашей панели Weintek с Modbus server (в нашем примере это 192.168.1.184 и 502)
18) Для устройства com_port на вкладке Modbus Slave Channel добавим канал
19) На вкладке ModbusTCPSlaveParameters задаем номер Slave (в нашем примере это 7)
20) На вкладке ModbusTCPSlave I/O Mapping привязываем переменные из программы (в нашем примере это массив array_mb[]) с оответствующему каналу Сhannel0
21) Сохраняем проект (Ctrl+S), делаем Build (F11) и загружаем в панель (Online -> Login Alt+F8)
22) В онлайн наблюдаем значения с нашего ПЛК
Но тут возникает вопрос: если Modbus server ("билдеровский" проект) и "вычислительная" проект Codesys работают в одном устройстве, условно на одной материнской плате, возможно ли их связать без внешних связей через локальную сеть ?
Оказывается можно.
Об этом нам намекает примечание в окне системных настроек проект в EasyBuilder Pro:
Встроенный Codesys должен использовать внутренний IP адрес(10.255.255.1) для доступа к локальному серверу MODBUS TCP/IP.
Схема взаимодействия программы в Codesys с COM портом в таком случае будет примерно следующая:
Вернёмся в наш проект Codesys и сделаем соответствующие изменения.
1) Откроем вкладку General у устройства Ethernet и выберем для него интерфейс vnet1
2) Меняем IP адрес у Slave на 10.255.255.1
3) Сохраняем проект (Ctrl+S), делаем Build (F11) и загружаем в панель (Online -> Login Alt+F8)
4) Отключаем кабель от ethernet порта LAN2 (чтобы исключить возможность общения Codesys с Modbus server по ehernet)
5) В онлайн наблюдаем значения с нашего ПЛК
_
Видео Использование CODESYS в панелях Weintek
Все вопросы и обсуждения - на нашем форуме.
Видео о панелях Weintek на нашем Youtube канале.