Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
![]()
|
Доступ к данным в областях памяти CPU STEP 7 Basic облегчает символическое программирование. Обычно переменные создаются или в переменных ПЛК, или в блоке данных, или в интерфейсе в верхней части OB, FC или FB. Эти переменные включают в себя имя, тип данных, смещение и комментарий. Кроме того, в блоке данных может быть указано начальное значение. Вы можете использовать эти переменные при программировании, вводя имя переменной в качестве параметра для команды. При желании вы можете ввести в качестве параметра для команды абсолютный операнд (область памяти, размер и смещение). Примеры в следующих разделах показывают, как вводить абсолютные операнды. Перед абсолютным операндом программным редактором автоматически вводится символ %. В программном редакторе у вас есть возможность выбора между следующими представлениями: символическое, символическое и абсолютное или абсолютное. I (образ процесса на входах): CPU опрашивает периферические (физические) входы в каждом цикле непосредственно перед исполнением циклического OB и записывает эти значения в образ процесса на входах. Вы можете обращаться к образу процесса на входах побитно, побайтно, пословно или используя двойные слова. Разрешается доступ как на чтение, так и на запись, но обычно входы образа процесса только считываются. Бит I[адрес байта].[адрес бита] I0.1 Байт, слово или двойное слово I[размер][адрес начального байта] IB4, IW5 или ID12 Добавляя к адресу ":P", вы можете непосредственно считывать цифровые и аналоговые входы CPU, SB или SM. Доступ через I_:P отличается от доступа через I тем, что данные получаются непосредственно с входов, к которым производится обращение, а не из образа процесса на входах. Доступ через I_:P называется также прямым доступом на чтение, Так как данные считываются прямо из источника, а не из его копии, которая была сделана при последнем обновлении образа процесса на входах. Так как физические входы получают свои значения непосредственно из подключенных к ним полевых устройств, то запись в эти входы запрещена. То есть доступ через I_:P является доступом только на чтение, в отличие от доступа к I, который возможен как на считывание, так и на запись. Доступ через I_:P ограничен также размером входов, поддерживаемых CPU, SB или SM, с округлением до следующего байта. Например, если входы SB с 2 DI / 2 DQ сконфигурированы так, что они начинаются с I4.0, то обратиться к этим входа можно с помощью I4.0:P и I4.1:P или IB4:P. Обращение к I4.2:P … I4.7:P не распознается как ошибка, но не имеет смысла, так как эти адреса не используются. Попытки обращения к IW4:P и ID4:P запрещены, так как они превышают байтовое смещение этой SB. Обращение через I_:P не влияет на соответствующее значение, хранящееся в образе процесса на входах. Бит I[адрес байта].[адрес бита]:P I0.1:P Байт, слово или двойное слово I[размер][адрес начального байта]:P IB4:P, IW5:P, или ID12:P Основы ПЛК 3.2 Память данных, области памяти и адресация Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 61 Q (образ процесса на выходах): CPU копирует значения, хранящиеся в образе процесса на выходах в физические выходы. К образу процесса на выходах вы можете обращаться побитно, побайтно, пословно или используя двойные слова. К выходам образа процесса разрешается доступ как на чтение, так и на запись. Бит Q[адрес байта].[адрес бита] Q1.1 Байт, слово или двойное слово Q[размер][адрес начального байта] QB5, QW10, QD40 Добавляя к адресу ":P", вы можете осуществлять непосредственную запись в физические цифровые и аналоговые выходы CPU, SB или SM. Доступ через Q_:P отличается от доступа через Q тем, что данные поступают непосредственно на выходы, к которым осуществляется обращение, и, кроме того, в образ процесса на выходах (запись осуществляется в оба места). Доступ через Q_:P иногда называют прямым доступом, так как данные посылаются прямо на целевой адрес, которому не приходится ждать следующего обновления образа процесса на выходах. Так как физические выходы непосредственно управляют полевыми устройствами, подключенными к этим выходам, то чтение с этих выходов запрещено. Т.е. доступ через Q_:P является доступом только на запись, в отличие от доступа через Q, при котором возможно как чтение, так и запись. Доступ через Q_:P ограничен также размером выходов, поддерживаемых CPU, SB, или SM (с округлением до следующего байта). Например, если выходы SB с 2 DI / 2 DQ сконфигурированы так, что они начинаются с Q4.0, то к этим выходам можно обращаться через Q4.0:P и Q4.1:P или через QB4:P. Обращение к Q4.2:P … Q4.7:P не воспринимается как ошибка, но не имеет смысла, так как эти адреса не используются. Попытки обращения к QW4:P и QD4:P запрещены, так как они превышают байтовое смещение этой SB. Доступ через Q_:P влияет как на физический выход, так и на соответствующее значение, в образе процесса на выходах. Бит Q[адрес байта].[адрес бита]:P Q1.1:P Байт, слово или двойное слово Q[размер][адрес начального байта]:P QB5:P, QW10:P или QD40:P M (область битовой памяти, M-память): Эту область памяти вы можете использовать для управляющих реле и данных, чтобы хранить промежуточные результаты операций или другую управляющую информацию. К области битовой памяти можно обращаться побитно, побайтно, пословно или используя двойные слова. Для битовой памяти возможен доступ как на чтение, так и на запись. Бит M[адрес байта].[адрес бита] M26.7 Байт, слово или двойное слово M[размер][адрес начального байта] MB20, MW30, MD50 Основы ПЛК 3.2 Память данных, области памяти и адресация Программируемый контроллер S7-1200 62 Системное руководство, 11/2009, A5E02669003-02 Temp (временная память): CPU выделяет временную память по мере необходимости. CPU выделяет временную память кодовому блоку в момент его запуска (для OB) или вызова (для FC или FB). При выделении временной памяти кодовому блоку могут повторно использоваться те же адреса временной памяти, которые перед этим были использованы другим OB, FC или FB. CPU не инициализирует временную память в момент выделения, поэтому она может содержать любые значения. Временная память подобна M-памяти за одним важным исключением: область действия M-памяти "глобальна", а область действия временной памяти "локальна": ● M-память: Любой OB, FB и любая FC может обратиться к данным в M-памяти, т.е. данные находятся глобально в распоряжении всех элементов программы пользователя. ● Временная память: доступ к данным во временной памяти ограничен тем OB, FB или той FC, где были созданы или объявлены адреса во временной памяти. Адреса временной памяти остаются локальными и не могут быть использованы другими кодовыми блоками, даже если кодовый блок вызывает другой кодовый блок. Например: Если OB вызывает FC, то FC не может обратиться к временной памяти OB, вызвавшего эту функцию. CPU предоставляет временную (локальную) память для каждого из трех классов приоритета OB: ● 16 Кбайт для запуска и программного цикла, включая соответствующие FB и FC ● 4 Кбайта для стандартных событий, вызывающих прерывания, включая FB и FC ● 4 Кбайта для событий, вызывающих прерывания в связи с ошибками, включая FB и FC к временной памяти можно обращаться только с использованием символической адресации. DB (блок данных): Используйте блоки данных для хранения различных типов данных, включая промежуточные результаты операций или другие управляющие параметры для FB, и структуры данных, необходимые для многих команд, например, таймеров и счетчиков. Вы можете определить для блока данных доступ на чтение и запись или только на чтение. К блокам данных можно обращаться побитно, побайтно, пословно или используя двойные слова. Доступ к блокам данных, не защищенным от записи, возможен как на чтение, так и на запись. Доступ к блокам данных, защищенным от записи, возможен только на чтение. Бит DB[номер блока данных].DBX [адрес байта].[адрес бита] DB1.DBX2.3 Байт, слово или двойное слово DB[номер блока данных].DB [размер][адрес начального байта] DB1.DBB4, DB10.DBW2, DB20.DBD8 Основы ПЛК 3.2 Память данных, области памяти и адресация Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 63 Адресация входов/выходов в CPU и в модулях ввода/вывода Когда вы вставляете CPU и модули ввода/ вывода в экран со своей конфигурацией, то адреса I и Q назначаются автоматически. Вы можете изменить адресацию, установленную по умолчанию, выбрав адресное поле в конфигурационном экране и введя туда новые числа. Цифровым входам и выходам адреса присваиваются в полных байтах (по 8 бит), не зависимо от того, использует ли модуль все входы и выходы или нет. Аналоговым входам и выходам адреса присваиваются группами по 2 входа или выхода в каждой группе (4 байта). В этом примере вы можете изме6нить адрес DI16 на 2..3 вместо 8..9. Инструментальное средство поможет вам, изменяя диапазоны адресов, которые имеют неправильный размер или вступают в конфликт с другими адресами. На этом рисунке показан пример CPU 1214C с двумя SM. Основы ПЛК 3.3 Типы данных Программируемый контроллер S7-1200 64 Системное руководство, 11/2009, A5E02669003-02 3.3 Типы данных Типы данных используются для указания размера элемента данных, а также того, как эти данные могут быть интерпретированы. Каждый параметр команды поддерживает, по крайней мере, один тип данных, а некоторые параметры поддерживают несколько типов данных. Подведите указатель мыши к полю параметра команды, чтобы увидеть, какие типы данных поддерживаются для соответствующего параметра. Формальный параметр – это идентификатор на команде, который указывает адрес данных, подлежащих использованию командой (пример: вход IN1 команды ADD). Фактический параметр – это адрес или константа, где содержатся данные, подлежащие использованию командой (пример: %MD400 "Number_of_Widgets"). Тип данных фактического параметра, указанный вами, должен соответствовать одному из поддерживаемых типов данных формального параметра, определяемого командой. При задании фактического параметра вы должны указать переменную (символ) или абсолютный адрес. Переменные связывают символическое имя (имя переменной) с типом данных, областью памяти, смещением в памяти, и комментарием и могут быть созданы в редакторе переменных ПЛК или в редакторе интерфейса для блока (OB, FC, FB или DB). Если вы вводите абсолютный адрес, не связанный ни с какой переменной, вы должны использовать подходящий размер, соответствующий поддерживаемому типу данных, тогда при вводе создается стандартная переменная. Для многих входных параметров вы можете также вводить постоянное значение. В следующей таблице описаны поддерживаемые элементарные типы данных и даны примеры ввода констант. Все типы данных, кроме типа данных String [строка], доступны как в редакторе переменных ПЛК, так и в редакторах интерфейсов блоков. Тип String имеется только в редакторах интерфейсов блоков. В следующей таблице приведены элементарные типы данных. Тип данных Размер (в битах) Диапазон Примеры ввода констант Bool 1 от 0 до 1 TRUE, FALSE, 0, 1 Byte 8 от 16#00 до 16#FF 16#12, 16#AB Word 16 от 16#0000 до 16#FFFF 16#ABCD, 16#0001 DWord 32 от 16#00000000 до 16#FFFFFFFF 16#02468ACE Char 8 от 16#00 до 16#FF 'A', 't', '@' Sint 8 от -128 до 127 123, -123 Int 16 от -32768 до 32767 123, -123 Dint 32 от -2147483648 до 2147483647 123, -123 USInt 8 от 0 до 255 123 UInt 16 от 0 до 65,535 123 UDInt 32 0 до 4294967295 123 Real 32 от +/-1,18 x 10 -38 до +/-3,40 x 10 38 123.456, -3.4, -1.2E+12, 3.4E-3 LReal 64 от +/-2,23 x 10 -308 до +/-1,79 x 10 308 12345.123456789 -1.2E+40 Time 32 от T#-24d_20h_31m_23s_648ms до T#24d_20h_31m_23s_647ms Хранится как: от -2,147,483,648 мс до +2,147,483,647 мс T#5m_30s 5#-2d T#1d_2h_15m_30x_45ms String переменный от 0 до 254 символов в размере байта 'ABC' Основы ПЛК 3.3 Типы данных Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 65 Кроме того, командами преобразования поддерживается числовой формат BCD, хотя он и не предоставляется в распоряжение как тип данных. Формат Размер (в битах) Числовой диапазон Примеры ввода констант BCD16 16 от -999 до 999 123, -123 BCD32 32 от -9999999 до 9999999 1234567, -1234567 Формат для вещественных чисел Вещественные числа (или числа с плавающей точкой) представляются как 32-битовые числа с обычной точностью (Real) или 64-битовые числа с двойной точностью (LReal) в соответствии с описанием в стандарте ANSI/IEEE 754-1985. Числа с плавающей точкой обычной точности имеют точность до 6 значащих цифр, а числа с плавающей точкой двойной точности имеют точность до 15 значащих цифр. При вводе константы с плавающей точкой вы можете задать не более 6 (Real) или 15 (LReal) значащих цифр. Расчеты, которые нуждаются в длинном ряде значений, включая очень большие и очень малые числа, могут привести к неточным результатам. Это может произойти, если числа отличаются в 10 в степени x раз, где x > 6 (Real) или 15 (LReal). Например (Real): 100 000 000 + 1 = 100 000 000. Формат типа данных STRING CPU поддерживает тип данных STRING для хранения последовательности однобайтовых символов. Тип данных STRING содержит общее число символов (число символов в строке) и фактическое число символов. Тип данных STRING предоставляет до 256 байтов для хранения максимального числа символов (1 байт), фактического числа символов (1 байт) и до 254 символов, каждый их которых хранится в 1 байте. Вы можете использовать литеральные строки символов (константы) для параметров команд типа IN, используя одиночные кавычки. Например, ‘ABC’ – это строка из трех символов, которая может быть использована в качестве входа для параметра IN команды S_CONV. Вы можете создавать также строковые переменные, выбирая тип данных "String" в редакторе интерфейса блоков OB, FC, FB и DB. В редакторе переменных ПЛК создать строку символов невозможно. Вы можете указать максимальный размер строки в байтах при объявлении своей строки; например, "MyString[10]" определяет максимальный размер 10 байтов для MyString. Если вы не включаете квадратные скобки с указателем максимального размера, то принимается размер 254. Следующий пример показывает тип данных STRING с максимальным числом символов 10 и фактическим числом символов 3. Это значит, что тип данных STRING содержит 3 однобайтовых символа, но может быть расширен до 10 однобайтовых символов. Общее число символов Фактическое число символов Символ 1 Символ 2 Символ 3 ... Символ 10 10 3 'C' (16#43) 'A' (16#41) 'T' (16#54) - Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 11 Основы ПЛК 3.3 Типы данных Программируемый контроллер S7-1200 66 Системное руководство, 11/2009, A5E02669003-02 Массивы Вы можете создать массив, содержащий несколько элементов одного элементарного типа. Массивы могут создаваться в редакторах интерфейса блоков OB, FC, FB и DB. Массив невозможно создать в редакторе переменных ПЛК. Для создания массива в редакторе интерфейса блока выберите тип данных "Array [lo.. hi] of type", затем отредактируйте "lo", "hi" и "type" следующим образом: ● lo - начальный (наименьший) индекс для вашего массива ● hi - конечный (наибольший) индекс для вашего массива ● type – один из элементарных типов данных, например, BOOL, SINT, UDINT Отрицательные индексы тоже поддерживаются. Вы можете дать имя массиву в столбце Name редактора интерфейса блока. В следующей таблице показаны примеры массивов в том виде, как они отображаются в редакторе интерфейса блоков: Имя Тип данных Комментарий My_Bits Array [1.. 10] of BOOL Этот массив содержит 10 булевых значений My_Data Array [-5.. 5] of SINT Этот массив содержит 11 значений типа SINT, включая индекс 0 К элементам массива вы обращаетесь в своей программе, используя следующий синтаксис: ● Array_name[i ], где i – желаемый индекс. Примеры из редактора программ для ввода параметров: ● #My_Bits[3] – ссылается на третий бит массива "My_Bits" ● #My_Data[-2] - ссылается на четвертый элемент типа SINT массива "My_Data" Символ # вставляется автоматически редактором программ. Основы ПЛК 3.3 Типы данных Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 67 Тип данных DTL (Data and Time Long) Тип данных DTL – это структура из 12 байтов, которая хранит информацию о дате и времени в предопределенной структуре. Вы можете определить тип данных DTL во временной памяти блока или в DB. Длина (байты) Формат Диапазон значений Пример ввода значения 12 Время и календарь (год-месяц-день-час: минута:секунда.наносекунды) мин.: DTL#1970-01-01- 00:00:00.0 макс.: DTL#2554-12-31- 23:59:59.999 999 999 DTL#2008-12-16- 20:30:20.250 Каждый компонент типа данных DTL содержит свой тип данных и диапазон значений. Тип данных задаваемого значения должен совпадать с типом данных соответствующего компонента. Байт Компонент Тип данных Диапазон значений 0 1 Год UINT от 1970 до 2554 2 Месяц USINT от 1 до 12 3 День USINT от 1 до 31 4 День недели USINT от 1(воскресенье) до 7(суббота) День недели в записи значения не учитывается. 5 Час USINT от 0 до 23 6 Минута USINT от 0 до 59 7 Секунда USINT от 0 до 59 8 9 10 11 Наносекунды UDINT от 0 до 999 999 999 |