06_InstructionSet_r (1087186), страница 10
Текст из файла (страница 10)
Длина выходной строки всегда равна 12 символам. Количество цифрсправа от десятичной точки в выходном буфере определяется полем nnn. Допустимыйдиапазон поля nnn составляет от 0 до 5. Задание 0 цифр справа от десятичной точкиприводит к тому, что число отображается без десятичной точки. Для значений nnn,больших 5, выходом является строка из 12 символов пробела ASCII.
Бит c определяетиспользование запятой (с=1) или десятичной точки (с=0) в качестве разделителя целой идробной части. Старшие 4 бита формата должны быть нулями.На рис. 6–19 также показаны примеры чисел, форматированных с помощью десятичнойточки (c = 0), с четырьмя цифрами справа от десятичной точки (nnn = 100). Значение OUTпредставляет собой длину строки. Выходная строка форматируется в соответствии соследующими правилами:-Положительные числа записываются в выходной буфер без знака.-Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-).-Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной сдесятичной точкой) подавляются.-Числа в выходной строке выравниваются вправо.FMTMSB7 60 050403c2n1nLSB0nOut Out Out Out Out Out Out Out Out+1 +2 +3 +4 +5 +6 +7 +8in=1212in=-123456712−12c = запятая (1) или десятичная точка (0)nnn = цифры справа от десятичной точкиРис.
6–19. Операнд FMT для команды преобразования двойного целого в строку110Out Out Out Out+9 +10 +11 +120.00123.4567Набор команд S7–200Глава 6Принцип действия команды преобразования вещественного числа в строкуКоманда преобразования вещественного числа в строку(RTS) преобразует вещественное число IN в строкусимволов ASCII. Формат (FMT) определяет точностьпреобразования справа от десятичной точки, формупредставления разделителя целой и дробной части – ввиде запятой или точки, а также длину выходной строки.Результат преобразования помещается в строку,начинающуюся с OUT. Длина результирующей строкиопределяется в формате и может составлять от 3 до 15символов. Дополнительную информацию вы найдете вглаве 4, где описан формат строк.Сбойные состояния,устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (операнд вышел за пределыдопустимого диапазона)■ Недопустимый формат:nnn > 5ssss < 3ssss < число требуемыхсимволовФормат вещественных чисел, используемый S7–200, поддерживает не более 7 значащихцифр.
Попытка отобразить более 7 значащих цифр приводит к ошибке округления.На рис. 6–20 описан операнд формата для команды преобразования вещественного числав строку. Длина выходной строки определяется полем ssss. Размеры 0, 1 или 2 байтанедопустимы. Количество цифр справа от десятичной точки в выходном буфереопределяется полем nnn.
Допустимый диапазон поля nnn составляет от 0 до 5. Задание 0цифр справа от десятичной точки приводит к тому, что число отображается без десятичнойточки. Выходная строка заполняется символами пробела ASCII для значений nnn, больших5, или если указанная длина выходной строки слишком мала для храненияпреобразованного значения. Бит c определяет использование запятой (с=1) илидесятичной точки (с=0) в качестве разделителя целой и дробной части.На рис. 6–20 приведены примеры чисел, форматированных с помощью десятичной точки (c= 0), с одной цифрой справа от десятичной точки (nnn = 001) и выходной строкой, имеющейдлину 6 символов (ssss = 0110).
Значение OUT представляет собой длину строки.Выходная строка форматируется в соответствии со следующими правилами:-Положительные числа записываются в выходной буфер без знака.-Отрицательные числа записываются в выходной буфер с ведущим знаком минус (-).-Нули в старших разрядах слева от десятичной точки (кроме цифры, смежной сдесятичной точкой) подавляются.-Значение справа от десятичной точки округляется в соответствии с заданнымколичеством цифр справа от десятичной точки.-Размер выходной строки должен, по крайней мере, на три байта превышатьколичество цифр справа от десятичной точки.-Числа в выходной строке выравниваются вправо.FMTMSBLSB7 6 5 4 3 2 1 0s s s s c n n nssss = длина выходной строкиc = запятая (1) или десятичная точка (0)nnn = цифры справа от десятичной точкиOut Out Out Out Out Out Out+1 +2 +3 +4 +5 +6in= -0.000466in= -3.675266in = 1.956in=1234.51234−032..50..07Рис.
6–20. Операнд FMT для команды преобразования вещественного числа в строку111Программируемый контроллер S7-200. Системное руководствоПреобразование подстрок в числовыезначенияКоманды преобразования подстроки в целое число(STI), преобразования подстроки в двойное целое число(STD) и преобразования подстроки в вещественноечисло (STR) преобразуют строку символов IN,начинающуюся со смещения INDX, в целое, двойноецелое или вещественное число OUT.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (операнд вышел за пределы допустимого диапазона)■ 009B (индекс = 0)■ SM1.1 (переполнение)Команды преобразования подстроки в целое и двойноецелое число преобразуют строки, имеющие следующийформат:[пробелы] [+ или -] [цифры 0 - 9]Команда преобразования подстроки в вещественноечисло преобразует строки, имеющие следующийформат: [пробелы] [+ или -] [цифры 0 - 9] [.
или ,][цифры 0 - 9]Значение INDX обычно устанавливается в 1, так чтопреобразование начинается с первого символа строки.Значение INDX может быть и другим, чтобы начатьпреобразование с иной точки внутри строки. Этимможно воспользоваться, если входная строка содержиттекст, не являющийся частью преобразуемого числа.Например, если строка имеет вид «Температура: 77.8»,то установите INDX на значение 13, чтобы пропуститьслово «Температура: » в начале строки.Команда преобразования подстроки в вещественное число не преобразует строки,использующие научную нотацию или экспоненциальные формы вещественных чисел.Команда не генерирует ошибку переполнения (SM1.1), а преобразует строку ввещественное число до экспоненциальной функции, а затем завершает преобразование.Например, строка ‘1.234E6’ преобразуется без ошибки в вещественное число 1.234.Преобразование завершается при достижении конца строки или обнаружения первогонедопустимого символа.
Недопустимым является любой символ, отличный от цифры (0 9).Ошибка переполнения (SM1.1) устанавливается, когда преобразование дает целое число,слишком большое для выходной величины. Например, команда преобразования подстрокив вещественное устанавливает ошибку переполнения, если входная строка дает значение,большее, чем 32767, или меньшее, чем -32768.Ошибка переполнения (SM1.1) устанавливается также, если преобразование невозможноиз-за отсутствия в строке допустимого значения. Например, если входная строка содержит‘A123’, то команда преобразования устанавливает SM1.1 (переполнение), а выходнаявеличина остается неизменной.Таблица 6–20.
Допустимые операнды для команд преобразования подстрок в числовые значения112Входы/выходыТип данныхОперандыINSTRINGIB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *AC, константаINDXBYTEVB, IB, QB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаOUTINTDINT, REALVW, IW, QW, MW, SMW, SW, T, C, LW, AC, AQW, *VD, *LD, *ACVD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *ACНабор команд S7–200Допустимые входные строкидля целых и двойных целых чиселВходная строкаДопустимые входные строкидля вещественных чиселВыходное целоеВходная строкаВыходноевеществ. числоГлава 6Недопустимые входныестрокиВходная строка`123'123`123'123.0`A123'`−00456'`123.45'−456123`-00456'`123.45'-456.0123.45` '`++123'`+2345'`000000123ABCD'2345123`+2345'`00.000000123'2345.00.000000123`+-123`+ 123'Рис. 6–21.
Примеры допустимых и недопустимых входных строкПример: Преобразование строк: Преобразование подстроки в целое, двойное целое ивещественное числоNetwork 1 //Преобразует числовую строку в целое.//Преобразует числовую строку в двойное//целое.//Преобразует числовую строку в вещественное//число.LDI0.0STIVB0,7,VW100STDVB0,7,VD200STRVB0,7,VD300VB011'T''e''m''p''''''9''8''.''6'VB11'F'После выполнения сегмента:VW 100 (целое) = 98VD200 (двойное целое) = 98VD300 (вещественное) = 98,6113Программируемый контроллер S7-200. Системное руководствоКоманды кодирования и декодированияКодированиеКоманда кодирования (ENCO) записывает номермладшего установленного бита входного слова IN вмладший полубайт (4 бита) выходного байта OUT.ДекодированиеКоманда декодирования (DECO) устанавливает ввыходном слове OUT бит, соответствующий номерубита, представленному младшим полубайтом (4 бита)входного байта IN.
Все остальные биты выходногослова устанавливаются в 0.Биты специальной памяти и ENOДля команд кодирования и декодирования следующиеусловия влияют на ENO.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)Таблица 6–21. Допустимые операнды для команд кодирования и декодированияВходы/выходыТипы данныхОперандыINBYTEWORDIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD, *AC,константаOUTBYTEWORDIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *ACIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AQW, *VD, *LD, *ACПример: Команды декодирования и кодированияNetwork 1 //Аккумулятор 2 содержит биты ошибок.//1.
Команда DECO устанавливает в VW40// бит, соответствующий этому коду// ошибки.//2. Команда ENCO преобразует младший// установленный бит в код ошибки,// который сохраняется в VB50.LDI3.1DECOAC2, VW40ENCOAC3, VB5015AC2315VW40114DECO0000 0000 00003AC30ENCO0100091000 0010 0000 0000VB509Набор команд S7–200Глава 6Команды счетаСчетчик SIMATICПрямой счетКоманда прямого счета (CTU) увеличивает текущеезначение счетчика при появлении нарастающего фронтана входе (CU).
Когда текущее значение Cxx больше илиравно предустановленному значению PV, бит счетчикаCxx устанавливается. Счетчик сбрасывается, когдавключается вход сброса (R), или когда выполняетсякоманда сброса. Счетчик прекращает счет придостижении максимального значения (32767).Принцип действия в STL:■ Вход сброса: Вершина стека■ Вход прямого счета: Значение, загруженное на второйуровень стекаОбратный счетКоманда обратного счета (CTD) уменьшает текущеезначение счетчика при появлении нарастающего фронтана входе (CD). Когда текущее значение Cxx равно нулю,бит счетчика Cxx включается.
Счетчик сбрасывает свойбит Cxx и загружает текущее значениепредустановленным значением PV, когда включаетсявход загрузки LD. Счетчик останавливается, когда ондостигает нуля, и бит счетчика Cxx включается.Принцип действия в STL:■ Вход загрузки: Вершина стека■ Вход обратного счета: Значение, загруженное на второйуровень стека.115Программируемый контроллер S7-200. Системное руководствоРеверсивный счетчикТаблица 6–22. Допустимые операнды для счетчиков SIMATICВходы/выходы Типы данныхОперандыCxxWORDCU, CD, LD, RBOOLконстанта (от C0 до C255)I, Q, V, M, SM, S, T, C, L, поток сигналаPVINTIW, QW, VW, MW, SMW, SW, LW, T, C, AC, AIW, *VD, *LD, *AC,константаСоветТак как для каждого счетчика имеется только одно текущее значение, не назначайте одини тот же номер более чем одному счетчику (прямые, реверсивные и обратные счетчики содним и тем же номером обращаются к одному и тому же текущему значению).Если вы сбрасываете счетчик с помощью команды Сброс, то бит счетчика сбрасывается,а текущее значение устанавливается в ноль.