1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

P#

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
Sew_Eurodrive
освоился
освоился
Сообщения: 211
Зарегистрирован: 04 фев 2019, 07:07
Имя: Андрей
Благодарил (а): 13 раз
Поблагодарили: 2 раза

P#

Сообщение Sew_Eurodrive »

доброго времени суток коллеги.
Подскажите по простому что такое к примеру Р#db1.dbx2224.0
Что берет это P#
Аватара пользователя

DemoN9577
осмотрелся
осмотрелся
Сообщения: 133
Зарегистрирован: 22 июл 2017, 22:47
Имя: Сергей
Страна: СССР
Благодарил (а): 6 раз
Поблагодарили: 25 раз

P#

Сообщение DemoN9577 »

Косвенная адресация, указатель (Pointer) на db1 байт 2224 начиная с нулевого бита.
STEP 7 использует данный тип
указателя для передачи фактических параметров
________________________________
Не ждите чуда - чудите сами!

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3559
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 253 раза

P#

Сообщение Михайло »

DB1.DBX2224.0 - это значение false/true.
Р#DB1.DBX2224.0 - это адрес/указатель в памяти ПЛК, по котором можно найти значение false/true, например, 0x0F2376AE (шестнадцатеричная форма). Правда у Сименса, насколько я знаю, указатели никогда и нигде не отображаются в виде числа, поэтому даже не знаю, 32-битная ли там адресация, а пример адреса привел от балды.

Если вы передаете значение DB1.DBX2224.0 в функцию, то она может знать только значение false/true.
Если вы передаете указатель (адрес) Р#DB1.DBX2224.0, то функция может извлечь false/true по этому адресу, а еще прибавляя к адресу по единице, прочитать все последующие значения false/true, лежащие в памяти по порядку. То есть указатель P# позволяет передать массив данных, а не одно значение. Обычно для этого указатели и используют. Указатель, в подавляющем большинстве, указывает на первый элемент в массиве, для полноты информации с указателем еще должна идти информация о длине массива.
Ответить

Вернуться в «Simatic Step7»