Date: File:PRO2_04E.1 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Косвенная адресация и инструкции с адресными регистрами L W [AR1, P#200.0] #Ini_Value #Par_Pointer #Counter ? ? ?
Date: File:PRO2_04E.2 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Виды адресации, доступные в STEP 7 Виды адресации Прямая адресация Косвенная адресация Абсолютная Символическая Адресация через память Регистровая адресация Примеры: A I 4.0A "Mot_on"OPN DB[MW10]A I[MD30]A I[AR1,P#0.0]A [AR1,P#0.0] L IW10L #NumSP T["runtime"]L IW["Number"]L ID[AR1,P#5.0]T W[AR1,P#0.0] 16-битный указатель (DB, T, C) 32- битный внутризонный указатель 32-битный внутризонный указатель 32- битный межзонный указатель
Date: File:PRO2_04E.3 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Прямая адресация переменных Местоположение в памяти (например). I37.4 Адрес Ширина доступа Байт, слово, двойное слово Значение Входы Q27.7 Байт, слово, двойное слово Выходы PIB655 Байт, слово, двойное слово Периферийные входы PQB653 Байт, слово, двойное слово Периферийные выходы M55.0 Байт, слово, двойное слово Меркеры T114--Таймеры C13--Счетчики DBX Байт (DBB), слово (DBW), двойное слово(DBD) Данные адресуются через DB регистр DIX406.1 Байт (DIB), слово(DIW), двойное слово(DID ) Данные адресуются через DI регистр L88.5 Байт (LB), слово (LW), двойное слово (LD) Локальный стек
Date: File:PRO2_04E.4 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Адресные идентификаторы прямой адресации для DB Открыть блок данных Загрузка и перенос в блоках данных OPN DB 19 OPN "Values" OPN DI 20 Комбинация инструкций (содержит OPN DB..) L DBB 1Загрузить байт данных с адресом 1 L DBW 2Загрузить слово данных (байты 2 и 3) L 5Загрузить число 5 T DBW 4Перенести в слово с адресом 4 L 'A'Загрузить ASCII-символ A L DIB28Загрузить байт данных с адресом 28 ==IСравнить A DBX 0.0Опросить бит 0 из байта 0 L DB19.DBW4 Загрузить слово данных из DB 19 L "Values".Number_1 Символический доступ к переменной Number_1 блока, имеющего символьное имя "Values" A DB10.DBX4.7 Опросить бит 7 из байта 4 DB 10
Date: File:PRO2_04E.5 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Инструкции с регистрами DB l CDB: Обмен содержимого DB - регистров l Загрузить DB-регистр в ACCU1 L DBNO (загрузить номер открытого DB в ACCU1) L DINO (загрузить номер открытого DI в ACCU1) l Загрузить длину блока данных L DBLG (загрузить длину (в байтах) блока данных, открытого через DB, в ACCU1) L DILG (загрузить длину (в байтах) блока данных, открытого через DI, в ACCU1) Оценка информации о DB в программе перед: после: CDB Регистр DB Регистр DI
Date: File:PRO2_04E.6 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation l 16-битный указатель в формате слова (адресация DB,T,C) L 11 T MW 60 L C[MW60] L C11 LC T [MW60] LC T11 OPN DB[MW 60] OPN DB 11 UC FC[MW60] UC FC11 CC FC[MW60]CC FC11 UC FB[MW60]UC FB11 CC FB[MW60] CC FB11 l 32- битный указатель в формате двойного слова (адресация I, Q, M,...) L P#24.0 T MD 50 L I W [MD50] L IW 24 Область Ширина адрес доступа Косвенная адресация через память
Date: File:PRO2_04E.7 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Структура указателя при косвенной адресации через память l Структура 16-битового указателя: Интерпретируется как беззнаковое целое число в интервале l Структура 32-битового указателя (внутризонного): BBBBBBBBBBBBBXXX BBB Адрес бита Адрес байта (беззнаковое целое) Не используется l Загрузка константы типа 32-битового указателя (внутризонного): L P#25.3 (P = Pointer (указатель), Адрес байта= 25, Адрес бита= 3)
Date: File:PRO2_04E.8 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Специальные особенности косвенной адресации через память Области памяти для сохранения 16- и 32-битовых указателей l Меркеры (адресуются абсолютно или символьно, напр.: OPN DB[MW30], OPN DI["Motor_1"], и т.д. A I[MD30], T QD["Speed_1"], и т.д.) l Локальный стек данных (адресуются абсолютно или символьно, напр.: OPN DB[LW10], OPN DI[#DB_NO], и т.д. A I[LD10], T QD[#Par_Pointer], и т.д.) l Глобальный (общий) блок данных (адресация можент быть только абсолютной), DB должен быть предварительно открыт, напр.: OPN DB[DBW0] (переписывается регистр DB !!!), OPN DI[DBW22], напр.: A I[DBD10], T QD[DBD22], и т.д.) l Экземпляр блока данных (адресация можент быть только абсолютной), DI должен быть предварительно открыт, напр.: OPN DB[DIW20], OPN DI[DIW0] (переписывается регистр DI !!!), напр.: A I[DID10], T QD[DID22], и т.д.) Характеристики в передачи указателей для FB и FC Указатели, используемые в параметрах, не могут использоваться непосредственно для косвенный адресации через память. Указатели для косвенной адресации, помещенные в память, перед вызовом должны быть скопированы во временные переменные.
Date: File:PRO2_04E.9 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Пример косвенной адресации FC30:Пример для косвенной адресации Network 1:Открыть DB с помощью косвенной адресации L#dbnumber// Скопировать номер DB в MW100 TMW100// OPNDB[MW 100]// Открыть DB Network 2:Цикл удаления LP#18.0 // Сохранить конечный адрес(DBW18)как указатель TMD40 // в MD 40; L10 // Установить счетчик цикла на 10 next:TMB50 // и сохранить его в MB 50; L0 // Загрузить инициализирующее значение TDBW[MD 40] // и перенести его в DB; LMD40 // Загрузить указатель, LP#2.0 // уменьшить его на 2 байта -D // и перенести результат назад TMD40 // в MD 40; LMB50 // Загрузить счетчик цикла LOOPnext // Уменьшение счетчика и,если // он не равен 0, то переход;
Date: File:PRO2_04E.10 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Упражнение 4.1. Программирование цикла с косвенной адресацией Meas_Value[1] Meas_Value[2] Meas_Value[9] Meas_Value[10] Meas_Value[11] #Ini_Value и т.д. DB Указатель на адрес в DB #Par_Pointer #Counter Байты адреса
Date: File:PRO2_04E.11 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Внутризонная регистровая косвенная адресация LAR1 P#10.0 AR1: L M W [AR1, P#200.0] Область Ширина Адресный Постоянное Выполнение L MW 210 доступарегистр смещение инструкции: l Внутризонный указатель в AR1 или AR2: BBBBBBBBBBBBBXXX BBB Адрес бита Адрес байта (беззнаковое целое) Не используются l Синтаксис команды:
Date: File:PRO2_04E.12 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Межзонная регистровая косвенная адресация LAR1 P#M10.0 AR1: М L W [AR1, P#200.0] Ширина Адресный Постоянное Выполнение L MW 210 доступарегистр смещение инструкции: l Межзонный указатель в AR1 или AR2: BBBBBBBBBBBBBXXX RRR00000BBB Адрес бита Адрес байта (беззнаковое целое) Идентификатор области l Синтаксис команды: Bit 31=0: внутризонная Bit 31=1: межзонная l Идентификатор 000Периферия (Р)001Входы (PII) области: 010Выходы (PIQ)011Память меркеров 100Блок данных, регистр DB101Блок данных, регистр DI 110Собственные локальные 111Локальные данные вызывающего данные блока
Date: File:PRO2_04E.13 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Инструкции для загрузки адресных регистров Загрузка адресных регистров l LARn (n =1 или 2): Загрузить содержимое ACCU1 в ARn l LARn Загрузить содержимое в ARn l LARn P# Загрузить адрес в ARn : l Регистры процессора:AR1, AR2 (напр., LAR1 AR2 и LAR2 AR1) l 32-битовые переменные:MDn, LDn, DBDn, DIDn (напр., L DBD5, и т.д.) l символ. 32- битовые переменные : 32- битовые глобальные переменные (напр., LAR1 "Index" и (глобальные и локальные) т.д.) и временные переменные OB, FB и FC (напр., LAR1 #Address, и т.д.) P# l Указатель с абсолютной En.m, An.m, Mn.m, Ln.m, DBXn.m, DIXn.m битовой адресацией: (напр., LAR1 P#M5.3, LAR2 P#I3.6, и т.д.) l Указатель с локальной OB: TEMP- переменные (напр.,: LAR1 P##Par_Pointer, символ. адресацией и т.д.) FB: IN-, OUT-, INOUT-, STAT- и TEMP- переменные. FC: TEMP- переменные (LAR1 P##Loop, и т.д.)
Date: File:PRO2_04E.14 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Другие инструкции для адресных регистров Перенос из адресного регистра l TARn (n =1 или 2): Перенос содержимого из ARn в ACCU1 l TARn Перенос содержимого из ARn в : l Процессорные регистры: AR2 (напр., TAR1 AR2 ) l 32 -битовые абс. переменные: MDn, LDn, DBDn, DIDn (напр., TAR2 MD5, и т.д.) l симв. 32 -битовые переменные: 32- битовые глобальные переменные (напр., TAR1 (глобальные и локальные) "Index", и т.д.) и TEMP- переменные OB, FB и FC (напр., TAR1 #Address, и т.д.) Обмен адресных регистров l CARОбмен содержимого адресных регистров AR1 и AR2 Инкрементирование адресных регистров l +ARn Прибавить ACCU1-L к ARn l +ARn P#x.m Прибавить указатель без указания области P#x.m к ARn
Date: File:PRO2_04E.15 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Специальные особенности адресных регистров Внутреннее использование AR1 STL/LAD/FBD-редактором При доступе к параметрам в FC, используются регистры AR1 и DB, если параметры имеют сложный тип данных (ARRAY, STRUCT, DATE_AND_TIME). При доступе к INOUT-параметрам FB, используются AR1 и DB регистры, если INOUT- параметр имеет сложный тип данных (ARRAY, STRUCT, DATE_AND_TIME). Никакой доступ к локальным параметрам невозможен между командой загрузки в адресный регистр и командой косвенного доступа через регистр к желаемой переменной. Внутреннее использование AR2 STL/LAD/FBD-редактором Регистр AR2 и регистр DI используются как база адреса для адресации всех параметров и STAT-переменных в FB. Если AR2 или DI - изменяются пользователем внутри FB, никакой доступ к собственным параметрам или STAT-переменным невозможен без восстановления обоих регистров. Никаких ограничений в отношении регистра AR2 и регистра DI в пределах FC нет.
Date: File:PRO2_04E.16 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Упражнение 4.2. Программирование цикла с регистровой косвенной адресацией #ACCU1 Указатель на адрес в DB #AR1 #ACCU Number[1] Number[2] Number[9] Number[10] Number[11] и т.д. DB Адреса байтов
Date: File:PRO2_04E.17 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Типы указателей в STEP 7 16-битовый указатель для косвенной адресации через память l Для косвенного доступа через память к таймерам, счетчикам, для открытия блоков данных и для вызова FC без параметров и FB без параметров и STAT-переменны х 32-битовый указатель для косвенной и регистровой адресации через память l 32-битовый внутризонный указатель для косвенного доступа через память и регистры в области PI, PQ, I, Q, M, DB, DI и L (локальный стек данных) l 32 -битовый межзонный указатель для косвенного доступа через регистры в области PI, PQ, I, Q, M, DB, DI, L и V (локальный стек данных вызывающего блока) 48-битовый указатель (тип данных: POINTER) l Тип данных для передачи параметров в блоки (FB и FC) l В дополнение к 32-битовому межзонному указателю содержит номер DB 80-битовый указатель (тип данных: ANY) l Тип данных для передачи параметров в блоки (FB и FC) l В дополнение к 32-битовому межзонному указателю содержит номер DB, тип данных и коэффициент повторения
Date: File:PRO2_04E.18 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Структура и назначение типа данных POINTER Byte n Byte n+2 Byte n+4 Byte n+1 Byte n+3 Byte n+5 Номер DB (INT) 1 O O O _ O R R R _ O O O O _ O B B B (32- битовый межзонный B B B B _ B B B B _ B B B B _ B X X X указатель) Назначение параметров типа POINTER l Вид указателя P#DBn.DBXx.y где:n - номер DB, x - номер байта, y - номер бита P#DIn.DIXx.y(напр.: P#DB5.DBX3.4, P#DI2.DIX10.0, и т.д.) P#Zx.y где: Z - область, напр.: P, I, Q, M и L (напр.: P#I5.3, P#M10.0, и т.д.) l Объявление адреса: MD30 (в этом случае, номер DB, идентификатор #Motor_on области и битовый адрес автоматически "Motor_1".speed вводятся в POINTER) Структура типа данных POINTER
Date: File:PRO2_04E.19 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Структура типа данных ANY l Указатель ANY для типов данных Byte n Byte n+2 Byte n+4 Номер DB 1 O O O _ O R R R _ O O O O _ O B B B B B B B _ B B B B _ B B B B _ B X X X 16#10 Тип данных Коэффициент повторения Byte n+6 Byte n+8 Тип данных Идентификатор VOID00 BOOL01 BYTE02 CHAR03 WORD04 INT05 DWORD06 DINT07 REAL08 DATE09 TOD0A TIME0B S5TIME0C DT0E STRING13 Параметр. тип Идентификатор BLOCK_FB17 BLOCK_FC18 BLOCK_DB19 BLOCK_SDB1A COUNTER1C TIMER1D l Указатель ANY для параметрических типов Byte n Byte n+2 Byte n+4 16#0000 Номер таймера, счетчика или блока 16#10 Параметрический тип 16#0001 Byte n+6 Byte n+8 16#0000
Date: File:PRO2_04E.20 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Назначение параметров с типом данных ANY Вид указателя: l P#[Data block.]Битовый адрес Числовой тип P#DB10.DBX12.0 REAL 20 Указатель на область в DB10, начинающуюся с 12-го байта, содержащую 20 ячеек с типом данных REAL (ARRAY[1..20] OF REAL) P#I 10.0 BOOL 8 Указатель на область из 8 бит в IB10 Объявление адреса: l абсолютное DB5.DBD10Тип данных: DWORD, коэффиц. повтор.(КП): 1 номер DB: 5, указатель: P#DB5.DBX10.0 IW32Тип: WORD, КП: 1, DB: 0, указатель: P#I 32.0 T35Тип : TIMER, Номер.: 35 l символьное #Motor_1. speed для элементарных типов данных компилятор "Pump".Start устанавливает корректный тип данных, коэффициент повторения 1 и указатель Примечание При символьном назначении (ARRAY, STRUCT, STRING, UDT) в указателе ANY компилятором установливается идентификатор типа данных 02 (BYTE) и длина области в байтах.
Date: File:PRO2_04E.21 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Косвенное назначение параметра типа ANY Назначение фактического значения типа ANY временной переменной l объявление временной переменной типа ANY в вызываемом блоке например: temp aux_pointerANY l заполнение временной переменной ANY информацией о указателе например: LAR1P##aux_pointer// Загрузить адрес из aux_pointer L B#16#10// Загрузить идентификатор 10 TLB [AR1,P#0.0]// и перенести его со смещением 0 L l Назначение параметрам блока значения типа ANY (целевая область) с помощью вспомогательной переменной с указателем например: CALL FC 111 Targetfield:=#aux_pointer Преимущество l Динамическое переназначение параметрам указателя ANY во время выполнения
Date: File:PRO2_04E.22 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Использование переданного указателя ANY AddressDeclarationNameTypeInitial ValueComment 0.0inPar_PointerANY out in_out 0.0tempData_typeBYTE 2.0tempWFWORD 4.0tempDB_NrWORD 6.0tempArea_PointerDWORD Network 1: Выделение типа данных, коэффициента повторения, номера DB и указателя LP##Par_Pointer // Загрузка адреса of #Par_Pointer в ACCU1 LAR1 // и загрузка его в AR1; LB [AR1,P#1.0] // Выделение типа данных из указателя T#Data_type // и загрузка во временную переменную; LW [AR1,P#2.0] // Выделение коэффициента повторения TWF // и загрузка во временную переменную; LW [AR1,P#4.0] // Выделение номера DB T#DB_Nr // и загрузка во временную переменную; LD [AR1,P#6.0] // Выделение указателя T#Area_Pointer // и загрузка во временную переменную;
Date: File:PRO2_04E.23 SIMATIC S7 Siemens AG All rights reserved. Information and Training Center Knowledge for Automation Упражнение 4.3. Функция вычисления суммы и среднего значения FC 43 EN ENO Measured_values Sum Mean_value Decl.NameTyp inMeasured_valuesANY outSumREAL outMean_valueREAL DB P#DB43.DBX0.0 REAL 8 NameType STRUCT Measurement ARRAY[1..8] REAL END_STRUCT