06_InstructionSet_r (1087186), страница 7
Текст из файла (страница 7)
Если это значение достигнуто или превышено, то функция приемасообщений завершает работу. Команда приема требует, чтобы пользовательопределил максимальное количество символов, даже если оно специально неиспользуется в качестве условия завершения. Это необходимо потому, что командеприема необходимо знать максимальный размер принимаемого сообщения, чтобыданные пользователя, помещенные после буфера сообщений, не былиперезаписаны.Максимальное количество символов может использоваться для завершениясообщений в протоколах, в которых длина сообщений известна и всегда одинакова.Максимальное количество символов всегда используется в сочетании собнаружением конечного символа, межсимвольного таймера или таймерасообщения.Ошибки, обнаруженные при проверке четности: Функция приема автоматическизавершает работу, если аппаратура сообщает об ошибке четности в принятомсимволе.
Ошибки при проверке четности возможны только в том случае, если вSMB30 или SMB130 активизирована проверка четности. Эту функцию невозможновыключить.Завершение по инициативе пользователя: Программа пользователя можетзавершить функцию приема сообщений, выполняя другую функцию приемасообщений и установив в ноль бит деблокировки (EN) в SMB87 или SMB187. Этоприводит к немедленному завершению функции приема сообщений.Прием данных, управляемый прерываниямиДля достижения полной гибкости в поддержке протоколов вы также можете приниматьданные под управлением прерываний.
Каждый принимаемый символ генерируетпрерывание. Принятый символ помещается в SMB2, а результат контроля четности (еслиактивизирован) помещается в SM3.0 непосредственно перед исполнением программыобработки прерывания, назначенной событию «Символ принят». SMB2 – это буфер дляпринятого символа при свободно программируемом обмене данными. Каждый символ,принятый в режиме свободно программируемого обмена данными, помещается по этомуадресу для облегчения доступа к нему из программы пользователя. SMB3 используетсядля режима свободно программируемого обмена данными и содержит бит ошибкичетности, который устанавливается, когда в принятом символе обнаруживается ошибкачетности.
Все остальные биты этого байта зарезервированы. Используйте этот бит дляотклонения сообщения или для генерирования отрицательного квитирования этогосообщения.Если управление с помощью прерываний используется при высоких скоростях передачи(от 38,4 до 115,2 Кбод), то время между прерываниями очень мало. Например, прерываниедля скорости 38,4 Кбод составляет 260 микросекунд, для скорости 57,6 Кбод −173 микросекунды, а для 115,2 Кбод − 86 микросекунд. Во избежание потери символовобеспечьте краткость программ обработки прерываний или используйте команду приема.94Набор команд S7–200Глава 6СоветSMB2 и SMB3 совместно используются портами 0 и 1.
Когда прием символа в порт 0приводит к исполнению программы обработки прерывания, назначенной этому событию(прерывающее событие 8), SMB2 содержит символ, принятый портом 0, а SMB3 содержитрезультат контроля четности этого символа. Когда прием символа в порт 1 приводит кисполнению программы обработки прерывания, назначенной этому событию(прерывающее событие 25), SMB2 содержит символ, принятый портом 1, а SMB3содержит результат контроля четности этого символа.Пример: Команды передачи и приемаMAINNetwork 1LDMOVBMOVBMOVBMOVW//Эта программа принимает строку символов, пока не//будет получен символ перевода строки.//Затем сообщение возвращается отправителю.SM0.1//В первом цикле:16#09, SMB30 //1.
Инициализировать свободно//программируемый обмен данными://- выбрать 9600 Бод.//- выбрать 8 битов данных.//- выбрать отсутствие контроля//четности.16#B0, SMB87 //2. Инициализировать управляющий//байт для приема сообщений://- Прием сообщений разблокирован.//- Обнаруживать символ конца//сообщения.//- Обнаруживать условие//бездействия линии, как условие//начала сообщения.16#0A, SMB89 //3.
В качестве символа конца//сообщения установить OAH//(перевод строки).+5, SMW90//4. Установить время ожидания//бездействия линии равным 5 мс.MOVB100, SMB94ATCHINT_0, 23ATCHINT_2, 9ENIRCVVB100, 0//5.////6.////7.////8.////9.//Установить максимальноеколичество символов равным 100.Назначить прерывание 0событию "Прием завершен".Назначить прерывание 2событию "Передача завершена".Разблокировать прерывания состороны пользователя.Разблокировать блок приема сбуфером в VB100.95Программируемый контроллер S7-200. Системное руководствоПример: Команды передачи и приема, продолжениеINT0Network 1LDB=MOVBATCHCRETINOTRCVINT1Network 1LDDTCHXMTINT296//Программа обработки прерываний для//завершения приема://1.
Если статус приема показывает, что принят// конечный символ, то назначить// 10-миллисекундный таймер для запуска// передачи и возврата.//2. Если прием завершен по любой другой// причине, то начать новый прием.SMB86, 16#2010, SMB34INT_1, 10VB100, 0//Прерывание, управляемое 10-миллисекундным//таймером://1. Отсоединить прерывание, управляемое//таймером.//2. Передать сообщение обратно пользователю.SM0.010VB100, 0Network 1LDRCV//Прерывание при завершении передачи://Разблокировать новый прием.SM0.0VB100, 0Набор команд S7–200Глава 6Команды получения и установки адреса портаКоманда получения адреса порта (GPA) считываетадрес станции из порта CPU S7–200, указанного впараметре PORT, и помещает значение по адресу,указанному в ADDR.Команда установки адреса порта (SPA) устанавливаетадрес порта станции (PORT) на значение, указанное вADDR.
Новый адрес не сохраняется постоянно. Посленового пуска соответствующий порт возвращается кпоследнему адресу (к тому, который был загруженсистемным блоком).Сбойные состояния, устанавливающие ENO = 0 :■ 0006 (косвенный адрес)■ 0004 (попытка выполнить команду установки адреса порта впрограмме обработки прерываний)Таблица 6–14.
Допустимые операнды для команд получения и установки адреса портаВходы/выходыТип данныхОперандыADDRBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константа(Постоянное значение действительно только для командыустановки адреса порта.)PORTBYTEконстантадля CPU 221, CPU 222, CPU 224:для CPU 224XP, CPU 226:00 или 197Программируемый контроллер S7-200. Системное руководствоКоманды сравненияСравнение числовых величинКоманды сравнения используются для сравнения двухвеличин:IN1 = IN2IN1 > IN2IN1 >= IN2IN1 < IN2IN1 <= IN2IN1 <> IN2Операции сравнения байтов не учитывают знака.Операции сравнения целых учитывают знак.Операции сравнения двойных слов учитывают знак.Операции сравнения вещественных чисел учитываютзнак.Для LAD и FBD: Если сравнение истинно, командасравнения включает контакт (LAD) или выход (FBD).Для STL: Если сравнение истинно, то команда сравнениязагружает «1» в вершину стека или выполняетлогическое сопряжение значения «1» со значением ввершине стека в соответствии с таблицей истинностидля И или ИЛИ (STL).Если вы работаете с командами сравнения IEC, то выможете использовать на входах различные типы данных.Однако значения на обоих входах должны быть одноготипа.УказаниеПри следующих условиях речь идет о фатальныхошибках, которые приводят к тому, что S7–200немедленно останавливает обработку вашейпрограммы:■ Обнаружен недопустимый косвенный адрес (в любойкоманде сравнения)■ Обнаружено недопустимое вещественное число(например, NAN) (сравнение вещественных чисел)Во избежание появления таких состояний обратитевнимание на правильную инициализацию всехуказателей и величин, содержащих вещественныечисла, перед выполнением команды сравнения.Команды сравнения выполняются независимо отсостояния потока сигнала.Таблица 6–15.
Допустимые операнды для команд сравненияВходы/выходы ТипОперандыIN1, IN2BYTEINTDINTREALВыход (или OUT) BOOL98IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD, *AC,константаID, QD, VD, MD, SMD, SD, LD, AC, HC, *VD, *LD, *AC, константаID, QD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *AC, константаI, Q, V, M, SM, S, T, C, L, поток сигналаНабор команд S7–200Глава 6Пример: Команды сравненияNetwork 1 //Повернуть аналоговый потенциометр 0, чтобы//изменить значение байта SMB28.//Q0.0 активен, если значение SMB28 меньше//или равно 50.//Q0.1 активен, если значение SMB28 больше//или равно 150.//Индикатор состояния включен, если//сравнение истинно.LDI0.0LPSAB<=SMB28, 50=Q0.0LPPAB>=SMB28, 150=Q0.1Network 2 //Загрузить адреса из памяти переменных с//небольшими значениями, чтобы сравнения//были ложными и индикаторы состояния//выключились.LDI0.1MOVW -30000, VW0MOVD-200000000, VD2MOVR1.012E-006, VD6Network 3 //Загрузить адреса из памяти переменных с//большими значениями, чтобы сравнения были//истинными и индикаторы состояния//включились.LDI0.2MOVW +30000, VW0MOVD-100000000, VD2MOVR3.141593, VD6Network 4 //Сравнение целых чисел проверяет, истинно// ли, что VW0 > +10000.//с помощью констант программы показываются//различные типы данных.
Вы можете также// сравнить две величины, хранящиеся в//программируемой памяти, напр., VW0 >VW100LDI0.3LPSAW>VW0, +10000=Q0.2LRDAD<-150000000, VD2=Q0.3LPPAR>VD6, 5.001E-006=Q0.499Программируемый контроллер S7-200. Системное руководствоСравнение строкКоманда сравнения строк сравнивает между собой двестроки символов ASCII:IN1 = IN2IN1 <> IN2Если сравнение истинно, команда сравнения включаетконтакт (LAD) или выход (FBD) или загружает «1» ввершину стека или выполняет логическое сопряжениезначения «1» со значением в вершине стека всоответствии с таблицей истинности для И или ИЛИ(STL).УказаниеПри следующих условиях речь идет о фатальныхошибках, которые приводят к тому, что S7–200немедленно останавливает обработку вашейпрограммы:■ Обнаружен недопустимый косвенный адрес (в любойкоманде сравнения)■ Встретилась строка, содержащая более 254символов (команда сравнения строк)■ Строка, начальный адрес которой и длина таковы,что она не помещается в указанной области памяти(команда сравнения строк)Во избежание появления таких состояний обратитевнимание на правильную инициализацию всехуказателей и адресов в памяти, которые должнысодержать строки символов ASCII, перед выполнениемкоманды сравнения, использующей эти значения.Обеспечьте, чтобы буфер, зарезервированный длястроки символов ASCII, полностью помещался вуказанной области памяти.Команды сравнения выполняются независимо отсостояния потока сигнала.Таблица 6–16.
Допустимые операнды для команд сравнения строкВходы/выходы ТипОперандыIN1100STRINGVB, LB, *VD, *LD, *AC, константаIN2STRINGVB, LB, *VD, *LD, *ACВыход (OUT)BOOLI, Q, V, M, SM, S, T, C, L, поток сигналаНабор команд S7–200Глава 6Команды преобразованияСтандартные команды преобразованияКоманды преобразования чиселКоманды преобразования байта в целое (BTI), целого вбайт (ITB), целого в двойное целое (ITD), двойногоцелого в целое (DTI), двойного целого в вещественное(DTR), двоично-десятичного в целое (BCDI) и целого вдвоично-десятичное (IBCD) преобразуют входнуювеличину IN в указанный формат и сохраняютвыходное значение по адресу, указанному в OUT.Например, вы можете преобразовать двойное целое ввещественное число.