ЖУРНАЛ СТА 3/2014
С другой стороны, время измерения параметров процесса, управляемого длительным алгоритмом, во многих случаях соизмеримо с периодом данно- го алгоритма, а это значит, что длитель- ный алгоритм, вызываемый с периодом быстрого, в большей части своих цик- лов будет оперировать неизменивши- мися входными данными, если только в нём не предусмотрены средства слеже- ния за их актуальностью. Самый простой способ решения обо- значенной проблемы состоит в приме- нении контроллера с достаточно быст- рым процессором, способным выпол- нить все прикладные алгоритмы с ис- пользованием кратчайшего требуемого периода цикла. Однако далеко не каждый, даже опытный инженер в состоянии точно оценить, какая именно производитель- ность будет достаточной для реализа- ции требуемых функциональных воз- можностей системы, особенно если нужно учитывать последующую воз- можность расширения. Кроме того, использование мощных процессоров для широкого спектра за- дач автоматизации не всегда оправдан- но с точки зрения затрат на аппаратные средства системы, а в ряде случаев и не- возможно, скажем, из-за чрезмерного энергопотребления, размеров или дли- тельного времени запуска контроллера при включении питания. Для решения данной проблемы в стандарте МЭК 61131-3 было определе- но понятие задача (task), олицетворяю- щее реальный или виртуальный про- цессор, способный выполнять связан- ную с ним последовательность про- граммных единиц (ProgramOrganization Units, или POU) при наступлении за- данного условия запуска. Таким обра- зом, задача является элементом управ- ления программными единицами, определяя для них контекст выполне- ния, который состоит, как минимум, из указателя текущей выполняемой ин- струкции, указателя стека и набора ре- гистров реального процессора или ин- терпретатора. Программа, выполняемая в контекс- те циклической задачи, вызывается с периодом, заданным для этой задачи, а для программы, выполняемой в кон- тексте ациклической задачи, условием запуска является передний фронт неко- торой булевой переменной. Для задачи в стандарте введено поня- тие приоритета , отражающее срочность выполняемых в её контексте программ- ных единиц по сравнению с программ- ными единицами, выполняемыми в контексте других задач. Приоритеты за- дач определяют формальный критерий, согласно которому система исполнения контроллера предоставляет физический процессор той или иной задаче: если в некоторый момент времени должны выполняться или уже запущены не- сколько задач, то доступ к процессору получает задача с наивысшим приори- тетом. Процесс определения задачи, ко- торой в некоторый момент времени должен быть отдан процессор (или одно из ядер многоядерного процессора), на- зывается планированием задач (tasks scheduling), а компонент системного программного обеспечения, занимаю- щийся планированием задач, называет- ся планировщиком (scheduler). Следует отметить, что согласно МЭК 61131-3 планирование может осуществляться как с вытеснением менее приоритетных задач (preemptive scheduling), так и без вытеснения (non-preemptive). Программными единицами в МЭК 61131-3 второй редакции, выпущенной в 2003 году, могут быть программы (PROGRAM), функциональные блоки (FUNCTIONAL BLOCK) и функции (FUNCTION), которые описываются наборами входных, выходных и внут- ренних переменных и содержат испол- няемую при вызове последовательность инструкций. Перед вызовом программы или блока входные переменные вводят- ся системой исполнения контроллера из других программ, функциональных бло- ков или из окружения, каковым являет- ся сетевая подсистема контроллера и подсистема ввода-вывода, а выходные переменные выводятся другим програм- мам, блокам или в окружение по окон- чании очередного исполнения. Внутрен- ние переменные программ и функцио- нальных блоков в отличие от внутренних переменных функций, сохраняют свои значения между вызовами. Принципиальное отличие между программой и функциональным бло- ком состоит в том, что в приложении контроллера может быть только один экземпляр программы с некоторым именем, а экземпляры функционально- го блока можно объявлять в виде пере- менных среди внутренних переменных программ и вызывать из их кода. Функция (FUNCTION) очень похо- жа на программу (PROGRAM), но не имеет внутренних переменных, значе- ния которых сохраняются между вызо- вами, то есть время жизни функции ограничивается временем между нача- лом её выполнения в точке вызова и возвратом на следующую инструкцию после точки вызова, тогда как время жизни программ и функциональных блоков ограничено временем функ- ционирования контроллера. При ис- пользовании энергонезависимых пере- менных внутри функциональных бло- ков и программ время жизни программ и функциональных блоков теоретиче- ски не ограничено. Планирование без вытеснения (non- preemptive) означает, что если одна из задач получила процессор, то до завер- шения её текущего цикла процессор не будет предоставлен ни одной другой за- даче. При этом в случае если в момент принятия решения о предоставлении процессора сразу несколько задач гото- вы к выполнению и имеют одинаковые приоритеты, то процессор предостав- ляется задаче, которая до этого момен- та ожидала его дольше всех задач рав- ного с ней приоритета. Планирование с вытеснением (preemp- tive) означает, что если во время выпол- нения некоторой задачи возникли усло- вия для выполнения другой, более приоритетной задачи, то текущая зада- ча приостанавливается, а процессор не- медленно предоставляется более прио- ритетной задаче. Планирование без вытеснения, при- менительно к проблеме координации выполнения нескольких задач разной срочности и длительности, не добавляет ровным счётом никаких новых возмож- ностей к классической однозадачной системе исполнения контроллера – ме- нее срочные и более длительные зада- чи, получив процессор, будут отклады- вать запуск более быстрых и срочных задач до своего завершения. Планирование с вытеснением, на- против, позволяет решить проблему, ес- ли быстрым и срочным задачам назна- чен более высокий приоритет, чем дли- тельным и менее срочным, как показа- но на рис. 7. В момент t 1 процессор «отдаётся» за- даче A 2 , которая выполняется до мо- мента t 2 , при наступлении которого A 2 приостанавливается и ожидает завер- шения очередного цикла более приори- тетной задачи A 1 , после чего A 2 опять «получает» процессор. Обратите внима- ние, что несмотря на трёхкратное вы- теснение A 2 , время τ 3 , требуемое для выполнения очередного цикла A 2 , в данном случае не превышает длитель- ности периода T 2 , заданного для A 2 . Та- 78 СТА 3/2014 АППА РАТ НЫЕ С Р Е ДС Т В А / П РОМЫШЛ Е ННЫЕ КОН Т РОЛЛ Е РЫ www.cta.ru
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy