
- •Содержание
- •5. Элементы языка программирования 66
- •6. Библиотека стандартных функциональных блоков 77
- •Введение
- •Общие сведения
- •Программистская модель плк с300
- •Внешний вид контроллера
- •Модули ввода/вывода
- •Распределение памяти контроллера
- •Программистская модель контроллера.
- •Регистры и флаги
- •Области операндов контроллера
- •Отображение входов и выходов
- •Область данных
- •Область меток
- •Область таймеров
- •Область счётчиков
- •Область периферии
- •Область расширенной периферии
- •Структура и обработка технологических программ
- •Система команд лмк
- •Логические команды
- •Команды присвоения битных операндов
- •Команды опроса битных переменных
- •Команды переходов
- •Команды пересылки
- •Арифметические команды
- •Команды сравнения
- •Логические байтовые и словные команды
- •Байтовые и словные команды сдвига
- •Индексная адресация.
- •Счетчики
- •Команды обработки счётчиков
- •Последовательность программирования счётчика
- •Примеры программирования счётчика
- •U е 5.0 ;Если сработал фотоэлемент на входе e5.0
- •Формат слова уставки счётчика
- •Таймеры
- •Команды обработки таймеров
- •Последовательность программирования таймера
- •Примеры программирования таймера
- •Формат слова уставки таймера
- •Организационные команды
- •Команды вызова, активизации и завершения блоков
- •Команды блокировки, деблокировки, задания допустимой длительности скана
- •Команды структурирования текста
- •Команды обработки канала связи
- •Элементы языка программирования
- •Организационные блоки
- •Особенности прерывания циклической обработки блоками ob2...Ob18
- •Программные блоки
- •Функциональные блоки
- •Формат функциональных блоков
- •Особенности использования формальных параметров
- •Блоки данных
- •Формат и использование блока назначений nb0
- •Комментарии к программе
- •Комментарий к строке
- •Комментарий к операнду
- •Комментарий к элементу цепи ркс и к цепи ркс
- •Библиотека стандартных функциональных блоков
- •Блоки организации связи по каналу “эвм”
- •Блоки обработки системы реального времени
- •Арифметические блоки
- •Блоки обработки модулей расширенной периферии
- •Системные блоки
- •Блоки регулирования
Программистская модель контроллера.
В памяти контроллера существует два варианта отображения битов: отображение побитовое и побайтовое. В побайтовом (нераспакованном) отображении все биты записаны подряд в байте, а в побитовом (распакованном) каждый n-ый бит является нулевым битом n-го байта в этой области. Между этими областями существует взаимное соответствие, т.е. если изменяется 1 бит из распакованной области, то в нераспакованной области этот бит находится и также заменяется.
Регистры и флаги
Для обработки программы пользователя в контроллере использован микропроцессор К1810ВМ86 (i80С188EB) с системой команд i80186. Для программиста контроллер представляет собой набор регистров и областей операндов. При использовании языка в форме ЛМК в набор регистров входят следующие элементы:
логический битный аккумулятор LA (регистр BL процессора);
два шестнадцатиразрядных словных аккумулятора RW1 (регистр AX) и RW2 (регистр DX);
два тридцатидвухразрядных вещественных аккумулятора RG1 и RG2 (расположены в памяти по адресам 0FF10H и 0FF14H соответственно);
два восьмиразрядных байтных аккумулятора RB1 (регистр BL) и RB2 (регистр BH);
регистр флагов F, включающий в себя: флаг нуля ZF, флаг переноса CF, флаг четности PF, флаг знака SF, флаг переполнения OF регистра состояния PSW процессора.
Значение битного аккумулятора LA определяется по значению бита 0 регистра BL: LA = 1, если бит 0 регистра BL равен 1 и LA = 0, если бит 0 регистра BL равен 0. Аккумулятор LA является основным регистром при логической обработке.
Аккумуляторы RW1, RW2 служат для арифметических, многоразрядных логических операций, групповой обработки областей операндов. Это наиболее часто используемые регистры.
Аккумуляторы RG1, RG2 служат для арифметической обработки вещественных чисел. Числа в RG1 и RG2 хранятся и обрабатываются в формате короткого вещественного числа. В этом формате мантисса занимает младшие 23 бита (0…22), смещенный порядок занимает следующие 8 бит (23…30) и знак числа занимает старший бит (31). В коротком вещественном формате могут быть представлены числа из диапазона 1E-38…3E+38 с точностью до шести десятичных цифр.
Аккумуляторы RB1, RB2 введены для обеспечения совместимости со структурой регистров контроллеров С100, С200 и облегчения переноса программ, написанных для С100, С200, в контроллер С300. Как и в С100, С200, в контроллере С300 аккумуляторы LA и RB1 выполнены на одном регистре (BL), поэтому при изменении одного из них изменяется другой, что следует учитывать при их совместном использовании. При разработке программ сразу для С300 не рекомендуется использовать регистры RB1, RB2.
Флаги служат для анализа результатов выполнения арифметических и логических операций.
Области операндов контроллера
Контроллер С300 состоит из центрального блока и блоков расширения (количество блоков расширения – от 0 до 16). Для удобства адресации входов/выходов в отображении введен номер блока n, в котором установлен модуль, содержащий указываемый вход/выход (центральный блок имеет номер 0, блоки расширения имеют номера от 1 до 16, определяемые подключением к модулям связи, см. табл. 2.1.). При обращении к входу (выходу), установленному в центральном блоке, номер 0 (вместо n) можно не указывать.
В контроллере имеются следующие области операндов:
отображение входов (nЕх.у; nEBх; nEWx; nEGx);
отображение выходов (nAx.у; nABx; nAWx; nAGx);
область данных (DRx, DLx, DWx; DWx.y; DGx);
область меток (Мх.у; MBx; MWx; MGx);
область таймеров (Тх);
область счётчиков (Zx);
область периферии (PBx);
область расширенной периферии (QBx; QWx; QBx.y; QWx.y).
Далее по тексту при упоминании операндов из области отображения входов/выходов всегда будет иметься в виду то, что они относятся к нулевому (центральному) блоку, т.е., к примеру, вместо обозначения nEx.y будет применяться Ex.y.
В пределах одного блока байты нумеруются от 0 до 31 (слова – от 0 до 30, вещественные операнды – от 0 до 28); биты в байте нумеруются от 0 до 7. Адреса отображений входов/выходов в памяти контроллера при организации сети межблочной связи типа “звезда”, в центре которой находится центральный блок с установленными в нем модулями ММС, приведены в таблице 2.6. Диапазон допустимых значений операндов указан в таблице 2.7.
Таблица 2.6: Адреса отображений входов/выходов в памяти контроллера.
Номер блока расширения |
Адреса битного отображения входов |
Адреса байтно-словного отображения входов |
Адреса битного отображения выходов |
Адреса байтно-словного отображения выходов | |
ЦБ |
0 |
20000H…200FFH |
2D000H…2D01FH |
21100H…211FFH |
2D220H…2D23FH |
ММС 1: | |||||
МБИ 1 |
1 |
20100H…201FFH |
2D020H…2D03FH |
21200H…212FFH |
2D240H…2D25FH |
МБИ 2 |
2 |
20200H…202FFH |
2D040H…2D05FH |
21300H…213FFH |
2D260H…2D27FH |
МБИ 3 |
3 |
20300H…203FFH |
2D060H…2D07FH |
21400H…214FFH |
2D280H…2D29FH |
МБИ 4 |
4 |
20400H…204FFH |
2D080H…2D09FH |
21500H…215FFH |
2D2A0H…2D2BFH |
ММС 2: | |||||
МБИ 1 |
5 |
20500H…205FFH |
2D0A0H…2D0BFH |
21600H…216FFH |
2D2C0H…2D2DFH |
МБИ 2 |
6 |
20600H…206FFH |
2D0C0H…2D0DFH |
21700H…217FFH |
2D2E0H…2D2FFH |
МБИ 3 |
7 |
20700H…207FFH |
2D0E0H…2D0FFH |
21800H…218FFH |
2D300H…2D31FH |
МБИ 4 |
8 |
20800H…208FFH |
2D100H…2D11FH |
21900H…219FFH |
2D320H…2D33FH |
ММС 3: | |||||
МБИ 1 |
9 |
20900H…209FFH |
2D120H…2D13FH |
21A00H…21AFFH |
2D340H…2D35FH |
МБИ 2 |
10 |
20A00H…20AFFH |
2D140H…2D15FH |
21B00H…21BFFH |
2D360H…2D37FH |
МБИ 3 |
11 |
20B00H…20BFFH |
2D160H…2D17FH |
21C00H…21CFFH |
2D380H…2D39FH |
МБИ 4 |
12 |
20C00H…20CFFH |
2D180H…2D19FH |
21D00H…21DFFH |
2D3A0H…2D3BFH |
ММС 4: | |||||
МБИ 1 |
13 |
20D00H…20DFFH |
2D1A0H…2D1BFH |
21E00H…21EFFH |
2D3C0H…2D3DFH |
МБИ 2 |
14 |
20E00H…20EFFH |
2D1C0H…2D1DFH |
21F00H…21FFFH |
2D3E0H…2D3FFH |
МБИ 3 |
15 |
20F00H…20FFFH |
2D1E0H…2D1FFH |
22000H…220FFH |
2D400H…2D41FH |
МБИ 4 |
16 |
21000H…210FFH |
2D200H…2D21FH |
22100H…221FFH |
2D420H…2D43FH |
Таблица 2.7: Типы операндов и диапазоны допустимых значений.
Операнд |
Диапазон допустимых значений операнда |
nEx.y |
0E0.0…0E31.7; 1E0.0…1E31.7; …; 16E0.0…16E31.7 |
nAx.y |
0A0.0…0A31.7; 1A0.0…1A31.7; …; 16A0.0…16A31.7 |
nEBx |
0EB0…0EB31; 1EB0…1EB31; …; 16EB0…16EB31 |
nABx |
0AB0…0AB31; 1AB0…1AB31; …; 16AB0…16AB31 |
nEWx |
0EW0…0EW30; 1EW0…1EW30; …; 16EW0…16EW30 |
nAWx |
0AW0…0AW30; 1AW0…1AW30; …; 16AW0…16AW30 |
nEGx |
0EG0…0EG28; 1EG0…1EG28; …; 16EG0…16EG28 |
nAGx |
0AG0…0AG28; 1AG0…1AG28; …; 16AG0…16AG28 |
Mx.y |
M0.0…M3007.7 |
MBx |
MB0…MB3007 |
MWx |
MW0…MW3006 |
MGx |
MG0…MG3004 |
DRx |
DR0…DR255 |
DLx |
DL0…DL255 |
DWx |
DW0…DW255 |
DGx |
DG0…DG254 |
DWx.y |
DW0.0…DW255.15 |
Tx |
T0…T511 |
Zx |
Z0…Z511 |
PBx |
PB0…PB31 (байт периферии) |
QBx |
QB0…QB511 |
QWx |
QW0…QW510 |
QBx.y |
QB0.0…QB511.7 |
QWx.y |
QW0.0…QW510.15 |
OBn |
OB0…OB63 (организационный блок) |
PBn |
PB0…PB255 (программный блок) |
FBn |
FB0…FB255 (функциональный блок) |
DBn |
DB0…DB255 (блок данных) |
KTxxx.x |
KT0.0…KT999.3 (словная константа в формате уставки таймера, где xxx – количество дискрет: xxx.0 – дискретность 0,01 с. xxx.1 – дискретность 0,1 с. xxx.2 – дискретность 1 с. xxx.3 – дискретность 10 с.) |
KZxxxx |
KZ0…KZ4095 (словная константа в формате уставки счётчика) |
KHxxxx |
KH0…KHFFFF (словная константа в шестнадцатиричном формате) |
KFxxxxx |
KF-32768…KF32767 (словная знаковая константа в десятичном формате) |
KUxxxxx |
KU0…KU65535 (словная беззнаковая константа в десятичном формате) |
KYxxx,xxx |
KY0,0…KY255,255 (словная беззнаковая константа в формате двух десятичных чисел) |
KBxxx |
KB0…KB255 (байтная беззнаковая константа в десятичном формате) |
KXxx |
KX0…KXFF (байтная константа в шестнадцатиричном формате) |
KC’xx’ |
байтная (один символ) или словная (два символа) константа в символьном формате |
KGx |
KG-999999.0…KG0.0…KG999999.0 или KG1.0E-38…KG3.0E38 (вещественная константа) |