Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Коды условий: ENO = 1 означает, что ошибок не было. ENO = 0 означает, что произошла ошибка исполнения, и на выходе RET_VAL находится код условия. RET_VAL (W#16#....) Описание 0000 Нет ошибки 8080 Отсутствует местное время 8081 Недопустимое значение года 8082 Недопустимое значение месяца 8083 Недопустимое значение дня 8084 Недопустимое значение часа 8085 Недопустимое значение минуты 8086 Недопустимое значение секунды 8087 Недопустимое значение наносекунды 80B0 Часы реального времени вышли из строя 6.2.3 Операции над строками и символами 6.2.3.1 Обзор данных строки Тип данных String Данные типа String хранятся в виде 2-байтного заголовка, за которым следует до 254 байтов символов ASCII. Заголовок для данных типа String содержит два байта для длины. Первый байт содержит максимальную длину строки, которая указывается в квадратных скобках при инициализации строки, или устанавливается на 254 по умолчанию. Второй байт заголовка – это текущая длина, равная числу действительных символов в строке. Текущая длина не должна превышать максимальную длину. Число сохраняемых байтов, занимаемых форматом типа String на 2 байта больше, чем максимальная длина. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 157 Инициализация данных типа String Входные и выходные данные типа String должны быть инициализированы в памяти как действительные строки перед исполнением команд над строками. Действительные данные типа String Действительная строка имеет максимальную длину, которая должна быть больше нуля, но меньше 255. Текущая длина не должна превышать максимальной длины. Строки не должны назначаться областям памяти входов (I) или выходов (Q). Дальнейшую информацию вы найдете под заголовком "Формат типа данных STRING" (стр. 65) 6.2.3.2 Команды преобразования строки Преобразования строки в значения и значения в строку С помощью этих команд вы можете преобразовывать строки цифровых символов в числовые значения и числовые значения в строки цифровых символов: ● S_CONV преобразует строку цифровых символов в числовое значение или числовое значение в строку цифровых символов ● STRG_VAL преобразует строку цифровых символов в числовое значение с возможностями форматирования ● VAL_STRG преобразует числовое значение в строку цифровых символов с возможностями форматирования S_CONV (преобразование строки) преобразует строку символов в соответствующее число или число в соответствующую строку символов. Команда S_CONV не имеет возможностей форматирования выхода. Это делает команду S_CONV боле простой, но менее гибкой, чем команды STRG_VAL и VAL_STRG. Выберите типы данных параметров из ниспадающих списков. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 158 Системное руководство, 11/2009, A5E02669003-02 S_CONV (преобразование строки символов в числовое значение) Параметр Тип параметра Тип данных Описание IN IN String Вводимая строка символов OUT OUT String, SInt, Int, DInt, USInt, UInt, UDInt, Real Выводимое числовое значение Преобразование параметра строки символов IN начинается с первого символа и продолжается до конца строки или до тех пор, пока не встретится первый символ, отличный от "0" − "9", "+", "-", или ".". Результирующе значение передается по адресу, указанному в параметре OUT. Если выходное числовое значение не соответствует диапазону типа данных OUT, то параметр OUT устанавливается в 0, а ENO устанавливается в ЛОЖЬ. В противном случае параметр OUT содержит действительный результат, и ENO принимает значение ИСТИНА. Правила форматирования для ввода строки: ● Если в строке IN используется знак, разделяющий целую и дробную часть, то вы должны использовать символ ".". ● Символы "," используемые в качестве разделителей тысяч слева от десятичной точки, допускаются, но игнорируются. ● Ведущие пробелы игнорируются. ● Допускается представление чисел только с фиксированной точкой. Символы "e" и "E" не распознаются в качестве экспоненциального представления. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 159 S_CONV (преобразование числового значения в строку символов) Параметр Тип параметра Тип данных Описание IN IN String, SInt, Int, DInt, USInt, UInt, UDInt, Real Вводимое числовое значение OUT OUT String Выводимая строка символов Целое, целое без знака или число с плавающей точкой на входе IN преобразуется в соответствующую строку символов на выходе OUT. Параметр OUT должен ссылаться на действительную строку перед выполнением преобразования. Действительная строка содержит максимальную длину строки в первом байте, текущую длину строки во втором байте и символы текущей строки в следующих байтах. Преобразованная строка заменяет символы в строке OUT, начиная с первого символа, и согласует байт фактической длины строки со строкой OUT. Байт максимальной длины строки OUT не изменяется. Количество заменяемых символов зависит от типа данных параметра IN и числового значения. Число заменяемых символов должно подходить к длине строки параметра OUT. Максимальная длина (первый байт) строки OUT должна быть не меньше максимально ожидаемого числа преобразуемых символов. В следующей таблице показаны максимально возможные длины строк, необходимые для каждого из поддерживаемых типов данных. Тип данных IN Максимальное число преобразуемых символов в строке OUT Пример Общая длина строки, включая байты максимальной и текущей длины USInt 3 255 5 SInt 4 -128 6 UInt 5 65535 7 Int 6 -32768 8 UDInt 10 4294967295 12 DInt 11 -2147483648 13 Правила форматирования для вывода строки: ● Значения, записываемые в параметр OUT, не используют ведущий знак "+". ● Используется представление чисел с фиксированной точкой (не экспоненциальное представление). ● Если параметр IN имеет тип данных Real, то для разделения целой и дробной части числа используется десятичная точка ".". Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 160 Системное руководство, 11/2009, A5E02669003-02 Команда STRG_VAL STRG_VAL (строка в значение) преобразует строку цифровых символов в соответствующее целое число или число с плавающей точкой. Преобразование начинается во вводимой строке IN со смещения, указанного в параметре P, и продолжается до конца строки или до тех пор, пока не встретится первый символ, не являющийся "+", "-", ".", ",", "e", "E" или цифрой от "0" до "9". Результат помещается по адресу, указанному в параметре OUT. Параметр P также возвращается как величина смещения в исходной строке символов на том месте, где заканчивается преобразование. Перед исполнением команды данные строки должны быть инициализированы в памяти как действительная строка. Параметр Тип параметра Тип данных Описание IN IN String Строка символов ASCII, подлежащая преобразованию FORMAT IN Word Варианты для формата вывода P IN_OUT UInt IN: Указатель на первый символ, подлежащий преобразованию (первый символ = 1) OUT: Указатель на следующий символ после завершения преобразования OUT OUT SInt, Int, DInt, USInt, UInt, UDInt, Real Преобразованное числовое значение Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 161 Параметр FORMAT команды STRG_VAL Параметр FORMAT команды STRG_VAL определен ниже. Неиспользуемые битовые позиции должны быть установлены в ноль. Бит 16 Бит 8 Бит 7 Бит 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 f r f = формат представления 1= экспоненциальное представление 0 = представление с фиксированной точкой r = формат десятичной точки 1 = "," (запятая) 0 = "." (точка) FORMAT (W#16#) Формат представления Представление десятичной точки 0000 (по умолчанию) "." 0001 Фиксированная точка "," 0002 "." 0003 Экспоненциальное "," от 0004 до FFFF Недопустимые значения Правила преобразования для STRG_VAL: ● Если для разделения целой и дробной части числа используется символ ".", то запятые "," слева от десятичной точки интерпретируются как символы разделения тысяч. Запятые допускаются, но игнорируются. ● Если для разделения целой и дробной части числа используется символ "," то точки "." слева от запятой интерпретируются как символы разделения тысяч. Эти точки допускаются, но игнорируются. ● Ведущие пробелы игнорируются. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 162 Системное руководство, 11/2009, A5E02669003-02 Команда VAL_STRG VAL_STRG (значение в строку) преобразует целое, целое без знака или число с плавающей точкой в соответствующую строку символов. Значение, представленное параметром IN, преобразуется в строку, на которую ссылается параметр OUT. Перед выполнением преобразования параметр OUT должен быть действительной строкой. Конвертированная строка заменяет символы в строке OUT, начиная с указанного в параметре P смещения до числа символов, указанного в параметре SIZE. Число символов в SIZE должно укладываться в длину строки OUT, начиная с позиции P. Эта команда полезна для встраивания цифровых символов в текстовую строку. Например, вы можете поместить цифры "120" в строку "Давление насоса = 120 кг/кв.см". Параметр Тип параметра Тип данных Описание IN IN SInt, Int, DInt, USInt, UInt, UDInt, Real Значение, подлежащее преобразованию SIZE IN USInt Число символов, подлежащих записи в строку OUT PREC IN USInt Точность или размер дробной части. Он не включает десятичную точку. FORMAT IN Word Возможности форматирования выхода P IN_OUT UInt IN: Указатель на первый символ строки OUT, подлежащий замене (первый символ = 1) OUT: Указатель на следующий после замены символ строки OUT OUT OUT String Преобразованная строка Параметр PREC определяет точность или число символов для дробной части в строке символов. Если значение параметра IN – целое число, то PREC определяет положение десятичной точки. Например, если значение данных равно 123 и PREC = 1, то результатом будет "12.3". Максимальная поддерживаемая точность для типа данных REAL составляет 7 цифр. Если параметр P больше, чем текущий размер строки OUT, то до позиции P вставляются пробелы, а результат присоединяется к концу строки. Преобразование заканчивается, когда достигнута максимальная длина строки OUT. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 163 Параметр FORMAT команды VAL_STRG Параметр FORMAT команды VAL_STRG определен ниже. Неиспользуемые битовые позиции должны быть заменены нулями. Бит 16 Бит 8 Бит 7 Бит 0 0 0 0 0 0 0 0 0 0 0 0 0 0 s f r s = символ для знака числа 1= использовать знаки "+" и "-" 0 = использовать только знак "-" f = представление формата 1= экспоненциальное представление 0 = представление с фиксированной точкой r = формат для разделителя целой и дробной части 1 = "," (запятая) 0 = "." (точка) FORMAT (WORD) Символ для знака числа Формат представления Представление десятичной точки W#16#0000 "." W#16#0001 Фиксированная точка "," W#16#0002 "." W#16#0003 Только "-" Экспоненциальное "," W#16#0004 "." W#16#0005 Фиксированная точка "," W#16#0006 "." W#16#0007 "+" и "-" Экспоненциальное "," от W#16#0008 до W#16#FFFF Недопустимые значения Правила форматирования для строки в параметре OUT: ● Если преобразованная строка короче указанного размера, то слева к ней добавляются ведущие пробелы. ● Если бит знака параметра FORMAT имеет значение ЛОЖЬ, то целые со знаком и без знака записываются в выходной буфер без ведущего знака "+". В случае необходимости используется знак "-". <ведущие пробелы><цифры без ведущих нулей>'.'<цифры PREC> ● Если бит знака имеет значение ИСТИНА, то целые со знаком и без знака всегда записываются в выходной буфер с ведущим знаком. <ведущие пробелы><знак><цифры без ведущих нулей>'.'<цифры PREC> ● Если в качестве параметра FORMAT устанавливается экспоненциальное представление, то числа, имеющие тип данных REAL, записываются в выходной буфер следующим образом: <ведущие пробелы><знак><цифра> '.' <цифры PREC>'E' ><знак><цифры без ведущего нуля> Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 164 Системное руководство, 11/2009, A5E02669003-02 ● Если в качестве параметра FORMAT устанавливается представление с фиксированной точкой, то целые, целые без знака и вещественные значения записываются в выходной буфер следующим образом: <ведущие пробелы><знак><цифры без ведущих нулей>'.'<цифры PREC> ● Ведущие нули слева от десятичной точки (кроме цифры, стоящей непосредственно перед десятичной точкой) подавляются. ● Значения справа от десятичной точки округляются, чтобы уместиться в число цифр справа от десятичной точки, заданное параметром PREC. ● Размер выводимой строки должен, по крайней мере, на три байта превышать число цифр справа от десятичной точки. ● Значения в выводимой строке выравниваются вправо. Условия, сообщаемые параметром ENO Если при преобразовании возникает ошибка, то выводятся следующие результаты: ● ENO устанавливается в 0. ● OUT устанавливается в 0, или на значение, показанное в примерах на преобразование строк в значение. ● OUT остается неизменным или устанавливается на значение, показанное в примерах, когда OUT является строкой. Состояние ENO Описание 1 Нет ошибки 0 Недопустимый или недействительный параметр; например, обращение к несуществующему DB 0 Недопустимая строка с максимальной длиной 0 или 255 0 Недопустимая строка, в которой текущая длина больше, чем максимальная 0 Преобразованное числовое значение слишком велико для указанного типа данных OUT 0 Максимальный размер строки для параметра OUT должен быть достаточно велик, чтобы принять число символов, указанное в параметре SIZE, начиная с позиции символа, указанной в параметре P 0 Недопустимое значение P, где P=0 или P больше, чем текущая длина строки 0 Параметр SIZE должен быть больше параметра PREC Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 165 Примеры преобразования строк в числовые значения с помощью S_CONV Строка IN Тип данных OUT Значение OUT ENO "123" Int/DInt 123 ИСТИНА "-00456" Int/DInt -456 ИСТИНА "123.45" Int/DInt 123 ИСТИНА "+2345" Int/DInt 2345 ИСТИНА "00123AB" Int/DInt 123 ИСТИНА "123" Real 123.0 ИСТИНА "123.45" Real 123.45 ИСТИНА "1.23e-4" Real 1.23 ИСТИНА "1.23E-4" Real 1.23 ИСТИНА "12,345.67" Real 12345.67 ИСТИНА "3.4e39" Real 3.4 ИСТИНА "-3.4e39" Real -3.4 ИСТИНА "1.17549e-38" Real 1.17549 ИСТИНА "12345" SInt 0 ЛОЖЬ "A123" N/A 0 ЛОЖЬ "" N/A 0 ЛОЖЬ "++123" N/A 0 ЛОЖЬ "+-123" N/A 0 ЛОЖЬ Примеры преобразования числовых значений в строки с помощью S_CONV Тип данных Значение IN Строка OUT ENO UInt 123 "123" ИСТИНА UInt 0 "0" ИСТИНА UDInt 12345678 "12345678" ИСТИНА Real -INF "INF" ЛОЖЬ Real +INF "INF" ЛОЖЬ Real NaN "NaN" ЛОЖЬ Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 166 Системное руководство, 11/2009, A5E02669003-02 Примеры преобразования с помощью STRG_VAL Строка IN FORMAT (W#16#....) Тип данных OUT Значение OUT ENO "123" 0000 Int/DInt 123 ИСТИНА "-00456" 0000 Int/DInt -456 ИСТИНА "123.45" 0000 Int/DInt 123 ИСТИНА "+2345" 0000 Int/DInt 2345 ИСТИНА "00123AB" 0000 Int/DInt 123 ИСТИНА "123" 0000 Real 123.0 ИСТИНА "-00456" 0001 Real -456.0 ИСТИНА "+00456" 0001 Real 456.0 ИСТИНА "123.45" 0000 Real 123.45 ИСТИНА "123.45" 0001 Real 12345.0 ИСТИНА "123,45" 0000 Real 12345.0 ИСТИНА "123,45" 0001 Real 123.45 ИСТИНА ".00123AB" 0001 Real 123.0 ИСТИНА "1.23e-4" 0000 Real 1.23 ИСТИНА "1.23E-4" 0000 Real 1.23 ИСТИНА "1.23E-4" 0002 Real 1.23E-4 ИСТИНА "12,345.67" 0000 Real 12345.67 ИСТИНА "12,345.67" 0001 Real 12.345 ИСТИНА "3.4e39" 0002 Real +INF ИСТИНА "-3.4e39" 0002 Real -INF ИСТИНА "1.1754943e-38" (и меньше) 0002 Real 0.0 ИСТИНА "12345" N/A SInt 0 ЛОЖЬ "A123" N/A N/A 0 ЛОЖЬ "" N/A N/A 0 ЛОЖЬ "++123" N/A N/A 0 ЛОЖЬ "+-123" N/A N/A 0 ЛОЖЬ |