Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Справочник проектировщика систем автоматизации управления производством

..pdf
Скачиваний:
6
Добавлен:
19.11.2023
Размер:
39.87 Mб
Скачать

Рис. VI1.6. Блок-схема алгоритма составления годо­

вого

распнсанш!

вычислительных

работ

комплекса

 

 

 

 

 

 

ВС АСУII:

 

 

 

 

 

 

1 — формирование матрицы

смежности М

по графу

G: 2

— распределение задач по информационным ран­

гам;

3

— распараллелнпаине

графа

G,

определение

числа

и

номеров задач, смежных с г -

ЕЕ R v

С =

1, N

по информационному

критерию; 4

— контроль:

есть

ли

неучтенное при

моделировании

правило

прио­

ритета?

5 — определение

характеристик

вариантов

расписаний

печать;

6 — контроль:

все ли дин года

просмотрены по

данному

правилу

приоритета? 7

определение

ресурса

времени

работы

ВС в l - й

день;

8 — формирование очереди работ;

9

— определение

возможности решения в /-П день

каждой задачи

из

очереди;

10

— формирование частичного расписания

на l - й день;

11 — формирование полного расписания

на l день

по данному

правилу

приоритета;

1 2

стирание частичного

расписания

на / - i l

день;

13

запоминание

частичного

расписания

на

/-й

день;

 

 

 

 

 

1 4 — останов

 

 

 

 

 

 

Ql — суммарное время работы ВС по реализации задач разной периодичности пов­ торения в /-й рабочий день.

Приведем формулировку задачи составления оптимального расписания вычис­ лительных работ.

Исходные данные: 1) граф G = (R , Г) с общим числом задач N; 2) вектор Т =

= (7*,*); 3) вектор Д = (Щ)\

4)

вектор

б =

(е#).

Требуется

найти вектор

F =

(0,-)

и

матрицу т = || Тц ||, при которых целевая

функция достигает максимума Ф =

™ах

= П,ЯХ{max [0, (0/ — Д,)]} при огра-

N

L 1

=

 

Гц 5г 0.

ничешшх

/ =1

 

i= i

 

 

 

 

Блок-схема алгоритма составления расписания приведена на рис. VII. 6. Описанный алгоритм был использован при расчетах АСУП Изюмского прибо­

ростроительного завода им. Дзержинского. При этом в первой очереди на одной ЭВМ предполагалось согласно расчетам решение 28 задач годовой, 6 задач квартальной, 72 задачи месячной и 4 задачи недельно-декадной периодичности повторения. Было по­ лучено 17 информационных рангов расписаний, внутри которых задачи упорядочены по приоритетным правилам: 1) высший приоритет имеет задача с минимальным возмож­ ным сроком задержки; 2) для задач К-го ранга высшим приоритетом пользуются задачи, передающие информацию задачам (/< + 1)-го ранга.

Алгоритм учета объема работ, выполненного цехами предприятия. Алгоритм предназначен для расчета и выдачи ведомости фактически выполненного объема работ всеми цехами промышленного предприятия (рис. VI 1.7).

Описанный алгоритм реализован в виде программы, входящей в комплекс про­ грамм АСУП машиностроительного предприятия.

Алгоритм оптимального планирования загрузки оборудования. В этом алго­ ритме использован метод «наименьших разностей», приводящий к решению, опти­ мальному в смысле использования оборудования в пределах основного фонда рабо­ чего времени. Алгоритм предназначен длямногономенклатурного мелкосерийного производства, типичного для ряда машиностроительных и приборостроительных

предприятий.

Планирование начинается с наиболее крупного периода (например, года), после чего планируется загрузка оборудования на меньший интервал времени (полуго­ дие, квартал и т. д.).

Пусть план составляется на полугодие. Исходными данными служат число групп оборудования, трудоемкость намечаемых к производству изделий (в часах) и сум­ марный фонд рабочего времени оборудования (в часах). Предположим, что предпри­ ятие располагает п группами невзаимозаменяемого технологического оборудова­

ния. Планируется в течение года изготовить /п видов изделий Mit i = 1, m. Трудо­ емкость планируемых к производству изделий по группам оборудования обозначим

через Тф i = 1, м, j = 1, п. Суммарный фонд рабочего времени по каждой групце

 

 

Рис. VII.7. Блок-схема машинного алгори­

 

 

 

 

тма учета

выполненных

работ:

 

 

 

1 — ввод массива закрытых рабочих наря­

 

 

дов; 2

— расчет

но

каждому наряду фак­

 

 

тического нормированного времени (НВ);

 

 

3

— перевод НВ в часы и доли часа; 4

 

 

сортировка массива по номеру цеха-нзго-

 

 

товнтеля; 5 — сортировка массива по но­

 

 

меру

сетевых графиков внутри цехов; 6

 

 

подсчет

объема

работ за отчетный период

 

 

по каждому

сетевому

графику;

7 — под­

 

 

счет

объема

работ за отчетный

период по

 

 

цехам; 8

— сортировка

массива по шифру

 

 

профессии внутри цехов;

9 — подсчет объ­

 

 

емов

работ

по

видам

(шифру

профессий)

 

 

внутри

цехов;

1 0 — запись в накопитель

 

 

на магнитной ленте (НМЛ) исходного мас­

 

 

сива

закрытых

рабочих

нарядов;

// —

 

 

ввод перфокарт дневных мощностей по

 

 

видам

раоот и по цехам;

1 2 — расчет про­

 

 

цента

загрузки

цехов

по видам работ за

 

 

отчетный

период;

13

— проверка;

ключ

 

 

замкнут?

14

— ввод с НМЛ накопленных

 

 

с

начала

месяца объемов

работ

по цехам;

 

 

J 5

— суммирование

объемов

работ,

вы­

 

 

полненных

за отчетный

период, с

объе­

16 — расчет процента загрузки цехов по видам

мом

работ,

выполненных с начала месяца;

работе начала

месяца; 17 — запись на НМЛ

новых объемов работ с начала месяца;

1 8 —

печать

ведомостей фактически выполненного

объема работ

по цехам;

1 9

— останов

 

 

 

 

 

 

 

оборудования на полугодие обозначим как 5 ^ , / = 1, /г, к = 1,2. Требуется рас­ считать оптимальное производственное задание на первое полугодие при макси­ мальной загрузке оборудования.

В первом цикле расчетов определяем величину

Qi = S j J T i f i

затем определяем разброс

Ai = 9 in ia x - 171mi„; *=T~m; /= Т Г п .

Для всех тех видов изделий, у которых q-t < 0,1, разность А; не подсчитывается. Для остальных определяется ™in { А,- } и соответствующее ей изделие вводится в

план первого полугодия. Находятся остатки фонда рабочего времени за первое по­

лугодие ASjx = Sjt Tjj,

причем

i соответствует номеру

изделия, введенного

в план в этом цикле расчетов.

цикла расчетов служат

AS;1 и трудоемкости

Исходными данными для

второго

всех изделий за исключением уже введенного в план после первого цикла расчетов.

В

результате получим наименование второго изделия, которое следует ввести

в

план и т. д.

 

Расчет продолжается до тех пор, пока очередные А н е станут равными нулю

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

Загрузку оборудования по кварталам первого полугодия рассчитывают анало­ гичным образом, причем исходными данными служит план первого полугодия и т. д. В результате выполнения такой многошаговой процедуры получают план на любые требуемые интервалы времени. Блок-схема программы, реализующей описанный алгоритм, приведена на рис. VI 1.8.

Алгоритм таксировки данных по учету материалов. Целью таксировки является определение стоимости поступивших на склад либо отпущенных материалов. Ис­ пользуется формула

Si = PiQi,

где i — документо-строка информации в НМЛ; Si — стоимость поступивших (от­ пущенных) материалов по одной документо-строке; Q; — количество материалов;

Рис. VII.8. Блок-схема алгоритма планирования за­ грузки оборудования:

/ — ввод программы и исходных данных; *2 — про­ верка необходимости работы с данным изделием (если перед кодом изделия стоит знак «—», то из­ делие уже вошло в план, если «+», то изделие уча­ ствует в расчетах); 3 — подготовка к работе с оче­ редным изделием; 4 — вычисление q £ 5 — контроль:

ц< 0,1? 6 нахождение <7tm jn и m a x ; 7 — вычи­

сление Д •; 8

— нахождение 1ТЧП| д ф 9 — поиск ко­

да изделия

с

минимальным А .и приписывание этому

коду знака

«—»; 10 — выделение номера ячейки, с

которой начинается запись трудоемкости выбранного

изделия

и

засылка

содержимого

ячеек, следующих

за ней,

в

рабочие ячейки; I I

— вычисление остатка

фонда рабочего времени

оборудования и пересылка в

ячейки с суммарным

фондом,

организация цикла по

этапам;

12

— вывод

на печать кода, запланированно­

го для

изготовления в первой

половине планируе­

мого периода

изделия;

1 3 — счетчик

числа запла­

нированных

к изготовлению

изделий;

контроль: все

ли изделия уже включены в план?

 

Pi — цена материала. Заметим, что показатель является переменным, а показа­ тель Pi для каждого номенклатурного номера материала постоянен и вводится в программу расчета с НМЛ, па которой записан ценник.

Исходная информация о количестве материалов записана в НМЛ по макету,

представленному в табл. VÏI.4,

а информация о ценах — по макету, показанному

в табл. VI 1.5. При таксировке

данных сравниваются номенклатурные номера ма­

териалов, количество материалов умножается на цену и полученная сумма наряду с другими показателями записывается на чистую магнитную ленту по макету, по­ казанному в табл. VII. 6.

5. АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ

Понятие об алгоритмических языках. Для математического описания какойлибо задачи в любой области вводится язык, включающий в себя:

буквы, алфавит, слова; формальные правила распознавания «осмысленных слов» данной области (се­

мантика); формальные правила действия над словами, позволяющие одни слова переводить

в другие (синтаксис).

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

Внедрение алгоритмических языков уменьшает затраты времени и средств на программирование, сокращает потребность в программистах, ускоряет подготовку задач для решения на ЭВМ и облегчает обмен готовыми программами.

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

1. Языки математических вычислений:

АЛГОЛ-60 (ALGOL—ALGOrifhmic Language), АЛГОЛ-68, ФОРТРАН (FORTRAN—FORtniila TRA Nstator), PL /1 (Programming LanguagefOne) и др.

2. Языки для решения экономических задач:

КОБОЛ (COBOL СОпипоп Business Oriented Language), САОД (Система Автома­ тической Обработки Данных), TABSOL (TABular System Oriented Language), АЛГЭМ

Пример расположения информации нз приходно-расходных документов в ЭВМ

№ ячейки

 

 

 

Номера

разрядов

ячейки

 

 

I

2

 

3

4

 

5

6

 

 

 

 

 

Cli

Вид работы и код документа

№ пачки

№ документа

(12

№ документа

 

Код отдела

Код склада

 

Код

 

Месяц

Дата

Балансовый

сч

 

склада

 

 

 

 

 

 

субсчет

а л

Балансовый

счет

 

Код получателя или поставщика

 

 

н субсчет

 

 

 

 

 

 

 

 

 

 

Номенклатурный номер

материала

 

 

о»

Код единицы

Количество материала

 

 

 

измерения

 

 

 

 

 

 

 

Ch

Количество

материала

 

 

 

 

 

 

 

 

 

 

 

 

Т а б л и ц а

VI 1.5

 

Пример расположения информации из ценника матерналоп и ЭРМ

 

ЛГ5

 

 

 

Номера

разрядов

ячейки

 

 

 

 

 

 

 

 

 

 

 

ячейки

1

2

|

3

4

 

5

6

 

 

 

 

Ь х

Вид работы и код документа

Код отдела

Код склада

Ь2

Код .склада

 

Месяц

Дата обновления

Балансовый счет

 

 

 

 

 

(контроля)

картотеки

и субсчет

h

Балансовый счет

и

 

Код материала по форме СН

 

 

субсчет

 

 

Раздел формы СИ

|

К* позиции по форме

 

 

 

 

 

Код материа­

 

 

 

 

 

 

 

 

ь<

ла по форме

 

 

Номенклатурный

номер материала

 

СН

 

 

 

 

позиции

 

 

 

 

 

 

 

 

Ьь

Номенкла­

Код единицы

 

Прейскурантная цена

 

 

турный но­

 

измерения

 

 

 

 

 

 

мер мате­

 

 

 

 

 

 

 

 

 

риала

 

 

 

 

 

 

 

 

Ьь

Прейскурантная

цена

 

Цена

возвратной

тары

 

ъ.

Транспортные расходы

 

 

Наименование единицы

 

 

 

 

 

 

 

 

измерения

 

ьв

 

 

 

Наименование материала

 

 

Ьд

 

 

 

 

То же

 

 

 

 

»

b t o

к *

ячеикн

Ci

Cs

Ся

Со

Сч

Си

С ч

Пример расположения в ЭВМ итоговой информации, полученной в результате расчетов

 

 

 

 

Номера

ячеек

 

 

1

|

2

|

3

,4

|

5

6

Вид работы и код документа

пачки

 

№ документа

Лг

документа

 

Код отдела

Код склада

Код склада

 

 

Месяц

 

Дата

 

Балансовый сч

 

 

 

 

 

 

 

 

и субсчет

Балансовый

счет н

 

Код получателя

или поставщика

субсчет

 

 

 

 

 

 

 

 

Код материала по форме СН

 

 

 

 

 

Номенклатурный

номер материала

 

 

 

 

Наименование материала

 

 

 

 

 

То же

 

 

 

 

 

 

 

 

»

 

 

 

Код единицы

 

Наименование еди­

 

Цена материала

измерения

 

ницы измерения

 

 

 

Цепа

материала

 

 

 

 

Количество

 

 

 

 

Количество

 

 

 

 

 

 

 

 

Сумма

 

 

 

 

Сумма

 

 

 

 

-

 

АЛГоритмы Экономические и Математические), АЛГЭК (Алгоритмический язык для Экономических задач) и др.

3. Языки для решения информационно-логических задач:

С0М1Т, IPL-V (Information Processing Language), ALP (Autocode List-Processing language), LISP (List Information Symbol Processing), RECOL (REtrieval COmmand Language), JOVIAL, ЛЯПАС (Логический Язык Представления Алгоритмов Син­ теза), FLPL (Fortran List Processing Language)t SNOBOL (String Manipulation Language) и др.

4. Языки для описания алгоритмов управления и моделирования: МАЛ (Моде­ лирование и Алгоритмизация), АЛГОС (Алгоритмическое Описание Систем), ТЕХНОЛ (ТЕХНОЛогические алгоритмы), SIMULA (SIMUlation LAnguage),

SIMSCRIPT , SOL (Simulation Oriented Language), GPSS (General Purpose System Simulator), S/MPAC, CSL (Control & Simulation Language) и др.

5. Языки для автоматизации составления трансляторов:

TOOL, GARGOYLE, CLIP (Compiler Language for Information Processing) и др. 6. Автокоды:

АССЕМБЛЕР для ЕС ЭВМ, IBM/360 [68], АЛМИР для ЭВМ «МИР-1», АНА­ ЛИТИК для ЭВМ «МИР-2», АКИ.(АвтоКод Инженер) для ЭВМ «Минск-22», НАИРИ для ЭВМ «Напри», АВТОКОД-М для ЭВМ «Мииск-22» и др.

Алгоритмический язык АЛ ГОЛ-60. АЛГОЛ-60 является процедурно-ориентиро­ ванным языком. В настоящее время в мире создано несколько сотен трансляторов с АЛГОЛа на языки различных ЭВМ, в том числе на языки отечественных ЭВМ

«Минск-22», «Минск-32», БЭСМ-4М, БЭСМ-6, М-222 и др.

 

Основными символами АЛГОЛа являются:

 

 

прописные и строчные буквы латинского алфавита;

 

арабские цифры;

 

(целочисленное деление),

знаки арифметических операций + , —, /(деление),

X (умножение), f (возведение в степень, например,

а | 2 =

а2);

символы операции отношения (> ,

< ,

^ );

Д — конъюнкция,

знаки логических (булевских) операций

('] — отрицание,

Д— дизъюнкция, ZD — импликация, = — равнозначность); разделители (; , : 10 : = .);

скобки

( ) , [ ] ,

 

к

(идти на);

набор

служебных слов (на английском языке): go to — перейти

if — если;

then — то; else — иначе; for — для;

do — выполнить;

step — шаг;

until — до; while — пока; comment — примечание

(комментарий); begin — начало;

end — конец; own — собственный; Boolean — булевский (логический);

integer —

целый; real — вещественный; array — массив; switch — переключатель;

string —

строка; label — метка; value — значение; true — истина; false — ложь; procedure — процедура.

Служебные слова выделяются жирным шрифтом или подчеркиваются, причем каждое из них воспринимается транслятором как один символ.

Программа, составленная на языке АЛГОЛ, характеризуется линейностью записи, разграничением всех символов и формализацией действий над исходными данными, определяемых операторами программы.

Запишем на АЛГОЛе программу вычисления суммы

и

S = 1

АЛГОЛ-программа имеет вид

a\

begin integer s, v\ real

betta,

beîta: =

0.0; for s : =

l step

1 until v do

betta: =

beita H- (s X

s/(s +

5) — 4 X a X s) f 3 end

АЛГОЛ-программа представляет собой блок, заключенный в операторные скобки begin ... end, объединяющие в единое целое последовательность описаний и опера­ торов. В начале блока после символа begin следуют описания типов переменных,

массивов, переключателей и процедур.

 

 

 

 

В рассматриваемом примере описаны типы переменных integer s, v; real betta, a,

в соответствии

с чем

переменные s,

v должны быть

целыми, a betta, а — вещест­

венными.

 

 

 

 

 

 

 

 

Описание многомерных массивов (векторов, матриц и т. п.) имеет вид, например,

real array А [1 : п,

1

: т] — это описание матрицы А размером п X т,

состоящей

из

вещественных

переменных, 1

п — граничная

пара,

определяющая нижнее

(1)

и

верхнее

(п) значения соответствующего индекса.

придающий

переменней

 

В

примере

betta

: = 0.0 — оператор присваивания,

betta начальное значение «О». Символ присваивания означает: «присвоить перемен­ ной левой части значение, полученное в результате вычисления выражения, стоя­

щего справа

от символа : =

».

v do

betta: — beita +

(s X s/(5 + 5) — 4 x

a

Запись for s : =

1 step

1

until

X s) f 3

собой оператор цикла, состоящий из заголовка цикла for

do

и

представляет

оператора присваивания betta : =

В данном случае оператор присваивания вы­

полняется v

раз (вначале s =

1, затем s =

2 и т. д. до s =

v). Здесь 5 — параметр

цикла;

step

1 — шаг

по параметру

цикла,

равный 1; и — верхнее значение

пара­

метра

цикла.

 

 

 

 

 

 

 

 

 

Существуют еще две формы операторов цикла:

 

 

1) for i

=

2, 5,

10, 50 do z : = z -f

b [/], означающая, что для образования г скла­

дываются

не

все

переменные b[i]t

а только переменные b [2],

b [5],

/>[10], b [50]

(здесь

b [i] — обозначение

переменной с

индексом 6,); 2) for k

=

k + 1 while &

^ 100

do

у

— k + к f 2

6 ) ,

означающая, что цикл продолжается до тех

пор, пока

справедливо соотношение k ^

100.

 

 

Для

реализации условных и безусловных переходов в АЛГОЛ — программе

используется оператор перехода go to, после которого пишется метка того опера­ тора, к которому совершается переход, например: go to L — переход к оператору с меткой L.

Чтобы осуществить переход к одному из нескольких помеченных операторов, применяется переключатель switch.

Например: go to S [i];

switch 5 : = A, B, C, D, £, F;

Ax = a/b c;

B: x = a X a\

Оператор go to S [i] будет осуществлять переход к оператору с меткой В, если к моменту его выполнения i = 2, к оператору с меткой F, если i = 6 и т. д.

Описание процедур играет роль подпрограмм, используемых при программиро­ вании в машинных кодах. В общем алгоритме содержится только обращение к про­

цедурам. Пример

описания

процедуры:

procedure Scalar (a, b) scale: (п) result: (с);

vaiue п\ integer п\ real с\ real array a, b\

begin integer

i\

c: —

0.0;

for i = 1 step i until n do

c : — c + a [/’]

\

b [/']

end

 

Заголовок процедуры начинается служебным словом procedure и заканчивается разделителем «;», стоящим перед первым begin. Затем следует оператор тела про­ цедуры, помещенный в операторные скобки begin ... end. Заголовок процедуры содержит идентификатор процедуры (в данном примере это Scalar) и совокупность формальных параметров (в данном примере это a, b, л, с). При обращении к проце­ дуре вместо формальных параметров подставляются фактические параметры в тело процедуры, а затем выполняется тело процедуры (обычно это оператор). Например,

обращение

к рассмотренной процедуре вычисления записывается в виде Scalar

(м, V, ш, w).

При этом вместо формального параметра а в тело

процедуры подстав­

ляется

фактический параметр и, вместо b — подставляется v,

вместо п — подстав­

ляется

w, вместо с w.

 

 

Числа в АЛГОЛе записываются следующим образом:

 

39 — число

типа integer;

5,972);

 

5.972 — число типа real (=

 

—40.221О—3 — число типа

real (= —40,22- 10"3).

 

Арифметические выражения строятся в АЛГОЛе при помощи знаков арифме­ тических операций из операндов, которыми могут быть переменные, числа и зна­ чения функции, например:

а \ 3/Ь — / (д:) Н- delta

Порядок старшинства операций в бесскобочном арифметическом выражении следующие: 1) \ ; 2)х, /, ”3) + , —. Операции выполняются слева направо.

Для обозначения стандартных функций используются специальные идентифи­ каторы: abs (Е) — абсолютное значение £; sign (Е) — знаковая функция (+1, если Е > 0; —1, если Е < 0; 0, если Е ~ 0); sqrt (£) — корень квадратный из £; sin (£);

cos (£); In (£); exp (£) =

e£; arctan (£) — главное значение

арктангенса £; enti­

er (£) — выделение целой

части £ (например, entier (4.7) =

4).

Булевские (логические) выражения могут иметь только значения true — истина или false — ложь. Они строятся из первичных булевских выражений, в качестве которых могут выступать: значения true или false; отношения вида А Ф В; отноше­

ния, составленные

с использованием арифметических выражении, например,

sqrt (х) — у t 3 > 0;

функции psi (к).

Порядок выполнения операций в бесскобочном булевском выражении следую­ щий: 1) арифметические операции; 2) операции отношения; 3) булевские операции в следующем порядке: а) "|; б) Д ; в) V*» г) о ; д) = . Например, значение булевского

Рис. VII.9. Структурная схема участка газоразделения ироизиодства этилена-пропилена

выражения

а +

6 < с =

D /\~\Е при

а =

3,

b =

2, с =

4,

D =

true,

Е = false

находится

в следующем

порядке:

1)

3 -f

2

<

4 =

D Д ~]£;

2)

5 < 4

= ЛД~]£;

3) false ==: frue

/ \ “] false;

4) false=

true Д

true;

5) false =

true; 6) false.

Условный оператор имеет вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if а <

b then 51

else 52

 

 

 

 

Это означает, что если значение истинности отношения а <

b равно true (например,

а = 3,

Ь =

4), то выполняется оператор 5 /,

в противном случае выполняется опе­

ратор

52.

 

 

 

 

 

 

 

 

 

 

 

 

 

Для ввода и вывода данных используются процедуры: insymbol (ввести символ), outsymbol (вывести символ), legth (длина), inreal (ввести вещественное) outreal (вывести вещественное), inarray (ввести массив), outarray (вывести массив).

Применение алгоритмического языка МАЛ для записи структурной информации. Алгоритмический язык МАЛ является проблемно-ориентированным языком и в ка­ честве подмножества включает в себя язык ФОРТРАН-IV с необходимыми изме­ нениями для обеспечения возможности описания структурной информации.

Описание любой структурной схемы, в том числе производственного процесса или АСУП представляет собой цепной список. Заголовок списка начинается слу­ жебным словом СХЕМА, после которого идет идентификатор (наименование) описы­ ваемой структуры, а затем в скобках, образованных служебными словами СТАРТ

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

Запишем в качестве примера структуру участка газоразделения (УГ) произ­ водства этилена-пропилена (рис. VI 1.9) на языке МАЛ:

СХЕМА УГ СТАРТ.НЗ, НЗ.К1, К1.К2 СТОП Идентификаторы обозначают: УГ — участок газоразделения, НЗ — третья сту­

пень компрессии, Kl — ректификационная колонна JMb 1, К2 — ректификационная колонна № 2. Запись НЗ.К1 означает передачу информации или продукта (в данном случае пирогаза) из НЗ в К1.

Элементы структурной схемы можно записывать в любом порядке. При исполь­ зовании какого-либо элемента схемы вне списка ему присваивается дополнитель­ ная метка — метка списка, например, при раздельном (вне списка) использовании

обозначения колонны К1 следует писать УГ:К1.

 

 

 

 

Правило вставок дополнительных элементов в список поясним на примере. Пусть

требуется вставить в список УГ следующий список:

 

 

 

 

СХЕМА ОП СТАРТ.Б, Б.П1, П1.Н1, Н1.Н2, Н2.НЗ СТОП

 

 

Вставка производится в начало списка. Прежде всего записываем:

 

 

УГ

ОП СТАРТ.Б,

Б.П1, П1.Н1, Н1.Н2,

Н2.НЗ СТОП

 

 

После вставки список УГ приобретает вид:

 

 

 

 

СХЕМА УГ СТАРТ.Б, Б.П1, П1.Н1, Н1.Н2, Н2.НЗ, НЗ.К1, К1.К2 СТОП

Н2 —

 

Здесь ОП — отделение пиролиза, Б — бензин, П1 — печь пиролиза, HI,

первая

и вторая ступени компрессии соответственно.

переключающихся

связен

 

 

 

Для

обозначения

 

 

 

используются

логические

операторы (Р). Напри­

 

 

 

мер, запись

.NOT.P.B

 

 

 

 

 

 

А.Р,

Р.Б,

1, то выполняется переход

»

л/и ш

означает, что если P =

из А в

Б,

а если Р = 0

(т. е. .NOT.P =

I), то

 

 

системы

следует произвести переход из А в В.

 

При хранении в памяти ЭВМ сведений о структуре сложной АСУП можно ис­ пользовать экономичную запись структурной информации. Например, запись информации о структуре системы, приведенной на рис. VII. 10 в обычной форме МАЛа имеет вид

СХЕМА СТАРТ.Al, А1.Р2, Р2.А1, .NOT.P2.P3, РЗ.А1, .NOT.P3.B4 СТОП и состоит из 46 основных символов МАЛа.

Экономичная запись этой же информации имеет вид СХЕМА СТАРТ .А1:Р2.А1, :РЗ.А1, .54 СТОП

и состоит из 23 основных символов МАЛа.

Здесь перед обычным оператором (блоком) ставится знак «.», а перед логическим — знак «:». Ветви схемы после логического оператора разделяются запятой, причем вначале записывается ветвь, соответствующая выполнению логического условия (условие приводит к значению .TRUE.).

В данном примере выигрыш требуемой памяти ЭВМ за счет использования экономичной записи составляет 50%.

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

Общая ФОРТРАН-программа состоит из совокупности программ, которые по отдельности переводятся на промежуточный язык с помощью компилятора, а за­ тем объединяются программой-загрузчиком и образуют рабочую программу в ма­ шинных кодах.

Основные символы ФОРТРАНа: 26 заглавных букв латинского алфавита от А до Z; арабские цифры от 0 до 9; специальные символы. К специальным символам относятся:

+плюс;

минус;

*

знак умножения;

(например, А ** В = А&);

** символ операции возведения в степень

=

равно;

 

( ) скобки;

индексов;

 

разделитель в списках аргументов или

. точка десятичная и разделитель элементов;

Операторы отношений:

 

.EQ. равно;

 

:GT. больше;

 

:GE. больше или равно;

 

.LT. меньше;

 

..LE. меньше или равно;

 

.NE. не равно.

 

Например, A. GT. В означает А ^ В.

 

Логические операторы:

 

.NOT. не

 

.AND. и

_

.OR. или.

Например, X.AND..NOT.Y означает X Д Y. Служебные слова:

ASSIGN ТО (присвоить); CALL (вызвать); COMMON (общий); COMPLEX (комплексный); CONTINUÉ (продолжать); DIMENSION (размерность); DO (вы­ полнять); DOUBLE PRECISION (двойная точность); END (конец); EQUIVALENCE (эквивалентность); FORMAT (формат); FUNCTION (функция); GOTO (перейти к); IF (если); INTEGER (целый); LOGICAL (логический); STOP (останов); PROGRAM (программа); READ (читать); REAL (действительный); RETURN (возврат); SUB­ ROUTINE (подпрограмма); WRITE (писать); PRINT (печатать); INPUT ТАРЕ (входная лента); OUTPUT ТАРЕ (выходная лента); PUNCH (перфорировать); REWIND (перемотка ленты); BACKSPACE (установка ленты на начало зоны); END FILE (конец файла); .TRUE, (истина); .FALSE, (ложь).

На рис. VI 1.11 представлена записанная на бланке ФОРТРАНа программа вы­ числения по формуле

jç3

д;5

•••

sin * = * — зг +

*g|

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

Знак 1 в колонке 6 указывает,

что строка

является продолжением предыдущей.

В программе могут содержаться

примечания,

которые не учитываются при ее обра­

ботке и отмечаются буквой С в колонке 1. В нашем примере первая строка — при­ мечание.

Основные слова ФОРТРАНа называются переменными, которые определяются своими индентификаторами. Идентификаторы представляют собой набор букв и цифр, включающий от одного до шести символов.

Значения переменных могут лежать в одной из следующих областей определения: INTEGER (тогда первая буква идентификатора должна быть одной из следующих

I, J, К, L, М, N), REAL,'COMPLEX, LOGICAL.

 

 

В нашем примере переменная ITEM типа INTEGER, переменные X , ERr SUM ,

TEMP — типа REAL .

 

 

Константы ФОРТРАНа бывают следующих категорий:

 

1) числа:

 

 

типа

INTEGER (например: 0 5 -j-1933 —570);

1

(=

типа

REAL (например: —39.1972 0.0 508.61 Е +

508,61 X 10г = 5086,1));

 

4202 33515766 0861. D —02 — представление числа в форме D (DOUBLE PRECI­

SION);

COMPLEX (например: (26.0£ + 02 , .1 2 £ +

03)

(=

типа

2600 + / 120));

 

2)логические константы:

.TRUE. .FALSE.;

3)литералы:

(например: 'DATA',

7 NPUT/OUTPUT A R E A N0.5');

4) шестнадцатеричные

константы

например: Z1961A7T

ZBDFADA).

Массив чисел обозначается своим идентификатором, первая буква которого ука­ зывает на тип его элементов. Отдельные элементы массива определяются иденти­ фикатором массива, за которым следует список индексов, заключенных в скобках. Например, пусть задан двумерный массив LIST:

11

51

2

13

61

10

57

33

28

8

5

12,

в котором обозначим строки буквой /, столбцы — буквой J : (LIST (/, J) для / =

=1, 2, 3, 4 и J = 1, 2, 3).

Значение элемента массива LIST (2, 3) равно 33.

Индексы должны быть только типа INTEGER, могут быть индексные выраже­ ния, например: CUPEV (J + 3,8 * N — 9). Для указания размерности массива с целью резервирования для него памяти используется оператор вида DIMENSION DK (10,50) — описание двумерного массива DK размерностью 10 X 50.

Основной вид операций в ФОРТРАНе — арифметические инструкции. В нашем примере (рис. VII. 11) эго SUM = 0. ITEM = 0 TEMP = X

SUM = SUM + TEMP

TEMP = — X * X * TEMP 1(2. * FLOATF(ITEM) (2. о FLOA TF(ITEM) -f

D)

Справа от знака присваивания «=» стоит арифметическое выражение. Опера­ ции в бесскобочном арифметическом выражении выполняются слева направо с соб­ людением следующей последовательности:

4 ) ф * ; 2 ) и» / ; 3 ) -J— —

(при наличии скобок этот порядок может быть изменен).

Соседние файлы в папке книги