В последних статьях мы обсуждали, как установить соединение между двумя ПЛК с помощью блоков TCON и TDISCON и как перемещать данные между ними с помощью блоков TSEND и TRCV.
Передача данных между системами ПЛК
В этой статье мы изучим новую инструкцию, которую можно использовать для связи и передачи данных между системами ПЛК с помощью блоков TSEND_C и TRCV_C.
TSEND_C
Инструкция TSEND_C — это инструкция TIA Portal, которая используется для настройки и установления соединения между двумя ПЛК. После настройки и установки соединения оно будет автоматически поддерживаться и контролироваться ПЛК.
Инструкция TSEND_C выполняется асинхронно и имеет следующие функции:
- Настройка и установление коммуникационного соединения, аналогичного блоку TCON.
- Отправка данных через существующее коммуникационное соединение, аналогичное блоку TSEND.
- Завершение или сброс коммуникационного соединения, аналогично TDISCON.
Следовательно, название «компактный» дается TSEND_C, поскольку он действует как более 3 блоков одновременно.
TRCV_C
Инструкция TRCV_C также является инструкцией TIA Portal, которая используется для настройки и установления соединения между двумя ПЛК. После настройки и установки соединения оно будет автоматически поддерживаться и контролироваться ПЛК.
Инструкция «TRCV_C» выполняется асинхронно и последовательно реализует следующие функции:
- Настройка и установление коммуникационного соединения, аналогично TCON.
- Прием данных через существующее коммуникационное соединение, аналогично TRCV.
- Завершение или сброс коммуникационного соединения, аналогично TDISCON.
Следовательно, название «компактный» дается TRCV_C, поскольку он действует как более 3 блоков одновременно.
Использование TSEND_C и TRCV_C в нашем проекте ПЛК
В последней статье, когда нам нужно было установить и перейти к отправке данных из ПЛК_1 в ПЛК_2, нам пришлось использовать три разных блока в каждом ПЛК. Смотрите рисунок 1.
рисунок 1. Логика внутри ПЛК_1
Как вы можете видеть, мы использовали блоки TCON и TDISCON для установки и сброса соединения, а также использовали TSEND для отправки данных из ПЛК_1. То же самое было сделано для ПЛК_2. Смотрите рисунок 2.
рисунок 2. Логика ПЛК_2
Снова мы использовали блоки TCON и TDISCON для установки и сброса соединения, а также использовали TRCV для получения данных из ПЛК_1.
Теперь мы хотим заменить все эти блоки и попытаться использовать TSEND_C и TRCV_C вместо этого, чтобы достичь той же функциональности.
Сначала в ПЛК_1, где нам нужно отправлять данные, мы будем использовать блок TSEND_C, просто перетащив блок внутрь основного OB1. Смотрите рисунок 3.
рисунок 3. Добавьте блок TSEND_C.
Поскольку TSEND_C по сути является функциональным блоком, вам будет предложено создать экземпляр данных. Смотрите рисунок 4.
рисунок 4. Создайте экземпляр для TSEND_C
TSEND_C похож на блок TSEND в том смысле, что вам нужно сделать некоторые настройки и добавить некоторые сигналы. См. рисунок 5.
рисунок 5. Блок TSEND_C
Теперь нам нужен сигнал для REQ и Data для отправки, а также для настройки соединения. Для сигнала REQ мы создали тег SendData.
Кроме того, мы можем просто перетащить блок данных, который мы создали в прошлой статье, который нам нужно отправить в ПЛК_2, мы можем просто перетащить его на вход DATA блока. См. рисунок 6.
рисунок 6. Конфигурация блока TSEND_C.
Чтобы настроить параметр соединения для блока, мы можем нажать на небольшой значок конфигурации в верхней части блока, чтобы открыть представление конфигурации.
Представление конфигурации будет выглядеть очень похоже на представление блока TCON. См. рисунок 7.
рисунок 7. Параметр соединения TSEND_C
Мы уже показали, как настроить параметр соединения в предыдущих статьях, поэтому мы можем просто сделать то же самое, что и с блоком TCON, см. рисунок 8.
рисунок 8. Настройка параметра соединения
С этой конфигурацией соединения мы завершили все настройки TSEND_C. Обратите внимание, насколько это быстрее по сравнению с настройкой блоков TCON, TDISCON и TSEND.
Теперь нам нужно добавить TRCV_C в ПЛК_2, чтобы он мог получать данные, отправленные из ПЛК_1. В главном OB1 ПЛК_1 просто перетащите TRCV_C в свою логику. см. рисунок 9. Не забудьте создать экземпляр данных для блока TRCV_C.
рисунок 9. Добавьте TRCV_C
После добавления TRCV_C в вашу логику нам нужно его настроить. Как мы это делали с TSEND_C, нам нужно добавить сигнал для включения приема данных, а также нам нужно добавить блок данных, внутри которого мы будем сохранять данные. Смотрите рисунок 10.
рисунок 10.TRCV_C
Мы определили тег RecieveData как сигнал EN_R. Смотрите рисунок 11.
рисунок 11. Определите тег EN_R
Не забудьте снять флажок «оптимизированный доступ к блоку» блока данных, иначе блок не будет работать, как мы показали в прошлых статьях.
Далее нам нужно настроить параметры соединения блока TRCV_C, как мы это делали с TSEND_C, просто помните, что неуказанный партнерский ПЛК теперь является ПЛК_1, см. рисунок 12.
фото 12. Параметры соединения TRCV_C
Моделирование проекта ПЛК
Теперь, когда мы настроили блоки TSEND_C и TRCV_ C, мы хотим смоделировать наш проект и посмотреть, как они будут работать, но сначала мы создадим простую логику для автоматического обновления данных ПЛК_1, которые будут отправлены в ПЛК_2. См. рисунок 13.
фото 13. Простая логика для автоматического обновления данных.
Теперь давайте скомпилируем и запустим моделирование для нашего проекта. Первое, что вы заметите, это то, что ПЛК_1 и ПЛК_2 попытаются установить соединение сразу, потому что мы настроили TSEND_C и TRCV_C, они автоматически попытаются установить соединение. Вот почему будет соединение между двумя ПЛК. Смотрите рисунок 14.
Рисунок 14. Соединение устанавливается напрямую.
Как вы видите, соединение между ПЛК устанавливается напрямую, потому что параметр CONT в TSEND_C и TRCV_C установлен на TRUE, что означает, что блок автоматически попытается установить соединение с партнерским ПЛК. Мы можем поместить сюда любой управляющий сигнал для управления установлением соединения.
Другое, что вы можете увидеть, это то, что REQ TSEND_C и EN_R TRCV_C установлены на FALSE, и именно поэтому не будет никаких данных, перемещаемых между ПЛК. См. рисунок 15.
рисунок 15. Нет передачи данных между ПЛК.
Если сигнал REQ TSEND_C установлен на значение true, ПЛК_1 попытается отправить данные, но будет ждать, пока другой ПЛК разрешит прием данных, см. рисунок 16.
рисунок 16. REQ имеет значение true.
Как вы можете видеть, SendData имеет значение TRUE, но данные не были отправлены, поскольку RecieveData все еще имеет значение false.
ПЛК_2 будет получать данные от ПЛК_1 только тогда, когда ReceiveData имеет значение true. См. рисунок 17.
рисунок 17. Данные отправляются в ПЛК_2
Как вы можете видеть, когда RecieveData имеет значение true. Данные будут отправлены из ПЛК_1 в ПЛК_2, однако вы можете видеть, что данные внутри двух ПЛК отличаются, поскольку данные ПЛК_1 автоматически изменяются в соответствии с простой логикой, которую мы создали ранее. Это означает, что сигнал EN_R позволяет передавать данные один раз, когда мне нужно снова передать данные, этот сигнал должен стать ложным, а затем снова истинным.
Ознакомьтесь с прикрепленным проектом TIA Portal и посмотрите на передачу данных между ПЛК.