ПЛК и сетевые коммуникации: концептуальные основы

0

В соответствии с этим вопросом можно отправить TCP/IP-сообщение от ПЛК на ПК с использованием лестничной логики. Какие? Я уверен, что это имеет смысл для людей из мира PLC, но я изо всех сил пытаюсь понять, что это происходит из мира встроенных систем C/C++.

Может ли кто-нибудь объяснить или указать на объяснение, где именно происходит связь с ПЛК? Это из цикла проверки PLC, и в этом случае... как ожидания, задержки, тайм-ауты, повторы и т.д. Обрабатываются без расширения цикла сканирования? Точно так же существует ли способ, с помощью которого такая функциональность согласуется с электронной метафорой "рельсов и переключателей" логической схемы лестницы или эта метафора простирается до точки разрушения?

Мне кажется, что есть задачи (не обязательно комм-задачи), которые трудно перевернуть в течение нескольких миллисекунд цикла сканирования ПЛК. Расширение этого цикла ради таких задач представляется несостоятельным. Так существуют ли способы и средства в мире ПЛК для выполнения этих задач за пределами цикла проверки ПЛК, который каким-то образом интегрирует их вход/выход/управление в цикл проверки ПЛК? Я подозреваю, что это так, но не нашел ничего, что ясно говорит об этом.

  • 0
    Концептуально это не отличается от работы двигателя с ПЛК. Вы можете включить его только для одного сканирования лестницы, которое не заставляет двигатель двигаться.
Теги:
tcp-ip
plc

3 ответа

0
Лучший ответ

как ожидания, задержки, тайм-ауты, повторы и т.д.

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

Любая немедленная (блокирующая) задача выполняется в несколько циклов, будь то высокоуровневые ввод-вывод данных или какой-то реальный "реальный мир". Коммуникационные вызовы, например, read(), write(), send(), receive() и т.д., Не являются блокирующими, иногда даже асинхронными. В LD и других (IEC 61131-3) языках все обрабатывается с использованием флагов, триггеров и т.д.

Вот какой-то реальный код, который отправляет запрос и считывает данные измерений с цифрового датчика через последовательный порт RS-485. Обратите внимание, что нет блокирующих вызовов, и не имеет значения, как короткий цикл сканирования.

  • 0
    Спасибо - я забыл об этом вопросе и нашел некоторый подобный код, который помог мне заставить вещи работать ... но все еще не с кристально ясным пониманием. Я до сих пор не уверен, происходит ли все, что происходит в ПЛК, за один цикл, но, возможно, это не имеет значения, пока я могу получить доступ ко всему, что мне нужно, из цикла.
0

Используя библиотеки, предоставленные производителем вашей системы управления, большинство из них обрабатывается асинхронно на более низком уровне, и вам не нужно иметь дело с ним в коде ПЛК (который обычно является "в режиме реального времени", синхронным и блокировка по дизайну).

0

Проблема в том, что ПЛК были разработаны для управления своими задачами и отправки данных в реальном времени через ProfiBus, Ethercat, ProfiNet и т.д. Связь TCP/IP действительно довольно громоздка, если смотреть с компьютерного программирования.

То, что мне помогло, - это прочитать очень толстые руководства по коммуникации от ПЛК и к ним. Особенно такие вещи, как количество данных, которые могут быть отправлены или прочитаны за один цикл (!). И используйте wizzards как можно больше. Проверьте сайты поддержки.

Положительная сторона производства ПЛК заключается в том, что у них есть поддержка, которая больше готова помочь, чем мир программного обеспечения. Просто попробуйте и спросите их, сможет ли вам помочь вам дальше.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню