📚 Hub Books: Онлайн-чтение книгРазная литератураТабличный ПЛК.Табличное программирование контроллеров - Владимир Васильевич Стретенцев

Табличный ПЛК.Табличное программирование контроллеров - Владимир Васильевич Стретенцев

Шрифт:

-
+

Интервал:

-
+
1 ... 8 9 10 11 12 13 14 15 16 ... 20
Перейти на страницу:
операции которой уже посчитан, обозначен как «p».

Рис. 47. Операции с указателем

Тип получаемого операнда будет зависеть от типа результата, на который указывает указатель. Если указатель равен номеру строки с аналоговым результатом, то будет подставлено аналоговое значение. Если результат строки, на которую ссылается указатель, битовый, то будет подставлено битовое значение. Пример использования указателя для аналогового или битового значений показан на рис. 48, где A1 — аналоговый результат входной операции в строке с номером, равным p, а b1 — битовый результат входной операции в строке с номером, равным p.

Рис. 48. Пример использования указателя

Использовать указатели следует осторожно, чтобы не усложнить понимание алгоритма табличной программы. Не стоит получать с помощью указателя результат строки со значением входной переменной. Лучше получить то же значение, указав адрес входной переменной. Использовать указатель нужно для сигналов состояний, получаемых в результате нескольких операций над входными переменными. Такой подход позволит уменьшить количество строк и упростит понимание алгоритма табличной программы.

4. Примеры табличного программирования

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

Табличная программа пересчитывается последовательно сверху вниз, строка за строкой, при этом в программе отсутствуют ветвления или переходы. Такое решение облегчает понимание логики работы программы, снижает вероятность возникновения ошибок. Это не новый подход. В графических языках программирования, например в языке релейных схем LD, применяется тот же принцип последовательного прохода по строкам. Применяемые в LD функции больше похожи на наборы строк, которые при необходимости последовательно исполняются для сокращения общего кода, чем на функции или подпрограммы в объектно ориентированных языках программирования. Добавление атрибутов объектно ориентированных языков в графические языки программирования контроллеров, с одной стороны, повышает гибкость графических языков и увеличивает их функциональность, но с другой стороны, усложняет алгоритм, делая его непрозрачным. Методы, применяемые в объектно ориентированных языках, прекрасно работают в них, так как они создавались с учетом особенностей этих языков. Для графических языков необходимо разрабатывать такие методы программирования, которые наилучшим образом будут подходить к решению задач, для которых эти языки разрабатываются. Значит, необходимо определить класс задач, которые будут решать программы, написанные на графических языках.

Так как основная задача, выполняемая контроллерами, — это управление различными объектами в режиме реального времени, то лучше использовать параллельные процессы обработки входных данных и организовать между процессами обмен сигналами состояний, а не возлагать все на одну программу, пусть даже исполняемую на мощном вычислительном устройстве. Низкая стоимость контроллеров позволяет получать информацию о процессе в параметрах, которые контролируются, а не в их электрических эквивалентах. Например, температуру от датчиков лучше контролировать в градусах Цельсия, а не в целочисленных значениях с АЦП. Так же и положение механизма можно получать в миллиметрах или градусах, а не в количестве импульсов энкодера. Программы преобразования величин, не принимающие решений по управлению объектом, могут выполняться отдельными микропроцессорами. Они просто преобразуют одни величины в другие — и могут делать это параллельно и независимо как друг от друга, так и от главного контроллера. Полученные конвертированные параметры присваиваются входным переменным и в дальнейшем используются в табличной программе.

Если вычислительной мощности контроллера достаточно, то можно назначить некоторые аналоговые входы как входы для подключения датчиков определенного типа. Тогда аналоговые значения, получаемые с этих входов, будут автоматически преобразовываться в необходимый формат. Также можно ввести дополнительные входные операции преобразования значений, получаемых с АЦП, в необходимый вид. Последнее решение более гибкое, так как позволяет использовать любой аналоговый вход для подключения датчиков.

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

4.1. Концевой выключатель

Рассмотрим небольшую механическую систему, состоящую из подвижного элемента, движение которого не должно выходить за установленные пределы. Для ограничения движения будем использовать сигнал «разрешение», который, перейдя в состоянии ноль, запретит движение. Введем в таблицу переменные «ограничение слева» и «ограничение справа», которые будут описывать состояния концевых выключателей. Обычно концевые выключатели имеют нормально замкнутый контакт и при срабатывании разрывают электрическую цепь. Это сделано для того, чтобы остановить работу механизма в случае отсутствия контакта в соединениях или при повреждении кабеля от концевого выключателя. Так как в нормальном состоянии цепь конечного выключателя должна быть замкнута, то любое повреждение, разрывающее цепь будет аналогично срабатыванию концевого выключателя и ограничит движение механизма. Рассмотрим пример табличной программы, использующей концевые выключатели. На рис. 49 показано состояние программы, когда концевые выключатели не сработали, их цепи замкнуты, следовательно, ограничений для движения нет.

Рис. 49. Пример использования концевых выключателей — разрешено движение в обоих направлениях

На рис. 50 показана ситуация, когда сработал правый концевой выключатель и запретил движение вправо. Часто концевые выключатели устанавливают совместно с аварийными концевыми выключателями, при срабатывании которых прекращается любое движение. Если обычные концевые выключатели задают диапазон, в котором механизм может двигаться, то аварийные концевые выключатели ограничивают передвижение в предельно возможных положениях.

Рис. 50. Пример использования концевых выключателей — запрещено движение вправо

Добавим в табличную программу аварийные концевые выключатели. Ситуация, когда ни концевые выключатели, ни аварийные выключатели не ограничивают движение, показана на рис. 51.

Рис. 51. Пример использования аварийных концевых выключателей — разрешено движение в обоих направлениях

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

Рис. 52. Пример использования аварийных концевых выключателей — аварийная ситуация

4.2. Готовность силового питания

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

1 ... 8 9 10 11 12 13 14 15 16 ... 20
Перейти на страницу:

Комментарии

Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!

Никто еще не прокомментировал. Хотите быть первым, кто выскажется?