Как получить доступ к COM порту панели оператора и ПЛК CTRL01 Weintek из встроенного Codesys?

29.12.2021
Как получить доступ к COM порту панели оператора и ПЛК CTRL01 Weintek из встроенного Codesys?

 

Согласно документации на встроенный 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 канале.