понедельник, 20 марта 2023 г.

Настройка связи TCP между контроллерами Siemens и Mitsubishi

Задача по настройке связи между контроллерами по TCP/IP разбивается, по сути, на 2 подзадачи:

1. Настройка TCP соединения на первом контроллере
2. Настройка TCP соединения на втором контроллере

Настройка TCP соединения для контроллеров SIEMENS в TIA Portal

Данная инструкция написана на основе видеоинструкции https://www.youtube.com/watch?v=iO6BftFtias по настройке TCP/IP коммуникации с терминалом Windows

1. Первым шагом добавляем новый контроллер в новый проект, где настраиваем его IP адрес и где можно сразу настроить Clock memory для активации тактового меркера. Если проект уже существует, то этот шаг нужно пропустить



2. Добавляем в проект новый функциональный блок, который можно назвать TCP_COMM 



3. Открываем этот блок, и добавляем в него функциональный блок TCON, при этом автоматически будет предложено создать экземпляр блока данных для него, как показано на скриншоте ниже 



4. В TIA Portal этот блок очень удобно настраивается если нажать на специальную кнопку в верхнем правом углу блока. В конфигурации проставляется тип соединения, IP адрес партнера (то есть сервера, так как наш контроллер будет создавать активное соединение), номера портов клиента и сервера, автоматически назначается ID для соединения, и проставляется название блока данных с этими всеми настройками, который создается автоматически 



5. Т.к. все это создается внутри ранее созданного функционального блока TCP_COMM, то удобно прописать используемые переменные сразу внутри этого же блока. Делается это в верхней части рабочего окна. Очень удобно что на свои места эти переменные можно поставить простым переносом из верхней части на входы и выходы блока 



6. Теперь если добавить функциональный блок FB1 ‘TCP_COMM’ в циклически вызываемый блок OB1, то автоматически создастся блок данных (в данном случае DB3) для FB1. 



7. Аналогичным образом добавляем в FB1 функциональные блоки TSEND (передача данных) и TRCV (прием данных), а на входа-выхода добавляем переменные из новых структур для соответствующих блоков



8. На вход DATA подается ссылка из блока данных, который создается отдельно структурой в виде массива байтов, например.



9. Длина передаваемых данных в байтах на вход LEN может указываться десятеричным числом, либо храниться в ячейке памяти типа int. Чтобы узнать, что и как работает, лучше всего вызвать справку по блоку, для чего нужно выделить блок и нажать кнопку F1 на клавиатуре. На скрине также показано что для задания длины получаемых данных нужно нажать на треугольник, чтобы раскрыть блок TRCV. 



10. Для активации соединения, приема и передачи, можно добавить в первый нетворк такую простейшую логику. Передача происходит по переднему фронту сигнала TSEND.REQ, именно поэтому удобно использовать тактовый импульс чтобы передача была периодической.



11. Для проверки соединения запускается TCP терминал в качестве сервера, включается прослушивание заданного порта (2000), в программе активируется бит подключения, и биты приема/передачи. Как видно на скрине, данные успешно передаются и принимаются.



Как видно, даже в таком виде коммуникация будет работать, но более грамотное использование предполагает возможность разъединения при помощи блока TDISCON, а также обработку ошибок, и что важно передачу данных только в те моменты пока она не занята процессом (то есть нет сигнала TSEND.BUSY). Например из инструкции от самого Cименса для STEP7 (https://support.industry.siemens.com/cs/document/29737950/how-do-you-program-the-communication-blocks-fb63-tsend-fb64-trcv-fb65-tcon-and-fb66-tdiscon-in-order-to-use-the-tcp-protocol-for-data-exchange-by-means-of-the-integrated-profinet-interface-of-an-s7-300-s7-400-cpu-?dti=0&lc=en-WW) запрос на передачу и обработка ошибки формируются по такой логике:



Вообще в STEP7 программа коммуникации строится так же, как и в TIA, но в STEP7 блок данных с настройками коммуникации не создается автоматически, его нужно создавать вручную, либо использовать специальную утилиту, как сказано на сайте Сименса, однако скачать ее без VPN не получится. Вот такой структуры автоматически (как написано в 4 шаге) создается блок данных для соединения в TIA: 



Точно такая же структура и для блока данных в STEP7. Больше об этой структуре можно узнать из справки блока TCON. Если поменять connection_type на 19, то будет подключение по протоколу UDP, а вместе с ним используются блоки TUSEND и TURCV для передачи и приема данных


Настройка связи для контроллеров Mitsubishi в Melsoft GX Works2

Инструкция создана на основе мануала по использованию встроенного Ethernet порта (QnUCPU Communication via Built-In Ethernet Port), стр 77

1. Создаем новый проект и добавляем в него наш контроллер



2. Открываем проект и изменяем параметры PLC в настройка встроенного порта Ethernet. При этом не забыть настроить Активное или Пассивное соединение. Т.к. Сименс настроен в качестве клиента, то есть он запрашивает соединение, то правильнее будет настроить Mitsubishi в fullpassive. Также добавляем новый Task и новый программный блок (через контекстное меню, правой кнопкой)



3. Добавить в этот программный блок логику согласно инструкции от Mitsubishi для настройки коммуникации (для пассивного подключения), для чего находим в разделе функций Socket Communication блок SP_SOCSND и добавляем его в программу.

Myconn – название соединения, может быть любым. K2 – это номер соединения, второй на скрине выше. SD1282 – специальный регистр статуса подключения, где бит 0 для первого подключения, а бит 1 для второго, как у нас. В области памяти D3000 и D3001 сохраняется статус выполнения блока. D300 – данные для пересылки, где первым словом указывается длина посылаемых данных в байтах (на скрине их 4, соответственно 4 цифры приняты в терминале) M300, M301 – после каждого посылания сигнала формируются на один скан, если выполнено нормально или с ошибкой. По сути, этот блок особо и не нужен, будет и без него работать.

Аналогичные настройки и для блока приема данных. Принятые данные сохраняются в области памяти D500 и далее (в данном случае), где опять же D500 – это длина принятых данных, а D501 и далее это сами данные



4. Прогрузка контроллера осуществляется через STOP, т.к. меняются параметры. Возможно после прогрузки контроллер нужно отключить и включить по питанию, чтобы активировать коммуникацию.

Комментариев нет:

Отправить комментарий