Гл1_06 (1031608), страница 11
Текст из файла (страница 11)
Он приводит системух3в нулевое исходное состояние.4х2х2RG1 Необходимо отметить, что5логика наших контрольных сигна8RG2:=RG2 or #00000011RG2:=RG2 or #00000101ловинверсна и при нажатии кнопокдвижение влеводвижение вправоили конечных выключателей, они69выдают активный низкий уровень.x1*x4 x2*x4RG1ϩRG1ϲВ исходном состоянии 10 разх1*х4х2*х4в секунду проверяется, не нажата ли710кнопка «Пуск» и, если она нажата иЖдать 0.02сЖдать 0.02спривод был в крайнем правом по11ложении, следует движение влево,RG1Ϩиначе - вправо. Так что, если прих4х4вод остановился в промежуточном12RG2:=RG2 & #111100002положении, он всегда начнет двиостановить приводгаться вправо. Условие выхода из13нулевого состояния проверяетсяЖдать 0.05ссинхроквантом, содержащим оператор 2. Системный оператор 314х4«Ждать 0.1с», выполняемый, еслиRG1Ϩкнопка «Пуск» не нажата, передаетх42управление диспетчеру задач и от15х2кладывает выполнение приведенноRG1 го алгоритма на 0.1 секунды.х25Синхрокванты с большей8частотой перезапуска проверяютусловия выхода из состояний 1 и 3и переводят систему в исходное соРис.
1. 27стояние или состояние останова.В этом примере использован дискретный контроль с программной инициализацией ипреимущества процессного подхода к программированию систем управления практически нереализованы. Операторы «Ждать» вполне можно было бы заменить программными задержками. Программа управления работала бы точно также, с тем только отличием, что больше никаких процессов микроконтроллер выполнять бы не смог, поскольку временных окон в ходевыполнения потока не было бы.Разработанный алгоритм, как и автоматный граф проверяют на полноту, составляятаблицу возможных сочетаний сигналов в каждом из состояний и реакцию на них, исходя изоператоров алгоритма.
Ниже представлена такая таблица для состояния 2 после задержки.Входные сигналых4 х3 х2 х100 00СостояниеПримечаниеИсходное (0) Аварийное сочетание - нет питанияРябов Владимир Тимофеевич. Кафедра «Электронные технологии в машиностроении»МГТУ им. Н. Э. Баумана, V_Ryabov@mail.ru42000000011111111000111100001111011001100110011101010101010101Исходное (0)Исходное (0)Исходное (0)Исходное (0)Исходное (0)Исходное (0)Исходное (0)Влево(3)Влево(3)Вправо (1)Вправо (1)Влево(3)Влево(3)Вправо (1)Вправо (1)Аварийное сочетаниеАварийное сочетаниеАварийное сочетаниеАварийное сочетаниеНормальная работаНормальная работаАварийное сочетаниеАварийное сочетание - нет питания SA3 и (SA1 или SA2)Нештатный сигнал «Пуск» SA3Нештатный сигнал «Пуск» SA3Аварийное сочетание, отказ SA1 или SA2Аварийное сочетание - нет питания SA1 или SA2Нормальная работаНормальная работаАварийное сочетание, отказ SA1 или SA2Здесь особо опасны выделенные жирным шрифтом сочетания, которые могут привестик поломке привода.
При таких сочетаниях сигнала целесообразно систему оставить в положении «Останов», так, чтобы перезапустить систему можно было нажатием кнопки «Стоп» изатем «Пуск». Можно предусмотреть индикацию аварийного состояния. Откорректированнаячасть алгоритма после оператора 13 представлена на рис. 1.28.Также внимательно следует проверить и переходы из других14х1*x2состояний.RG1Квант характеризуют коэффициентом загрузки прох1+x2цессора k, равным отношению длительности выполнения15х1*x2кванта τ к периоду его перезапуска h:RG1k = τ h.х1*x2Посчитать длительность исполнения кванта можно,16х4просто имея его текст на ассемблере и зная длительность выRG1Ϩполнения каждой операции. При некотором опыте программи2х4рования это можно сделать и просто по экспертной оценке.17Например, описанный ранее квант регулирования температурых1RG1на процессоре с длительностью выполнения короткой команды8х1в одну микросекунду будет выполняться не более 1 мс и коэффициент загрузки процессора при перезапуске кванта раз в 205секунд составит:Рис.
1. 28k = 10−3 20 = 5 *10−5.Коэффициент загрузки процессора, по сути, доля отнимаемого у процессора ресурсавремени. Какую то долю времени отнимает у микропроцессора диспетчер процессов, осуществляющий перезапуск квантов, какую то - другие кванты процессов. Если вы используетеприобретенный со стороны диспетчер процессов или разработали его самостоятельно, обязательно проверьте время диспетчирования.
Обычно оно составляет не более 100 мкс. Суммарный коэффициент загрузки процессора на все элементы управляющей программы не долженприближаться к единице, иначе процессор просто не успеет, и будут возникать неизбежныезадержки. Посчитать эти задержки можно с использованием методов теории массового обслуживания или имитационным моделированием.Рябов Владимир Тимофеевич. Кафедра «Электронные технологии в машиностроении»МГТУ им. Н. Э.
Баумана, V_Ryabov@mail.ru43Реально, чтобы не было заметных задержек, нужно писать управляющую программу,как совокупность коротких квантов и суммарный коэффициент загрузки процессора не должен составлять более 0,1.В рассматриваемом приводе сканирования коэффициент загрузки процессора квантомпроверки нулевого состояния составит с учетом работы диспетчера задач не более 10-3 и контроллер сможет одновременно обслуживать до ста таких квантов.Если усложнить автоматный граф привода сканирования и заставить привод останавливаться после нажатия кнопки стоп только в крайнем левом положении, управляющий алгоритм резко усложнится, поскольку придется вводить дополнительное состояние для движения влево, в которое система будет переходить, если ранее в любом из состояний кроме исходного была нажата кнопка «Стоп».
Попробуйте сами нарисовать такой граф и алгоритм,мы же здесь не будем этого делать, поскольку процессный подход предлагает более простыеметоды решения.На практике кнопки «Пуск» и «Стоп» объединяют пусковым RS-триггером, выполненным на реле, как это показано на рис. 1.29. Реле К1 формирует сигнал х3, находящейся в активном низком уровне, если была нажата кнопка «Пуск» до тех пор, пока не нажата «Стоп».Использование такой схемы позволит нам легко модифицировать автоматный граф так, что останавливаться привод после нажатия кнопки «Стоп» будет всегда в крайнем левом положении.x53(x2)*(t=0.05c)1x2SA4"Стоп"K1.1x1SA3"Пуск"ДК3 (x3)x1K10x3*x1UnСостояниех2*х3x23*хх22ДУ1 ДУ2 ДУ30 Исходное0001 Вправо1102 Останов1001013 Влево(x1*x3)*(t=0.05c)t<0.05cРис.
1.29Количество сигналов уменьшилось, и сигнал х3 анализируется только в нулевом ивтором состояниях. Алгоритм, реализующий этот граф, попробуйте разработать самостоятельно. В конце параграфа приведен рисунок этого алгоритма. Проанализируйте полноту условий переходов в состояниях 1 и 3 с помощью таблицы аналогично тому, как мы делали эторанее для состояния 2Реализовать схему, приведенную на рис. 1.29, можно и программным путем, простоанализируя сигналы х3 и х4 в отдельном алгоритме, исполняемом как параллельный поток.Назовем его «Пуск-стоп».
Тогда у нас будет два потока «Пуск-стоп» и «Вправо-влево». Поток «Пуск-стоп» будет модифицировать глобальную логическую переменную Работа, которая заменит сигнал х3 в автоматном графе по рис. 1.29.Будем постепенно знакомиться с возможностями многопоточного программирования.Для начала рассмотрим случай, когда потоки одного уровня иерархии и оба безусловно запускаются из диспетчера задач при исполнении управляющей программы (рис. 1.30). Это отражают системные операторы «Старт», в которых не указано условие запуска.Рябов Владимир Тимофеевич. Кафедра «Электронные технологии в машиностроении»МГТУ им.
Н. Э. Баумана, V_Ryabov@mail.ru445RG2:=RG2 or #00000101движение влево8RG2:=RG2 or #00000011движение вправо6RG1RG1 x1x2х17Ждать 0.02сх210Ждать 0.02с11RG2:=RG2 & #11110000остановить привод12Ждать 0.05с7Авариянет15Работа?х3+x4х3*x43RG1ьх3*x44RG1dх35Работа:=falseх3*x47Авариях38Работа:=true6Ждать 0.1с2Cостояние 213х1=х22RG1ьx2 (цикл состояния 1)x1 (цикл состояния 3)х2Поток "Пуск-стоп"1СтартПоток "Вправо-влево"1Цикл состояния 0Старт3Ждать 0.5с2Работа?нетда4х2RG1 б)Поток «Пуск-стоп» содержит одинсинхроквант, перезапускаемый черезда30.1 секунды и может обнаруживать ава16х1рийное состояние, когда активны обеRG1кнопки «Пуск» и «Стоп».
При этом бу8х1дет запущен поток «Авария». Управле5ние будет передано диспетчеру и потока)«Пуск-стоп» будет остановлен.Рис. 1. 30Это тупиковое состояние и в потоке «Авария» кроме отключения двигателя, экстренного снятия потока «Вправо-влево»и аварийной сигнализации, следует предусмотреть выход из него и перезапуск снятых потоков.Коэффициент загрузки процессора синхроквантом потока «Пуск-стоп» составит около 10-4.Поток «Вправо-влево» содержит четыре синхрокванта с коэффициентами загрузки от-510 для кванта состояния 0 до 2*10-4 для кванта состояний 1 и 3.