Программируемый контроллер S7-200. Системное руководство Как показано на рис. 4–12, вы можете изменить значение указателя. Так как указатели имеют размер 32 бита, то для изменения значений указателей используйте операции над двойными словами. Для изменения значений указателей могут использоваться такие простые математические операции, как сложение или инкрементирование. Рис. 4–12. Изменение указателя 34 AC1 V199 Адрес VW200 MOVD &VW200, AC1 V200 1 2 Создает указатель, перемещением адреса VB200 (адрес V201 3 4 начального байта VW200) в AC1 AC0 V202 5 6 1 2 3 4 MOVW *AC1, AC0 V203 7 8 Перемещает значение слова, на которое указывает AC1 (VW200) в AC0.
AC1 V199 Адрес VW202 +D +2, AC1 V200 1 2 Прибавляет значение 2 к аккумулятору, чтобы он указывал AC0 на адрес следующего слова V201 3 4 5 6 7 8 MOVW *AC1, AC0 V202 5 6 Перемещает значение слова, на которое указывает AC1 (VW202) в AC0 V203 7 8 1 2 3 4 5 6 7 8 Совет Не забывайте указывать длину данных, к которым вы хотите обратиться: для обращения к байту увеличьте значение указателя на 1; для обращения к слову или текущему значению таймера или счетчика, увеличьте значение указателя на 2, для обращения к двойному слову увеличьте значение указателя на 4.
Пример программы для обращения к данным в памяти переменных с использованием смещения В этом примере используется LD10 как указатель на адрес VB0. Затем вы увеличиваете указатель на величину смещения, хранящуюся в VD1004. Теперь LD10 указывает на другой адрес в памяти переменных (VB0 + смещение). Значение, хранящееся в памяти переменных по адресу, на который указывает LD10, копируется в VB1900. Изменяя значение в VD1004, вы можете обратиться к любому адресу в памяти переменных. Сегмент 1 //Чтение значения из произвольного адреса VB //с помощью смещения: //1. Загрузить в указатель начальный адрес памяти // переменных. //2. Прибавить к указателю величину смещения. //3.
Скопировать значение из адреса в памяти // переменных (смещение) в VB1900. LD SM0.0 MOVD &VB0, LD10 +D VD1004, LD10 MOVB *LD10, VB1900