
книги из ГПНТБ / Смирнов, К. А. Сбор, передача и обработка данных АСУ
.pdfпа каждом этапе, сопровождая при возможности пояс нения примерами.
Ф о р м у л и р о в к а з а д а ч и . На этом этапе при решении логических задач устанавливается переченьфакторов, которые необходимо учесть, уточняется ко нечная цель. При решении математической задачи ус танавливаются в окончательном виде математические формулы. Предположим, например, что цель работы за ключается в управлении с помощью ЭВМ некоторым объектом (рис. 2.28а). Выдача управляющих сигналов
Рис. '2.28. Простейшая автома тизировал нал система управле ния ( а ) и характер изменения угла заслсмжи во времени ( б )
«г
в объект производится по цепи управления. Предполо жим далее, что управляющими сигналами являются сиг налы кода углового положения заслонки, регулирую щей протекание определенного процесса. Для простоты полагаем, что угловое положение заслонки является лишь функцией времени. В этом простейшем случае перечень факторов, необходимых для решения указан ной задачи, будет выглядеть следующим образом:
1. Закон '.изменения утла то-вор-отн а в записимоста от времени.
2.Граничные условия.
3.Характер изменения процесса регулирования в граничной зоне.
4.Частота поступления меток времени.
Таким образом, аргументом, определяющим значе ние функции а, будет в данном случае время t. Предпо ложим, что зависимость функции от аргумента опреде
ляется выражением а — У А Р + В , где А п В — посто янные коэффициенты (константы). Определим теперь гра ничные условия. Если значения а не выходят за преде-
100
лы (it и «2/ то граничные условия будут определяться вьиражением сцг^а^аз-
Третий фактор сформулируем так: в точках ai и а2 знак inipвращения .аргумента At следует 'изменять иа1про тивоположный. Наконец, положим, что аргумент будет задаваться дискретно, через каждые 0,1 с, а погреш ность не должна превышать 10~5 с, т. е. 10 мкс. Все ска занное может быть записано следующим образом:
1)a = V АР+В.
2)А а В — константы.
3)с ц ^ а ^ а г .
4) При а = щ и —At изменить —At па + М 5) При a = a 2 и At изменить At на —At.
6) ti+i—/j= 0 ,l с±10-5 с.
При этом считается, что значения Л, В, ах и а2 из вестны и больше нуля. При таких условиях характер изменения угла заслонки во времени примет вид, пока занный на рис. 2.286. В моменты ti, t& t3 и т д., когда значение угла а становится равным допустимому, в ре зультате изменения знака приращения кода времени на правление движения заслонки меняется.
На этом формулировку задачи можно считать закон ченной.
Выб о р ме т о д а . Одна и та же задача может быть решена различными путями. Выбор оптимального ме тода ее решения производится с учетом использования конкретных технических средств. Конечно, на таком этапе возможна лишь ориентировочная оценка достоин ства того или иного способа решения задачи.
Обратимся к указанному выше примеру. В данном случае наиболее трудной задачей явится получение ар гумента, представленного в виде двоичного кода. Но поскольку заранее известно, что задача будет решаться программно, трудность заключается лишь в отыскании оптимального способа программирования.
Вторая задача, которую необходимо решить состоит в получении кода времени с заданными параметрами. Методы решения могут быть различными, причем выбор способа определяется величиной допустимой погрешно сти. Формирование кода времени можно осуществлять достаточно просто, с помощью так называемого про граммного счетчика. В этом случае подсчитывается вре мя выполнения цикла какой-либо из рабочих программ. Момент завершения цикла служит сигналом завершения
10!
определенного промежутка времени. По этому сигна лу код времени заносится в выделенную ячейку памяти. Чем короче цикл, тем точнее можно получить заданный временной интервал. Однако данный способ целесооб разно использовать при работе ЭВМ по простым цик лическим программам, когда по завершении одного цик ла начинается его повторение. Поскольку число команд в цикле нейзмепино (меняются лишь исходные данные), то время выполнения цикла также неизменно. В ЭВМ, решающих сложные логические задачи, характер про грамм иной. Здесь ход программы определяется ситуа цией, которая сложилась в данный момент времени и, в свою очередь, зависит от сигналов, поступающих от объектов управления. Поэтому выполняемая цикличе ская программа часто приостанавливается для осуще ствления более срочных операций, время выполнения которых учесть очень трудно. В результате код времени формируется через неравные временные интервалы.
По условию длина временных интервалов должна выдерживаться с точностью до ±10 мкс. Предположим
далее, что цикл оперативного |
ЗУ нашей |
ЭВМ равен |
2 мкс. Следовательно, при |
длительности |
цикла, не |
меньшем 0,1 с, допускается его изменение не более чем па 10:2= 5 обращений к ЗУ. В действительности дли тельность выполнения циклических программ намного меньше, а число обращений к ЗУ при прерывании или при останове основной программы может быть значи тельно больше 5. Поэтому при заданных условиях на стоящий метод формирования кода времени является неприемлемым.
Возможен и другой программный способ формиро вания кода времени, когда в качестве сигналов, от ко торых работает программный формирователь кода, ис пользуются сигналы генератора тактовой частоты ЭВМ. Однако из-за большой частоты следования сигналов на шей гипотетической ЭВМ от такого способа тоже сле дует отказаться, поскольку временной интервал (0,1 с) очень велик по сравнению с самой низкой из частот ге
нератора (например, 100 кГц) |
и для получения каж |
|
дой временной отметки нужно |
производить |
слишком |
большое количество операций, |
что снижает |
полезную |
производительность ЭВМ. Использование внешнего дат чика кода времени —• авточасов — будет наилучшим решением при данной ситуации. Такие устройства вхо дят в комплектацию некоторых ЭВМ (например, ЭВМ
102
«Урал-М»), На ipwc. 2.28а это устройство показано пунктиром.
Следует заметить, что первые два этапа составления программы, по сути дела, являются подготовительными. Иногда работы, проводимые на этих этапах, объединя ются под одним названием «разработка технологическо го алгоритма». Непосредственный процесс программиро вания начинается с разработки алгоритма решения за
дачи, или, как его |
еще называют, |
«блок-схемы |
про |
граммы». |
а л г о р и т м а . |
Алгоритмом |
назы |
Р а з р а б о т к а |
|||
вается необходимая |
последовательность арифметиче |
ских и логических действий по решению сформулирован ной задачи. Разработка алгоритма является первым этапом программирования. Для записи алгоритма ис пользуется форма, легко понятная человеку, хотя воз можно и не отражающая особенности ЭВМ, реализую щей данный алгоритм. Поскольку одну и ту же задачу можно решить различными путями, может быть состав лено несколько алгоритмов, из-которых выбирается тот, который решается с наименьшей затратой производи тельности конкретной ЭВМ.
Разработку алгоритма ввиду сложности этой задачи осуществляют в два этапа. Первый этап состоит в оп ределении последовательности арифметических и логи ческих действий, т. е. отражает сущность методики ре шения задачи. Второй этап включает в себя такие дей ствия, которые необходимы для нормальной работы ЭВМ. Сюда входят операции перевода исходных данных из десятичной системы счисления в двоичную, вывод результатов на печать и т. д.
Запись алгоритма может быть произведена различ ными способами. Ввиду своей наглядности наиболь шее распространение получила методика записи алго ритмов в виде блок-схем. В дальнейшем ,эти два этапа для простоты будут называться разработкой блок-схе мы программы. Однако наиболее прогрессивными спо собами записи алгоритмов являются алгоритмические языки. Подробнее о них будет сказано ниже.
Блок-схема программы представляет собой последо вательность прямоугольников, запись в каждом из ко торых указывает на характер проводимого действия. В качестве примера на рис. 2.29 показана блок-схема про
граммы |р«шения задачи, сфор мулироваганой в |
(начале |
раздела. Блоки с номерами 3—8 (пишутся |
на пер- |
103
ном этапе составления блок-схемы программы, а блоки с номерами 1, 2 и 9, 10, 11 добавляются на втором эта пе. Данная программа является разветвляющейся, по скольку после выполнения указанной в блоке операции (например, в блоке 5) переход к следующей операции
Рис. 2.29. Запись алгоритма в виде блоксхемы
определяется некоторым логическим условием. Так, ес ли результат оказался равным нулю, следующей опера цией оказывается действие, записанное в блоке 7. В том случае, когда переход к следующему блоку определяет ся в результате проверки какого-либо логического ус ловия, такой переход называется условным. Если пе
ня
реход к следующему блоку осуществляется без провер ки выполнения каких-либо условии, то переход назы вается безусловным. Так, например, переход от блока 7 к блоку 3 является безусловным переходом.
Ввод программы с носителя производится с помо щью стандартных, уже записанных в ЭВМ программ.
:Вызов последних осуществляется по команде, даваемой оператором с пульта управления ЭВМ. Операции, ука
|
занные в блоке 2, обозначают перевод программы п ис |
||||
|
ходных данных, записанных в десятичной системе |
счн- |
|||
|
. сления, в двоичную систему счисления. Блок 9 обозна |
||||
|
чает обратные действия. |
|
|
|
|
|
Вспомогательные операции вывода на печать резуль |
||||
|
татов вычислений вынесены из основной части блок-схе |
||||
|
мы программы. В действительности переход от блока 3 |
||||
|
к блоку 4 должен происходить через блоки 9, 10. |
В этом |
|||
|
случае программист получает на печатающем устройст |
||||
|
ве таблицу последовательных значений та. При необхо |
||||
|
димости по команде с пульта оператора (блок 11) |
вы |
|||
|
полнение программы может быть остановлено. |
|
|
||
|
Рассмотрим теперь, каким образом блок-схема про |
||||
I |
граммы отражает процесс изменения угла заслонки в |
||||
зависимости от дрэмен'и |
(рис. |
2.286). Подставим |
в |
вы- |
|
[ |
ражение a — Y АР+В |
такое |
значение времени |
/, |
при |
! |
котором величина угла приняла значение аь При таких |
:начальных условиях вычисление значения а (т. е. вы полнение операции, предусмотренное блоком 3) приве дет нас к блоку 4. Обозначим полученное значение уг ла через cti+i. При вычислении разности между преды
дущим значением |
угла |
и аг+1 в качестве |
а мо жн о |
за |
дать любое значение |
a2> a i> a i. Тогда |
разность |
Д= |
|
1 =сс,-—а;+) будет |
обязательно положительной, пооколь- |
'ку по условию ai+i = ai. Назначение этой операции за ключается в определении характера дальнейшего изме нения величины t. Положительное значение Д показыва ет, что регулирование осуществляется в сторону умень шения угла заслонки. Значение Д, меньшее нуля, пока зывало бы, что мы находимся на участке регулирования
между точками h и t2.
Итак, при выполнении условного перехода (по усло вию Д>0) начинается вычисление y = ai+i—at (блок 8).
■Назначение этого блока — не допустить уменьшения уг ла регулирования до значения, меньшего, чем сц. По скольку мы выбрали первоначальное значение t, приво дящее нас к ai4-i= ab то после выполнения вычисления
Ю5
получим у = 0 . Этот результат приводит нас к единст венному логическому выводу — следующее приращение времени должно быть положительным
Данное условие приведет к увеличению угла а и про цесс регулирования будет осуществляться в соответст вии с кривой на участке ti—12. Ввиду сказанного услов ный переход приводит нас от блока 8 к блоку 6. В этом блоке предусматривается увеличение значения Дн (пер воначального значения t) на 1, после чего безусловный переход приводит к блоку 3, где вычисляется новое зна чение утла а. На этом очередной цикл операций закан чивается и начинается новый, отличающийся от преды дущего лишь тем, что теперь разница между предыду щим и вычисленным значением бущет меньше нуля. Это условие приводит к тому, что последующей операцией будет проверка, не превышает ли полученное значение
авеличины аз и т. д.
Вданном алгоритме при вычислении последователь ности значений а, лежащих на участке U—/г, порядок выполнения операций выглядит таким образом:
~>5—>6-^3^4 .... Многократное выполнение последова
тельности одних и тех же операций называется циклом программы. В данном случае цикл состоит из блоков 3, 4, 5 и 6.
С о с т а в л е н и е п р о г р а м м ы. Эта работа являет ся наиболее ответственным этапом программирования и представляет собой исключительно сложный и трудоем кий процесс. В процессе составления программы проис ходит детализация блок-схемы программы с учетом ха рактеристик конкретной ЭВМ. В результате исходный алгоритм записывается в виде последовательности кон-
1 |
|
|
кретных |
элементарных |
|
|
|
операций. |
Ввиду своей |
3 |
В ы чи с л е н и е |
a i + ^ 4 a t i2t * b |
сложности ‘процесс про |
|
|
|
|
граммирования требует от |
|
4 |
|
д =а i ~ o c i + t |
ггросрa'MiMHCTOiB нзаряжен |
|
В ы чи сле ни е |
ного внимания, что, впро |
|||
j |
^ П р и & * 0 |
| n p u t > 0 |
чем, только 'уменьшает |
|
число ошибок, допущен |
||||
1 |
___у |
ных при программирова |
||
В - |
В ы чи сле ни е |
х = |
нии, но не исключает их. |
|
|
|
Процесс |
составления |
|
|
|
|
программы |
состоит из |
Рис. 2.30. Часть общей блок-схемы |
тРех этапов, |
вначале со- |
||
алгоритма |
|
ставлиется |
логическая |
lot
•схема программы, затем формируется программа в ус ловных адресах и, наконец, программа в действитель-’ ных адресах.
Логическая схема программы представляет собой детальную запись последовательности операций, реали зующих блок-схему программы. При этом в состав опе раций могут входить лишь те, выполнение которых пре дусмотрено конструкцией ЭВМ. В качестве примера представим в виде логической схемы программы опера ции, пер'еч1и'сле1н,ные в 'блоках 3, 4, S (|рис. 2.29). Для удобства эти блоки изображены отдельно на рис. 2.30. Логическая программа, реализующая указанные в бло ках операции, будет выглядеть следующим образом:
0 . t i + i • t i + i — t 2i + \ ;
1• А ■tzi+il
3.At2i+i-\-B;
4.V A tzi+i + В;
5.ai—a?:+i=A;
6.Условный переход по Д>0;
7.-у = а{+1—ар
8.Условный переход по у>0.
Составление программы заключается в решении двух вопросов — установлении последовательности команд самой программы и распределении памяти ЭВМ для хранения исходных данных, команд и т. д. Эти две за дачи противоречивы, поскольку нельзя распределить память, не зная числа команд в программе, а програм му, в свою очередь, нельзя составить, если неизвестны адреса исходных данных и результаты вычислений. Про тиворечие можно решить, если составлять программу, не обращая внимания на конкретные адреса ЭВМ и за писывая адреса в виде буквенных и цифровых обозна чений. Такие адреса называются условными. После со ставления программы в таком виде условные адреса заменяются конкретными числовыми значениями. Эта программа называется рабочей программой, или про граммой-в действительных адресах.
В качестве примера запишем в условных адресах программу, алгоритм которой приведен на рис. 2.30. Со ставление такой программы начинается с установления условных адресов ячеек, где предполагается размещать
107
команды, исходные данные и т. д. Размещение ячеек с условными номерами в памяти ЭВМ показано на рис. 2.31а. На датойом этапе под памятью подразумевается
и ) _____________________________________ 5)_______________________________
то нч _ЛО_
Адрес ячейа ш для разме *щечая команд
Р'О |
-РЧ |
Р+2 |
А |
в |
41 |
Р*3 |
0*6 |
Р*5 |
ос2 |
а |
1 |
р*В |
Константы |
|
|
||
с*0 |
сч |
с*г |
1*0 |
i*i |
1*2 |
|
М асси в |
с програм м ой |
ввода |
|
|
2i*t |
41 |
П |
|
|
||||
т о |
|
|
|
|
|
|||
1*3 |
|
|
0081 |
0081 |
0083 |
0086 |
0685 |
|
|
Содержание |
X |
X |
+ |
V"4 |
|
|
|
ячейки Оля разме |
Команды для реализации блоков 5,6 ,1 |
|||||||
щения исходных донна |
|
|
|
|
|
|
||
|
' Массив |
|
0W6 |
0101 |
о т |
0103 |
ОНО |
от |
(XV0 |
|
- |
|
‘1.1 |
«1 |
+ i |
А |
|
а*/ |
(х+2 |
оно |
||||||
0-1*1 |
|
|
о т |
о т |
0 /15 |
0116 |
от |
|
|
|
в |
o il |
а г |
0 |
1 |
а 1*1 |
|
CC-fJ |
|
|
о т |
|
|
|
|
|
|
|
|
|
|
|
|
|
Окончательные
результаты |
Операт ивное ЗУ |
|
|
С*3 |
|
|
Промежуточные |
результаты |
|
|
I |
Память |
звм |
\ |
|
I |
|
|
I |
|
Рис. |
2.31. Размещение ячеек |
с условными |
'номерами и н а м я т ЭВМ |
|
( а ) |
н рабочем программы к оперативном |
ЗУ ( б ) |
ЗУ вообще без уточнения его вида. Принимается усло вие, при котором номера ячеек, предназначенные для размещения команд программы, будут обозначаться, например, в виде /г + 0, /г-|-1, /г+2 .... номера ячеек для исходных данных будут обозначаться /+0, /+1 ... н т.д. Константами в пашем примере будут значения А, В, <ц< О и 1. Исходными данными являются значения /i+1( и ut, а окончательными результатами вычислений будем считать текущие значения а. Разместим перечисленные выше величины в соответствующих массивах, как пока зано в табл. 2.3. Получаемые в процессе вычисления промежуточные данные, а также значения Д н у будем размещать в массиве с адресами с+0, с+1 и т. д. Счи таем также, что гипотетическая ЭВМ, на которой реша ется наша задача, является трехадресной.
Имея теперь все исходные условия, запишем про грамму, составленную в условных адресах, в виде табл. 2.3.
Из таблицы видно, что команда умножения, разме щаемая в ячейке, /г+0, служит для выполнения опера ции возведения в степень значения /2;.|_ь Величина
I0S
|
А дрес |
|
К о м анда |
|
|
Р е зу л ь т а т оп ер ац и и , |
|||
|
|
|
|
|
|
||||
№ ком ан- |
|
|
|
А дрес |
|
заносим ы й |
в З У по |
||
|
ды |
; |
О п ерац и я |
1-й |
2-й |
3 -й |
тр еть ем у |
а д р е с у |
|
|
|
|
|
|
|
|
|||
1 |
£ |
0 |
У м н ож ен и е |
‘ |
/ + 0 |
/-1-0 |
с + 0 |
I 2 |
|
|
|
|
|
|
|
|
|
‘ н - 1 |
|
2 |
/Н - 1 |
У м н ож ен и е |
|
р + 0 |
с + 0 |
с + 0 |
A t2 |
|
|
|
|
|
|
|
|
|
|
л ‘ М -1 |
|
3 |
£ + 2 С л ож ен и е |
|
с + 0 |
р + 1 с + 0 •4 / г + 1 + в |
|
||||
4 |
к+ |
3 |
И звл еч ен и е |
корня |
с + 0 |
- |
d + 0 |
V А $ + 1 + |
В |
5 |
+ | - 4 |
Вы читание |
|
1 + 1 |
d + 0 |
с + 0 |
Д = а , — |
а £+1 |
|
6 |
/ Н - 5 |
У словн ы й |
п ер ехо д |
с + 0 |
р + 4 |
£ + 0 0 |
|
||
|
|
|
при Д > 0 |
|
|
||||
7 |
£ + 0 0 |
Вы читание |
|
d + 0 |
р + 2 |
с + 0 |
Г = « г+ 1 — оц |
||
8 |
£ + 0 1 |
У сл овн ы й |
п ер ех о д |
|
|
|
|
||
|
|
|
при y > 0 |
|
с + 0 |
р + 4 |
£ + • • ■ |
|
|
записана по адресу /+0. При выполнении операции про изводится двукратное обращение к ячейке /+ 0 (в соот ветствии с первым н 'вторым адресами). .Результат опе рации записывается в массив для размещения проме жуточных результатов в ячейке с адресом с+ 0.
По команде /г+1 из массива для размещения кон стант из ячейки с адресом ц+ 0 считывается постоянная А, из ячейки с адресом с+ 0 считывается значение t\.и, и эти две величины перемножаются. Полученный резуль тат записывается вновь в ячейку с+ 0, причем находив шаяся там величина t2i+i в момент записи стирается. Аналогичным образом выполняется и команда, записан ная по адресу/е+2.
О выполнении операции извлечения квадратного кор ня следует сказать несколько подробнее. Существуют ЭВМ, в которых упрощенная конструкция арифметичес кого устройства (АУ) не позволяет выполнять указан ное действие по одной команде. Это сравнительно ред кое действие, а также -ряд других операций могут быть, выполнены путем определенной посладователиноети че тырех арифметических действий, представляющих собой: небольшую программу, называемую стандартной под программой. Если бы конструкция АУ нашей гипотети ческой ЭВМ не позволяла бы извлекать квадратный ко-
Юй