1.1.4_Раздел_2.2 (539828), страница 2
Текст из файла (страница 2)
Примеры использования командДалее приведены примеры использования некоторых команд (для более полного изучения системы команд необходимо воспользоваться руководством попрограммированию контроллеров SYSMAC CPM2A).AND, ANDLD, ANDNOT, LD, LDNOT, OR, ORLD, ORNOT – команды релейно-контактной схемы46Области операндовВБитIR, SR, AR, HR, TC, LR, TRОграничений количества любой из этих команд или порядка их применениянет, если программа вмещается в отведенную память. Ниже приведены примерыиспользования этих команд.Как уже указывалось выше, контроллер использует два языка программирования: язык релейно-контактных схем РКС (лестничных диаграмм) и язык инструкций.В табл.2.2.9 представлен внешний вид элементов, используемых при составлении релейно-контактных схемТаблица 2.2.9ЭлементОписаниеЗамыкающий контактРазмыкающий контактСоединительная вертикальная линияСоединительная вертикальная линияВыходВыход с инверсиейФункциональный блокНа рис.2.2.6 приведен пример использования рассматриваемых команд наязыке РКС, а в табл.2.2.10 представлена та же программа на языке инструкций.Рис.2.2.6.
Пример программы на языке РКСТаблица 2.2.10Адрес00000000010000200003000040000500006ИнструкцияLDLDNOTORANDLDANDNOTOUTLDОперанд0.000.010.020.0310.000.04Адрес00007000080000900010000110001247ИнструкцияANDNOTLDANDNOTORLDOROUTОперанд0.060.060.070.0810.01TIM – таймерОбозначение на схемеОбласти операндовNSVНомер таймераЗаданное значение (слово BCD)#IR, SR, AR, HR, LR, DM,#Заданные значения лежат в диапазоне 000,0…999,9. Десятичная точка невводится. Каждый номер ТС от 000 до 255 (номер записывается в десятичномформате) можно использовать в качестве определителя только для одной командытаймера или счетчика. ТС 000…ТС 015 рекомендуется использовать в командезадания TIM, только если они не требуются для команды TIMH(15).TIMH(15) - высокоскоростной таймерОбозначение на схемеОбласти операндовNSVНомер таймераЗаданное значение (слово BCD)#IR, SR, AR, HR, LR, DM,#Заданные значения лежат в диапазоне 00,00…99,99 (хотя можно ввести 00,00и 00,01.
00,00 запретит таймер, т.е. сразу включает флаг завершения, а 00,01 небудет надежно считан). Десятичная точка не вводится.Рис.2.2.7. Пример использования таймера TIMHВ примере на рис.2.2.7 показан таймер с заданием, установленным как константа. IR010.02 станет = 1 только после того, как IR000.00 станет = 1 как минимум на 1,5 с. Когда IR000.00 станет = 0, таймер сбросится и IR010.02 установитсяв 0.На языке инструкций эта программа представлена в табл.2.2.11.48Таблица 2.2.11Адрес00014LDИнструкция00015TIMH(15)0001600017LDOUTОперанд0.00000#0150TIM00010.02CNT – счетчикОбозначение на схемеОбласти операндовNSVНомер таймераЗаданное значение (слово BCD)#IR, SR, AR, HR, LR, DM,#Каждый номер ТС в диапазоне 000…255 можно использовать в качестве определителя только для одного таймера или счетчика.CNT служит для отсчета вниз от заданного значения, когда сигнал на счетном входе (СР) изменяется из 0 в 1, т.е.
текущее значение будет декрементировано (уменьшено на 1).Счетчик сбрасывается входом сброса (R). Когда R изменяется из 0 на 1, текущее значение сбрасывается до задания. Пока R = 1, текущее значение не декрементируется. Отсчет вниз от задания начнется снова, если R станет = 0.В следующем примере (рис. 2.2.8) CNT служит для создания расширенныхтаймеров путем счета битов импульсов часов в области SR.CNT001 cчитает сколько раз бит часов частотой 1 сек (SR255.02) переключается из 0 в 1. Здесь IR000.00 используется для управления числом импульсов приработе CNT.Поскольку в данном примере задание для CNT001 = 700, флаг завершениядля CNT001 включается в 1, когда истекут 1*700 раз или 11 минут и 40сек.
Этоприведет к включению IR016.02 в 1.49Рис.2.2.8. Пример использования команды CNTCNTR(12) - реверсивный счетчикОбозначение на схемеОбласти операндовNSVНомер таймераЗаданное значение (слово BCD)#IR, SR, AR, HR, LR, DM,#Каждый номер TC в диапазоне 000…255 можно использовать в качестве определителя только для одного таймера или счетчика.CNTR(12) - реверсивный, двухсторонний кольцевой счетчик, т.е. он служитдля счета от 0 до задания (SV) в зависимости от изменений условий исполненияна входе инкрементирования (Ii) и входе декрементирования (Di).Текущее значение (PV) будет инкрементироваться на 1 при изменении сигнала на входе Ii CNTR(12) с 0 на 1.
Текущее значение (PV) будет декрементироваться на 1 при изменении сигнала на входе Di CNTR(12) с 0 на 1. Если сигналына обоих входах не изменяются или изменяются синхронно, текущее значениесчетчика не изменяется.CNTR(12) сбрасывается входом R. Когда R изменяется из 0 в 1, текущее значение сбрасывается в 0. Пока R=1, текущее значение счетчика не изменяется.Счет снова начинается когда R станет равным 0.50SET и RESET - установка и сбросОбозначения на схемеОбласти операндовВБитIR, SR, AR, HR, LRSET включает битовый операнд в 1, когда условие исполнения = 1 и не влияет на состояние операнда, когда условие исполнения = 0.
RESET устанавливаетбитовый операнд в 0, когда условие исполнения = 1 и не влияет на состояние операнда, когда условие исполнения = 0.KEEP(11) - сохранить состояниеОбозначение на схемеОбласти операндовВБитIR, SR, AR, HR, LRЛюбой выходной бит можно использовать только с одной командой, котораяуправляет его состоянием.KEEP(11) служит для поддержания состояния заданного бита, исходя из двухусловий. Данные условия обозначаются S и R.
S - вход установки в 1, R - входсброса. KEEP(11) работает как реле с защелкой, которое устанавливается сигналом S и сбрасывается сигналом R.DIFU(13) и DIFD(14) - установка бита на 1 цикл (после фронта 0/1 и 1/0)Обозначения на схемеОбласти операндовВБитIR, SR, AR, HR, LRВ следующем примере (см.
рис.2.2.9) IR000.14 установится в 1 на один цикл,когда IR000.00 переходит из 0 в 1, IR000.15 установится в 1 на один цикл, когдаIR000.00 переходит из 1 в 0.51Рис.2.2.9. Пример использования команд DIFU и DIFDIL(02) и ILC (03) - Секция INTERLOCK и INTERLOCK CLEARОбозначения на схемеIL(02) всегда используется совместно с ILC(03) для создания секции INTERLOCK, которая служит для разрешения ветвления. Если условие исполнения дляIL(02)=1, то программа будет выполняться, как написано, т.е. это условие служитдля работы всех строк программы после того места, где расположена командаIL(02) до того места, где расположена ближайшая ILC(03).Если условие исполнения для IL(02)=0, секция INTERLOCK между IL(02) иILC(03) будет обрабатываться, как указано в табл.2.2.12.КомандаOUT и OUT NOTIM и TIMH(15)CNT, CNTR(12)KEEP(11)DIFU(13), и DIFD(14)Все другие командыТаблица 2.2.12ОбработкаЗадание и бит устанавливается в 0СбросСохраняется текущее значениеСохраняется состояние битаНе выполняются (см.
ниже)Команды не выполняютсяIL(02) и ILC(03) не обязательно использовать в паре. IL(02) можно использовать несколько раз, каждая IL(02) создает секцию INTERLOCK до ближайшейILC(03). ILC(03) можно использовать только тогда, когда для нее имеется хотябы одна IL(02) между ней и любой предыдущей ILC(03).На рис.2.2.10 представлен фрагмент программы с двумя командами IL(02) иодной командой ILC(03).Когда условие исполнения для первой IL(02)=0, в TIM127 будет занесенозначение 1,5 c. CNT 001 не изменится. IR010.04 станет = 0. Когда условие исполнения для первой IL(02) = 1, а условие исполнения для второй IL(02)=0.
TIM127будет отрабатываться в зависимости от состояния IR000.01, CNT 001 не изменится, IR010.04 станет = 0. Когда условие исполнения для второй IL(02)=1, программа будет исполняться, как написана.На языке инструкций рассматриваемая программа представлена в табл.2.2.13.52Рис.2.2.10. Пример использования команд IL(02) и ILC(03)Адрес00033000340003500036Инструкция ОперандLDIL(02)LDTIM000370003800039LDIL(02)LD0.000.01127#00150.02АдресТаблица 2.2.13Инструкция Операнд000400004100042ANDNOTLDCNT000430004400045LDOUTILC(03)0.041.00001#1000.0510.040.03Команды математических вычисленийВ табл.2.2.14 и 2.2.15 представлены соответственно команды двоичнодесятичных (BCD) и двоичных вычислений.Таблица 2.2.14КомандаОписаниеКомандаОписаниеADD (30)SUB (31)MUL (32)DIV (33)DEC (39)INC (38)СложениеВычитаниеУмножениеДелениеДекрементИнкрементADDL (54)SUBL (55)MULL (56)DIVL (57)ROOT (72)Сложение чисел двойной длиныВычитание чисел двойной длиныУмножение чисел двойной длиныДеление чисел двойной длиныКвадратный кореньОбозначения на схеме53Область операндов (в формате BCD)Au и Ad (первое и второе слагаемое), Mi и Su (уменьшаемое и вычитаемое), Md и Mr (множитель и множимое), Dd и Dr (делимое иделитель)R (слово результат)Wd (изменяемое слово)IR, SR, AR, HR,TC, LR, DM, #IR, SR, AR, HR, LR, DMIO, AR, DM, HR, LRОбласть операндов для команд, оперирующих с двойными словами (в формате BCD)Au и Ad (первое слово первого и второго слагаемого), Mi и Su IR, SR, AR, HR, TC, LR,(первое слово уменьшаемого и первое слово вычитаемого), Md и DMMr (первое слово множителя и первое слово множимого), Dd и Dr(первое слово делимого и первое слово делителя)R (слово результат)IR, SR, AR, HR, LR, DMКомандаADB (50)SBB (51)MLB (52)DVB (53)Таблица 2.2.15ОписаниеСложениеВычитаниеУмножениеДелениеОбозначения на схемеНа рис.2.2.11 представлена программа, реализующая вычисления выражениявида X = ( A + 15) ⋅ B и выводит результат вычисления на выходы 010.00 - 010.07.