6. Языки программирования промышленных контроллеров (1245064), страница 3
Текст из файла (страница 3)
Любая следующая команда будет работать с содержимым АК, равным 35 (если это не команда LD).Булевы операторы. Оператор S (Set) устанавливает в true указанный операнд, если текущий результатимеет булево значение true, и ничего не делает, когда содержимое АК равно false. Оператор R (Reset) сбрасывает указанную булеву переменную в false, если АК имеет значение true, и ничего не делает в противном случае.Команды S и R не имеют модификаторов.Модификаторы операций: N – булево отрицание; ( - отложенная операция; C – условная операция.“N” - булево отрицание операнда. “(” - “открывающая скобка” означает, что выполнение команды должно бытьотложено до тех пор, пока не встретится оператор “закрывающая скобка”. Это обусловлено тем, что существуеттолько один регистр-аккумулятор.
Поэтому для изменения порядка выполнения команд некоторые операции следует отложить. “С” - означает, что прикрепленная к нему команда выполняется только в том случае, когда в АКбулево значение true. Может использоваться совместно с идентификатором N, для указания того, что командабудет выполняться, когда АК имеет булево значение false.Пример: разработка программы на различных языках (IL, ST, FBD)Разработать программу, осуществляющую выбородного из двух чисел (in1, in2), ближайшего к третьему (pattern), и передачу его на выход Q.in1in2patternQРешение на языке ILLD in1(* загрузка в аккумулятор (АК) значения числа in1 *)SUB pattern(* вычисление разности in1 - pattern *)ABS(* определение абсолютного значения разности *)ST tmp(* сохранение в tmp абсолютного значения разности *) tmp – промежуточная переменнаяLD in2(* загрузка в аккумулятор значения числа in2 *)SUB pattern(* вычисление разности in2 - pattern *)ABS(* вычисление абсолютного значения разности *)LT tmp(* сравнение (<) абсолютных значений двух разностей *)JMPCN ret_in1 (*условный переход на метку ret_in1, если (АК)=false *)LD in2(* загрузка в аккумулятор значения числа in2 *)GOTO ret_in2(* безусловный переход на метку ret_in2 *)ret_in1: LD in1(* загрузка в аккумулятор значения числа in1 *)ret_in2: ST result(* сохранение в result наиболее близкого к pattern числа *)Решение на языке ILРешение на языке ST9Решениена языке FBD10.