Об управляющей вычислительной системе и прикладном программировании систем промышленной автоматики
Прикладное программирование в АСУ ТП во многом определяется архитектурой и свойствами элементов вычислительной системы. Качество программ систем промышленной автоматики зависит от знаний прикладного программиста, представления информации в памяти машины, способов адресации, системы команд и системы прерывания, организации ввода-вывода. Вычислительная система также представляется пользователю в оболочке операционной системы.
Числа с фиксированной запятой представляются в виде 16- и 32-разрядных двоичных чисел в дополнительном коде. Положение фиксированной запятой подразумевается в любом месте разрядной сетки. Числа с плавающей запятой представляются в виде 32-разрядных слов.
Максимальная емкость оперативной памяти систем промышленной автоматики, подключаемой к процессору, составляет 128 Кбайт. Память условно разделяется на страницы по 512 слов, исключение составляет нулевая страница размером 1024 слова.
Каждой задаче выделяется целое число страниц памяти (обычно не более 32 Кбайт). В СМ-2 оперативная память делится на произвольное число разделов.
Для обращения к данным, размещаемым в оперативной памяти, используются шесть схем адресации:
- прямая адресация к нулевой странице систем промышленной автоматики;
- прямая адресация к текущей странице систем промышленной автоматики;
- косвенная адресация через нулевую страницу систем промышленной автоматики;
- косвенная адресация через текущую страницу систем промышленной автоматики;
- индексная или автоиндексная адресация с использованием индексного регистра систем промышленной автоматики;
- индексная или автоиндексная адресация с использованием индексного регистра систем промышленной автоматики.
Изменения в организации памяти изменяют схемы адресации. При адресации в СМ-1 и СМ-2 различают адреса трех типов: базовые, относительные и исполнительные (базовый — адрес первой ячейки раздела, относительный - адрес ячейки памяти систем промышленной автоматики внутри раздела, исполнительный - номер ячейки памяти, к которому производится фактическое обращение).
При обработке данных прикладной программой можно использовать следующую регистровую память: регистр А, регистр Б, индексные регистры 7, 2, регистр номера команды, регистр базы 7, 2, регистры верхней и нижней границы памяти задач, регистр адреса возврата, регистр расширения и регистр переполнения.
Система команд процессоров АСУ ТП
В качестве процессоров в АСУ ТП применяется ряд мини- и микро-ЭВМ. Для примера приводим систему команд систем промышленной автоматики. Система разноформатная. Она разделена на следующие группы: адресные команды основного формата; адресные команды двойного формата; безадресные команды сдвигов; безадресные команды изменений и пропусков; команды ввода-вывода; команды расширенной арифметики; команды дополнительного набора (вычислительного комплекса). Программы мини- и микро-ЭВМ разрабатываются на мнемонических языках низкого уровня (МНЕМОКОД, АССЕМБЛЕР) или на языках высокого уровня Программы, составленные на языках низкого уровня, состоят из отдельных команд систем промышленной автоматики.
Элементы машинно-ориентированного языка ПЛК АСУ ТП
В качестве примера рассмотрим МНЕМОКОД мини-ЭВМ М-6000, М-7000, СМ.
Основные символы. К ним относятся буквы латинского алфавита от А до Z (заглавные), дополненные не совпадающими по начертанию буквами русского алфавита, арабские цифры 0—9, специальные символы:
+ (плюс);
— (минус);
, (запятая);
. (десятичная точка);
* (звездочка);
),( (скобки);
= (знак равенства).
Термы и выражения систем промышленной автоматики. Термом может быть: идентификатор, указатель счетчика адреса, число. Термы могут быть абсолютными и перемещаемыми. Идентификатор используется для обозначения команд, областей памяти, констант. Он может содержать буквы, цифры и точки и состоять из одного — пяти символов, причем первый символ должен быть буквой или точкой. Идентификатор определен, если он встречается в поле метки команды, записанной на мнемокоде. При записи команды структура должна быть следующей: поле метки, поле мнемокода, поле операндов и комментария. Примеры идентификаторов: ВОСК, Р1, ТОРАН. Счетчик ячеек программы систем промышленной автоматики используется для подсчета числа ячеек памяти, выделяемых для команд, адресов или данных, получаемых при трансляции каждого оператора. Каждому идентификатору присваивается текущее значение счетчика ячеек программы, причем максимальное значение счетчика 215 -1. Чтобы использовать текущее значение счетчика ячеек, записывают в поле операнда. Числа являются абсолютными термами и используются для указания констант, абсолютных адресов, приращения адресов, адресов устройств ввода-вывода. Используются десятичные и восьмеричные числа. Десятичные числа должны лежать в диапазоне от - 32768 до +32767. Восьмеричные числа содержат одну — шесть цифр, за которыми следует буква В. Максимально допустимое значение восьмеричного числа равно 177777В.
Термы с помощью знаков плюс и минус объединяются в выражение, значение которого вычисляется во время трансляции. Примеры выражений: МАР+ 5, ВОН + А13 —7. В зависимости от режима трансляции результирующая программа может быть абсолютной (загружаемой в одно и то же место памяти при каждом ее использовании) либо перемещаемой (загружаемой в произвольную область памяти в зависимости от свободного места). В соответствии с этим различают абсолютные и перемещаемые выражения.
Литералы систем промышленной автоматики. Они предназначены для ввода данных в исходную программу и используются только в перемещаемой программе. Признак литерала — знак равенства, ставящийся перед данными. Допустимы следующие типы литералов: = D — десятичное целое число; = F — десятичное число с плавающей точкой в диапазоне от 10“38 до 10+38; = В — восьмеричное число; =А — два алфавитно-цифровых символа; =L — абсолютное выражение.
Транслятор размещает литералы в ячейках памяти непосредственно после последней команды программы.
Команды и псевдокоманды систем промышленной автоматики. Мнемокоды команд приведены в параграфе 3 гл. XIV. Адресные команды используют обращение к памяти. К ним относятся:
команды выполнения арифметических операций:
команды расширенной арифметики
команды выполнения логических операций
команды управления ходом вычислительного процесса
Безадресные команды состоят из микрокоманд, которые могут объединяться в макрокоманды.
Псевдокоманды систем промышленной автоматики. Используются шесть групп псевдокоманд» которые несут информацию для транслятора.
1. Команды управления трансляцией, определяющие границы поля и адрес загрузки программы:
а) определение названия программы (пробел) NAM (название программы) название программы следует непосредственно за оператором ASMB.
б) установление начального адреса (пробел) ORG (восьмеричное число) Псевдокоманда ORG определяет начальный адрес абсолютной программы.
в) окончание программы
(пробел) END (пробел или идентификатор)
г) повторение (пробел) REP (абсолютное выражение) Оператор, следующий после этой псевдокоманды, повторяется и транслируется указанное операндом число раз.
2. Команды объединения результирующей программы систем промышленной автоматики, используемые для установки связи между основной программой и одной или несколькими подпрограммами: а) резервирование общей области памяти (пробел) СОМ (идентификатор! (размер!), идентификатор2 (размеру, идентификатор (размер),.. >.
Резервируется область памяти, которая может использоваться несколькими перемещаемыми подпрограммами.
б) определение идентификаторов входных точек
в) определение внешних идентификаторов
Каждый идентификатор определяет входную точку в другой подпрограмме.
3. Команды определения адресов и идентификаторов систем промышленной автоматики:
а) определение адресной константы. Определяется константа» являющаяся адресом операнда адресной команды или подпрограммы.
б) эквивалентность
в) определение абсолютной константа.
4. Команды резервирования памяти и определения констант:
а) резервирование области памяти да данных
б) определение символьной константы
в) определение десятичных констант
г) определение восьмеричных констант
5. Команды вызовов арифметических подпрограмм. Они используются только в перемещаемых программах для обращения к командам расширенной арифметики.
6. Команды управления печатью листинга систем промышленной автоматики. К ним относятся следующие команды: UNL — подавить печать, LST — продолжение печати, SKP — переход на новую страницу, SPS - пропуск строк, SUP-подавить печать дополнительных строк, которые создаются псевдокомандами, генерируемыми в несколько строк, UNS — разрешить печать дополнительных строк, HED — печать заглавий.
Макросредства Мнемокода (М-7000, СМ-1, СМ-2). Макросредства служат для более экономной и надежной записи программистом мнемокод-программы систем промышленной автоматики. Суть заключается в том, что повторяющиеся в программе группы команд мнемокода называют некоторым именем, которое образует код операции макрокоманды, и в дальнейшем программист использует этот код, не повторяя запись группы команд Макросредства
включают макроопределение, макрокоманду и макрорасширение, выполняемое специальным макроассемблером.
Макроопределение имеет следующую структуру систем промышленной автоматики:
- Оператор MCR, указывающий начало макроопределения.
- Прототип, определяющий формат команды (макрокоманды), соответствующей данному макроопределению.
- Набор операторов, составляющих макроопределение. Этими операторами могут быть любые операторы мнемокода, кроме END.
- Оператор MND, указывающий конец макроопределения.
Порядок записи значений параметров систем промышленной автоматики в макрокоманде должен соответствовать порядку перечисления параметров в прототипе. Код операции макрокоманды не должен совпадать с мнекодами машинных команд и псевдокоманд Постоянному параметру, записанному в поле метки прототипа, соответствует значение, записанное в поле метки макрокоманды.
Допускается соединение параметра с другими знаками, причем если нужно соединить некоторые знаки с параметром, то параметр записывается сразу же за этими знаками без разделителя, а если параметр соединяется с другими знаками, то после параметра записывается точка, а за ней знаки, с которыми соединяется параметр.
Макрокоманда содержит всю информацию, необходимую для генерации макрорасширения из соответствующего макроопределения.
Если отсутствует необходимость указания в макрокоманде значения некоторого постоянного параметра, то вместо операнда записывается запятая, которая должна отделить данный операнд от следующего. Если опущено несколько операндов систем промышленной автоматики, то вместо них ставится столько же запятых.
В качестве оператора макрокоманда может использовать список, представляющий собой ряд операторов, заключенных в круглые скобки и разделенных запятыми.
В макроопределении систем промышленной автоматики кроме постоянных параметров можно применять системные параметры: $Х и: SL, значения которым присваивает макроассемблер. Системные параметры можно использовать в любом поле оператора макроопределения (в поле метки, поле операции, поле операндов), как и другие параметры.
Системный параметр: SX служит для создания уникальных имен в операторах макроопределения при многократном обращении к нему. Параметр: SX — это трехразрядный порядковый номер макрокоманды, причем макроассемблер присваивает параметру: SX начальное значение 001, встретив в программе первую макрокоманду, а для каждой следующей макрокоманды это значение увеличивается на единицу. Значение: SX представляет собой константу, которая не изменяется при обработке макроопределения, соответствующего данной макрокоманде.
Для создания уникального имени систем промышленной автоматики параметр: SX соединяется с другими символами, максимальное число которых не должно превышать двух, чтобы идентификатор (имя) не содержал более пяти символов. Первый из этих символов должен быть буквой или точкой.
Системный параметр: SL позволяет обращаться к операторам макрокоманды с указанием только номера операнда в виде индекса при: SL., например, запись: SL(N) означает обращение к операнду макрокоманды, имеющему номер N. Можно обращаться и к элементам списка, являющегося операндом макрокоманды. Для экономии памяти используются фрагментарные макрорасширения, реализуемые с помощью генераторных переходов AIF и AGO (AIF — оператор условного перехода, AGO — оператор безусловного перехода). При этом записывается сложное макроопределение, а генерируется в виде макрорасширения только определенный его фрагмент в зависимости от условия, задаваемого в команде. Оператор систем промышленной автоматики, на который делается генераторный переход, должен иметь метку, состоящую из знака /, сопровождаемого одним — четырьмя символами (буквами или цифрами), причем первой после знака / должна быть буква.
Метки, начинающиеся с символа /, являются макрометками и не появляются в выходном тексте программы после генерации макрорасширений.