При косвенной адресации для доступа к данным в памяти используется указатель. CPU S7–200 дает возможность использования указателей для косвенной адресации следующих областей памяти: I, Q, V, M, S, T (только текущее значение) и C (только текущее значение). Косвенно адресовать можно переменные байтового, словного и двухсловного типов. Косвенную адресацию нельзя использовать для обращения к отдельному биту или к аналоговым значениям.
Для косвенного обращения к адресу в памяти сначала необходимо создать указатель на этот адрес. Указатель – это ячейка памяти, имеющая размер двойного слова (4 байта), которая содержит адрес другой ячейки памяти. В качестве указателей можно использовать только ячейки V-памяти, L-памяти или аккумуляторные регистры (AC1, AC2, AC3). Для создания указателя нужно использовать команду Переместить двойное слово (MOVD), чтобы переместить адрес косвенно адресованной ячейки памяти в ячейку указателя. При этом имени входной переменной должен предшествовать знак амперсанд (&), чтобы указать на необходимость перемещения в указатель адреса ячейки памяти, а не её содержимого. Например, после выполнения операции AC1 = &VB0 указатель AC1 будет содержать адрес байта VB0, а не его значение.
Ввод знака астериска (*) перед именем переменной указывает, что эта переменная является указателем и хранит адрес ячейки памяти. Например, после выполнения операции VB1 = *AC1 переменной VB1 будет присвоено значение переменной, на которую ссылается указатель AC1, а не её адрес.
Значение указателя может быть изменено для того, чтобы перейти к другой ячейке памяти. Например, увеличение значение указателя на единицу приведёт к тому, что он будет хранить адрес следующей ячейки памяти.
Задача 14. Разработать программу, запоминающую последовательность байтов, вводимых с входа IB 0 при появлении сигнала на IB 1.0, и отображающую их на выходе QB 0 при появлении сигнала IB 1.2. Для сброса запомненных данных использовать вход IB 1.1.
Задание: модифицировать программу таким образом, чтобы в процессе ввода данных они отображались на выходе контроллера QB 0.
Тема 9. Работа с аналоговыми входами и выходами
Задача 15. Создать программу, осуществляющую сложение двух аналоговых сигналов, поступающих на входы контроллера AIW 0 и AIW 2, с выдачей результата на выход AQW 0.
Задание: модифицировать программу таким образом, чтобы выходной сигнал контроллера AQW 0 соответствовал разности сигналов, поступающих на входы AIW 0 и AIW 2.
Дата: 2019-12-10, просмотров: 315.