Сокращение времени прогона программы 

Сокращение времени прогона программы

3.6

Типичное время прогона программы ПЛК составляет от 10 до 20 мс. Этого достаточно для большинства применений, связанных с использованием контакторов, соленоидов и других электромеханических устройств. Однако если ПЛК применяется в задачах, связанных с быстрым перемещением материала, время прогона и, что более важно, вариации этого времени могут иметь критическое значение. Например, если ПЛК используется в системе резки материала на фрагменты заданной длины, а материал перемещается со скоростью 10 м/с, то отклонение времени прогона на 15 мс будет соответствовать ошибке по длине в 150 мм. В этом разделе рассматриваются факторы, влияющие на время прогона, и способы повышения скорости выполнения программы.

На рис. 3.19 приведена типичная многоступенчатая схема. Большинство ПЛК будут реализовывать соответствующую программу в следующем порядке:

А, В, С, D, Е, F, G, Н, I,

после чего произойдет обновление выхода. Однако чтобы повысить быстродействие, многие ПЛК будут пропускать некоторые ветви, если найдется параллельная ветвь, состояние которой соответствует «истине». Если сигналы А и В истинны, то сигналы С, D, Е и F не будут исследоваться, а после сигнала В следующим проверяемым будет сигнал G.

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

В худшем случае, когда А, В, С, D и G находятся в состоянии 0, а оставшиеся сигналы в состоянии 1, то надо будет исследовать все девять контактов, прежде чем активизируется выход.

Рис. 3.19. Простая многоступенчатая схема

Аналогичные соображения используются при определении условий деактивизации выхода. Если А, В, С, D, Е и F находятся в состоянии 0, то выход сразу будет деактивизирован без исследования состояний G, Н или I.

Таким образом, чтобы обеспечить наибольшее быстродействие, сигналы, которые с большой вероятностью будут иметь состояние 1, или те, которые требуют наиболее быстрой реакции, должны быть размещены в начале многоступенчатой схемы или ближе к ее левой части. Если имеется пара звеньев, выходы которых не могут появиться одновременно (например, «Поднять автоматически» и «Поднять вручную»), то сигнал выбора режима (вручную или автоматически) помещайте в качестве первого контакта в каждом звене, так что в неиспользованном звене будет исследован только один контакт. В результате схема, изображенная на рис. 3.20 (а), будет более быстродействующей по сравнению со схемой на рис. 3.20 (б). Обратите внимание, что в схеме, обладающей меньшим быстродействием, лишнее время затрачивается на двукратную проверку сигнала верхнего концевого выключателя в каждом звене.

Рис. 3.20. Выбор конфигурации многоступенчатой схемы с целью повышения быстродействия: (а) быстрое срабатывание; (б) медленное срабатывание

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

Математические операции выполняются во много раз медленнее, чем побитовые операции, а действия над числами с плавающей точкой медленнее, чем над целыми числами. Если существенным является быстродействие, старайтесь во всех математических операциях использовать целые числа, но при этом необходимо позаботиться о том, как избежать ошибок округления и переполнения. 16-битовые числа в дополнительном коде занимают диапазон от —32 768 до +32 767.

Следует избегать арифметических действий, в которых замешаны целые числа и числа с плавающей точкой, так как это связано с непроизводительными издержками. Например, в случае простой арифметической операции Int2 = Floatl + Intl ПЛК сначала преобразует Intl во внутреннее число с плавающей точкой, сложит его с Floatl, а затем вернет результат в формат целого числа, чтобы получить Int2.

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

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

Некоторые ПЛК имеют специальные файлы программы, которым может быть отведено определенное время прогона. Семейство PLC-5, например, имеет программу Selectable Time Interrupt (STI), которая выполняется за фиксированный интервал времени, скажем, за 1 мс. Если время прогона основной программы составляет 20 мс, то файл ST1 в этом случае будет выполнен 20 раз. Однако такая скорость чревата издержками для времени прогона основной программы, поэтому ST1 и другие аналогичные файлы должны быть как можно меньших

Рис. 3.21. Методы секционирования программы с целью пропуска операций, не являющихся необходимыми: (а) использование переходов (Jumps, JMP) и меток (Labels, LBL); (б) использование вызовов подпрограмм

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

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

Чтение входов
Выполнение программы
Обновление выходов

Приемы наподобие файлов STI особенно полезны тогда, когда вы не хотите ждать окончания основной программы, чтобы произошло обновление выходов. Поэтому часто используются управляющие функции с именами Immediate Input и Immediate Output, которые позволяют прочитать входы или обновить выходы, не дожидаясь нормального начала и конца программы. ST1 или подобный файл обычно имеет следующую структуру:

Immediate Input <используемые входы>
Программа
Immediate Output <используемые выходы>,

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

Обращение к входным и выходным сигналам путем последовательного опроса (часто называемое дистанционным сканированием) дает дополнительный вклад в отклонения времени выполнения программы, поскольку обычно прогон программы и опрос входов/выходов не синхронизированы. Если важную роль играет быстродействие, то входные и выходные платы должны быть смонтированы в той же стойке, что и процессор, так как доступ к сигналам в этом случае осуществляется намного быстрее.

Наконец, радикального повышения быстродействия можно добиться путем удаления «мусора» из программы. Многие ПЛК содержат ненужные программы, обслуживавшие устаревшее оборудование, тестирующие программы, уже выполнившие свое назначение, или просто звенья, обеспечивающие доступ к элементам объекта управления, которые больше не используются. Эти бесполезные фрагменты занимают память, создают путаницу для персонала и снижают быстродействие процессора. Считается хорошей практикой периодически подвергать программу проверке (как правило, каждые три месяца) и удалять из нее все, в чем нет необходимости.