Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Параметр Тип данных Описание IN, IN1 Real, LReal, Constant Входы IN2 SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Constant Вход EXPT OUT Real, LReal Выходы Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 135 Состояние ENO Команда Условие Результат (OUT) 1 Все Нет ошибки Допустимый результат Результат выходит за пределы допустимых значений для Real/LReal +INF SQR IN равняется +/- NaN (не число) +NaN IN отрицательно -NaN SQRT IN равно +/- INF (бесконечность) или +/- NaN +/- INF или +/- NaN IN равно 0.0, отрицательно, -INF или - NaN -NaN LN IN равно +INF или +NaN +INF или +NaN Результат выходит за пределы допустимых значений для Real/LReal +INF EXP IN равно +/- NaN +/- NaN SIN, COS, TAN IN равно +/- INF или +/- NaN +/- INF или +/- NaN IN выходит за пределы допустимого диапазона от -1.0 до +1.0 +NaN ASIN, ACOS IN равно +/- NaN +/- NaN ATAN IN равно +/- NaN +/- NaN FRAC IN равно +/- INF или +/- NaN +NaN IN1 равно +INF, а IN2 не равно -INF +INF IN1 отрицательно или -INF +NaN, если IN2 имеет тип Real/LReal, -INF в противном случае IN1 или IN2 равно +/- NaN +NaN 0 EXPT IN1 равно 0.0, а IN2 имеет тип Real/LReal (только) +NaN Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 136 Системное руководство, 11/2009, A5E02669003-02 6.1.6 Команда Move Команды передачи и блочной передачи Команды передачи используются для копирования элементов данных в новый адрес в памяти и преобразования из одного типа данных в другой. При этом источник данных не изменяется. • MOVE: Копирует элемент данных, хранящийся по определенному адресу в новый адрес • MOVE_BLK: Прерываемая передача, которая копирует блок элементов данных в новый адрес • UMOVE_BLK: Непрерываемая передача, которая копирует блок элементов данных в новый адрес MOVE Параметр Тип данных Описание IN SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Char, Array, Struct, DTL, Time Адрес источника OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal, Byte, Word, DWord, Char, Array, Struct, DTL, Time Целевой адрес MOVE_BLK, UMOVE_BLK Параметр Тип данных Описание IN SInt, Int, DInt, USInt, UInt, UDInt, Real, Byte, Word, DWord Начальный адрес источника COUNT UInt Число элементов данных, подлежащих копированию OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, Byte, Word, DWord Начальный адрес назначения Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 137 Указание Правила для операций копирования данных • Для копирования данных типа Bool используйте SET_BF, RESET_BF, R, S или выходную катушку (LAD) • Для копирования отдельного элементарного типа данных используйте MOVE • Для копирования массива данных элементарного типа используйте MOVE_BLK или UMOVE_BLK • Для копирования структуры используйте MOVE • Для копирования строки используйте S_CONV • Для копирования отдельного символа в строке используйте MOVE • Команды MOVE_BLK и UMOVE_BLK не могут использоваться для копирования массивов или структур в области памяти I, Q или M. Команда MOVE копирует отдельный элемент данных из исходного адреса, указанного в параметре IN, в целевой адрес, определяемый параметром OUT. Команды MOVE_BLK и UMOVE_BLK имеют дополнительный параметр COUNT. COUNT определяет, сколько элементов данных копируется. Число байтов на копируемый элемент зависит от типа данных, назначенных именам переменных параметров IN и OUT в таблице переменных ПЛК. Команды MOVE_BLK и UMOVE_BLK отличаются друг от друга способом обработки прерываний: ● Во время исполнения MOVE_BLK прерывающие события ставятся в очередь и обрабатываются. Используйте команду MOVE_BLK, если данные по адресу назначения передачи не используются в подпрограмме внутри OB прерываний или, если используются, то целевые данные не обязательно должны быть согласованными. Если операция MOVE_BLK прерывается, то последний переданный элемент данных полностью и непротиворечиво находится по целевому адресу. Операция MOVE_BLK возобновляется по окончании исполнения OB прерываний. ● Прерывания ставятся в очередь, но не обрабатываются, пока не завершится исполнение UMOVE_BLK. Используйте команду UMOVE_BLK, если операция передачи должна быть завершена, а целевые данные непротиворечивы, до исполнения подпрограммы OB прерываний. Дополнительную информацию вы найдете в разделе о согласованности данных (стр. 96). После выполнения команды MOVE параметр ENO всегда принимает значение ИСТИНА. Состояние ENO Условие Результат 1 Нет ошибки Все COUNT элементов успешно скопированы 0 Исходная область (IN) или целевая область (OUT) превышает имеющуюся в распоряжении область памяти Подходящие по размеру имеющейся памяти элементы копируются. Часть элементов не копируется. Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 138 Системное руководство, 11/2009, A5E02669003-02 Команды заполнения Команды FILL_BLK и UFILL_BLK используются следующим образом: • FILL_BLK: Команда прерываемого заполнения заполняет определенный диапазон адресов копиями заданного элемента данных. • UFILL_BLK: Команда непрерываемого заполнения заполняет определенный диапазон адресов копиями заданного элемента данных. Параметр Тип данных Описание IN SInt, Int, DIntT, USInt, UInt, UDInt, Real, BYTE, Word, DWord Адрес источника данных COUNT USInt, UInt Количество элементов данных, подлежащих копированию OUT SInt, Int, DIntT, USInt, UInt, UDInt, Real, BYTE, Word, DWord Целевой адрес для данных Указание Правила для операций заполнения • Для заполнения данными типа BOOL используйте SET_BF, RESET_BF, R, S или выходную катушку (LAD) • Для заполнения отдельным элементарным типом данных используйте MOVE • Для заполнения массива элементарного типа данных используйте FILL_BLK или UFILL_BLK • Для заполнения отдельного символа в строке используйте MOVE • Команды FILL_BLK и UFILL_BLK не могут использоваться для заполнения массивов в областях памяти I, Q или M. Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 139 С помощью команд FILL_BLK и UFILL_BLK элемент данных источника IN копируется в место назначения, причем начальный адрес этого места определяется параметром OUT. Процесс копирования и заполнения соседних адресов продолжается до тех пор, пока количество копий не будет равно параметру COUNT. Команды FILL_BLK и UFILL_BLK отличаются друг от друга способом обработки прерываний: ● Во время исполнения FILL_BLK прерывающие события ставятся в очередь и обрабатываются. Используйте команду FILL_BLK, если данные по адресу назначения не используются в подпрограмме внутри OB прерываний или, если используются, то целевые данные не обязательно должны быть согласованными. ● Прерывания ставятся в очередь, но не обрабатываются, пока не завершится исполнение UFILL_BLK. Используйте команду UFILL_BLK, если операция заполнения должна быть завершена, а целевые данные непротиворечивы, до исполнения подпрограммы OB прерываний. Состояние ENO Условие Результат 1 Нет ошибки Элемент IN был успешно скопирован во все COUNT целевых адресов 0 Целевая область (OUT) превышает доступную область памяти Подходящие по размеру имеющейся памяти элементы копируются. Часть элементов не копируется. Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 140 Системное руководство, 11/2009, A5E02669003-02 6.1.6.1 Команда Swap (обмен байтов) Команда SWAP используется для изменения порядка следования байтов в 2-байтовых и 4-байтовых элементах данных. Внутри каждого байта порядок битов не меняется. После выполнения команды SWAP параметр ENO всегда принимает значение ИСТИНА. Щелкните под именем блока и выберите тип данных из ниспадающего меню. Параметр Тип данных Описание IN Word, DWord Нормально расположенные байты данных в параметре IN OUT Word, DWord Измененный порядок расположения байтов в параметре OUT Пример: Параметр IN = MB0 Перед выполнением SWAP Пример: Параметр OUT = MB4, После выполнения SWAP Адрес MB0 MB1 MB4 MB5 W#16#1234 WORD 12 MSB 34 LSB 34 MSB 12 LSB Адрес MB0 MB1 MB2 MB3 MB4 MB5 MB6 MB7 DW#16# 12345678 DWORD 12 MSB 34 56 78 LSB 78 MSB 56 34 12 LSB Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 141 6.1.7 Преобразование Команда преобразования Команда CONVERT преобразует элемент данных из одного типа данных в другой. Щелкните под именем блока, а затем выберите типы данных для IN и OUT из ниспадающего списка. После выбора типа данных источника (преобразовать из) в ниспадающем списке отображаются возможные преобразования (преобразовать в). Преобразования из и в BCD16 ограничены типом данных Int. Преобразования из и в BCD32 ограничены типом данных DInt. Щелкните под именем блока и выберите типы данных из ниспадающих меню. Параметр Тип данных Описание IN SInt, Int, DInt, USInt, UInt, UDInt, Byte, Word, DWord, Real, LReal, Bcd16, Bcd32 Значение IN OUT SInt, Int, DInt, USInt, UInt, UDInt, Byte, Word, DWord, Real, LReal, Bcd16, Bcd32 Значение IN, преобразованное в новый тип данных Состояние ENO Описание Результат OUT 1 Нет ошибки Допустимый результат 0 IN равно +/- INF или +/- NaN +/- INF или +/- NaN 0 Результат выходит за пределы допустимого диапазона для типа данных OUT OUT устанавливается на значение, записанное в младшем байте IN Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 142 Системное руководство, 11/2009, A5E02669003-02 Команды Round и Truncate ROUND преобразует вещественное число в целое. Дробная часть вещественного числа округляется до ближайшего целого (IEEE – округление до ближайшего). Если вещественное число находится точно между двумя целыми (напр., 10.5), то вещественное число округляется до четного числа. Например, ROUND (10.5) = 10 или ROUND (11.5) = 12. TRUNC преобразует вещественное число в целое. Дробная часть вещественного числа отбрасывается (IEEE – округление до нуля). Параметр Тип данных Описание IN Real, LReal Вход для числа с плавающей точкой OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Округленный или целочисленный выход Состояние ENO Описание Результат OUT 1 Нет ошибки Допустимый результат 0 IN равно +/- INF или +/- NaN +/- INF или +/- NaN Команды получения из вещественного числа ближайшего большего или ближайшего меньшего целого числа Команда CEIL (от ceiling – потолок) преобразует вещественное число в наименьшее целое число, большее или равное вещественному числу (IEEE – округление до + бесконечности). FLOOR (floor = пол) преобразует вещественное число в наибольшее целое число, не превышающее этого вещественного числа (IEEE – округление до – бесконечности). Параметр Тип данных Описание IN Real, LReal Вход для числа с плавающей точкой OUT SInt, Int, DInt, USInt, UInt, UDInt, Real, LReal Преобразованный выход Состояние ENO Описание Результат OUT 1 Нет ошибки Допустимый результат 0 IN равно +/- INF или +/- NaN +/- INF или +/- NaN Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 143 6.1.7.1 Команды масштабирования и нормализации Команды масштабирования и нормализации SCALE_X масштабирует нормализованный вещественный параметр VALUE, где (0,0 <= VALUE <= 1,0), в тип данных и диапазон значений, указанные в параметрах MIN и MAX: OUT = VALUE (MAX – MIN) + MIN Для команды SCALE_X параметры MIN, MAX и OUT должны относиться к одному и тому же типу данных. NORM_X нормализует параметр VALUE внутри диапазона значений, указанного в параметрах MIN и MAX: OUT = (VALUE – MIN) / (MAX – MIN), где (0,0 <= OUT <= 1,0) Для команды NORM_X параметры MIN, VALUE и MAX должны относиться к одному и тому же типу данных. Щелкните под именем блока и выберите тип данных из ниспадающего меню. Параметр Тип данных Описание MIN SInt, Int, DInt, USInt, UInt, UDInt, Real Вход для минимального значения диапазона VALUE SCALE_X: Real NORM_X: SInt, Int, DInt, USInt, UInt, UDInt, Real Входное значение для масштабирования или нормализации MAX SInt, Int, DInt, USInt, UInt, UDInt, Real Вход для максимального значения диапазона OUT SCALE_X: SInt, Int, DInt, USInt, UInt, UDInt, Real NORM_X: Real Масштабированное или нормализованное выходное значение Указание Параметр VALUE команды SCALE_X должен находиться в диапазоне значений (0,0 <= VALUE <= 1,0) Если параметр VALUE выходит за пределы этого диапазона, то: • операция линейного масштабирования может выдавать значения OUT, меньшие параметра MIN или превышающие параметр MAX для значений OUT, находящихся внутри диапазона значений для типа данных OUT. Для этих случаев исполнение команды SCALE_X устанавливает ENO = ИСТИНА. • возможно генерирование масштабированных чисел, которые не находятся в диапазоне допустимых значений для типа данных OUT. Тогда параметр OUT устанавливается на промежуточное значение, равное наименее значимой части масштабированного вещественного числа перед окончательным преобразованием в тип данных OUT. Для этих случаев исполнение команды SCALE_X устанавливает ENO = ЛОЖЬ. Параметр VALUE команды NORM_X должен находиться в диапазоне значений (MIN <= VALUE <= MAX) Если параметр VALUE меньше, чем MIN, или больше, чем MAX, то операция линейного масштабирования может выдавать нормализованные значения OUT, меньшие 0.0 или большие 1.0. В этом случае исполнение команды NORM_X устанавливает ENO = ИСТИНА. Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 144 Системное руководство, 11/2009, A5E02669003-02 Состояние ENO Условие Результат OUT 1 Нет ошибки Допустимый результат 0 Результат выходит за пределы допустимого диапазона для типа данных OUT Промежуточный результат: Наименее значимая часть вещественного числа перед окончательным преобразованием в тип данных OUT. 0 Параметр MAX <= MIN SCALE_X: Наименее значимая часть вещественного числа VALUE, которой заполняется участок памяти, отводимый под OUT. NORM_X: значение VALUE в типе данных VALUE, расширенное для заполнения участка памяти размером в двойное слово. 0 Параметр VALUE = +/- INF или +/- NaN VALUE записывается в OUT 6.1.8 Управление программой Команды перехода и метки перехода Команды управления программой используются для воздействия на последовательность исполнения программы в зависимости от тех или иных условий: JMP: Если имеется поток сигнала к катушке JMP (LAD), или если вход блока JMP принимает значение ИСТИНА (FBD), то исполнение программы продолжается с первой команды после указанной метки. JMPN: Если отсутствует поток сигнала к катушке JMP (LAD), или если вход блока JMP принимает значение ЛОЖЬ (FBD), то исполнение программы продолжается с первой команды после указанной метки. LAD FBD LABEL [Метка]: Метка места назначения для команды перехода JMP или JMPN. Параметр Тип данных Описание Label_name Идентификатор метки Идентификатор для команд перехода и соответствующая метка места перехода Имена меток создаются непосредственным вводом команды LABEL. Имеющиеся в распоряжении имена меток для поля с именами меток перехода команд JMP и JMPN можно выбрать с помощью символа поддержки параметра. Вы можете также непосредственно впечатать имя метки в команду JMP или JMPN. Руководство по программированию 6.1 Основные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 145 Команда управления исполнением программы Return_Value [Возвращаемое значение] (RET) LAD FBD Команда RET используется для завершения исполнения текущего блока. Параметр Тип данных Описание Return_Value Bool Параметр "Return_value" команды RET назначается выходу ENO вызываемого блока в вызывающем блоке. Необязательная команда RET используется для завершения исполнения текущего блока. В том и только в том случае, если имеет место поток сигнала к катушке RET (LAD) или если вход блока RET принимает значение ИСТИНА (FBD), то исполнение программы текущего блока завершается в этом месте и команды, следующие за командой RET, не исполняются. Если текущий блок является OB, то параметр "Return_Value" игнорируется. Если текущий блок является FC или FB, то значение параметра "Return_Value " передается обратно в вызывающую программу как значение ENO вызываемого блока. У вас нет необходимости вставлять RET в качестве последней команды в блоке; это происходит автоматически. Вы можете вставить несколько команд RET в один и тот же блок. Образцы шагов для использования команды RET внутри кодового блока FC: 1. Создайте новый проект и вставьте FC: 2. Редактируйте FC: – Вставляйте команды из каталога команд. – Вставьте команду RET, включая один из следующих элементов для параметра "Return_Value": TRUE (ИСТИНА), FALSE (ЛОЖЬ) или адрес в памяти, который указывает требуемое возвращаемое значение. – Вставляйте следующие команды. 3. Вызовите FC из MAIN [OB1]. Вход EN блока FC в кодовом блоке MAIN должен принять значение ИСТИНА, чтобы начать исполнение FC. Значение, определяемое командой RET в FC, будет находиться на выходе ENO блока FC в кодовом блоке MAIN после исполнения блока FC, для которого поток сигнала к команде RET принял значение ИСТИНА. |