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

Косвенная адресация в SCL TIA Portal

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

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

Всем привет.
Нужно написать небольшую программку на SCL для 1200 и что то не идет )))
Не дает редактор обратиться абсолютно, т.е. М1.0 в тексте, это ошибка, подставляю % к М1.0 - автоматически создается глобальная переменная "Tag_1". Оно что, только символьно умеет? В настройках системы порылся, в разделе "PLC Programming/SCL" выставил "Operand representation" - Symbolic and absolute. Ноль эмоций. Ну это как вроде Бог с ним.
Но как косвенно то обратиться? Как, к примеру зажечь нужный бит по условию

Код: Выделить всё

IF true THEN
    Q[0, N] := true;
END_IF;
Q - not defined ))

Выручайте. Бергера для TIA SCL не вижу.

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

Косвенная адресация в SCL TIA Portal

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

Кажется разбирались уже... Пришли к выводу, что I и Q перебирать по индексу не получится, а M можно. Вроде так.

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

Михайло писал(а): 25 июн 2022, 07:16M можно

Код: Выделить всё

IF true THEN
    М[0, N] := true;
END_IF;
Та же песня... Или я чего то не допонимаю

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Косвенная адресация в SCL TIA Portal

Сообщение SMax »

0001.jpg
Отправлено спустя 16 минут :
Если просто зажечь бит (без динамически изменяемого индекса):
0002.jpg
<Tag>.X<Bit number>
<Tag>.B<BYTE number>
<Tag>.W<WORD number>
<Tag>.D<DWORD number>
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

SMax, ну вот, век живи, век учись )))
А я уже сделал через Array, а в конце кода Poke_bool (или bit, как там) в цикле. И проклял 1200й ;)
Хотя наверно не зря проклял... А в 1500м так же? Или все же аля классика? Без вот этих лишних раскладов на сторонние структуры.

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

SMax, что то вспомнил эту тему, сунулся, и не понял, что за конструкция AT "Byte1" на скрине? Понятно, что atbyte1 это массив bool. И эта надпись вроде как говорит о соотношении массива с байтом. Но на скрине она в поле имени переменной. Как это?
Аватара пользователя

M3f
не первый раз у нас
не первый раз у нас
Сообщения: 377
Зарегистрирован: 31 янв 2017, 11:08
Имя: Николай
Благодарил (а): 8 раз
Поблагодарили: 116 раз

Косвенная адресация в SCL TIA Portal

Сообщение M3f »

stesl, почитайте Overlapping tags with AT.
EPLAN Electric P8 Professional+ 2.7 HF1 11496 | TIA Portal Professional V17 Upd1 | Creo Parametric 4.0 M070

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

M3f писал(а): 25 июл 2022, 13:21почитайте
Нет столбца Retain в окне переменных. FC с стандартным доступом (не оптимизированным), TIA 16

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Косвенная адресация в SCL TIA Portal

Сообщение SMax »

stesl писал(а): 25 июл 2022, 13:51 Нет столбца Retain в окне переменных. FC с стандартным доступом (не оптимизированным), TIA 16
У FC нет ячеек памяти, т.к. нет связанной с ней DB, что вы там хотите сделать Retain?

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

SMax писал(а): 26 июл 2022, 12:18 что вы там хотите сделать Retain
Я читаю предложенный топик. Я знаю, что у FC нет персонального DB по определению. То есть Ваш пример - только с FB?
viewtopic.php?p=128573#p128573

PS И я правильно понял, что адресация типа <AnyVar_byte>.%X0..7 работает только с цифрами числами? Т.е. нельзя сделать как то вроде <AnyVar_byte>.%X<AnyVar_int>

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Косвенная адресация в SCL TIA Portal

Сообщение SMax »

stesl писал(а): 26 июл 2022, 13:39 То есть Ваш пример - только с FB?
Нет, не только, в примере как раз используется FC.

В предложенном топике написано:
It is possible to overlap tags in the following blocks:
- FC/FB with standard access
- FB with optimized access for tags with Retain setting set to "Set in IDB"

stesl писал(а): 26 июл 2022, 13:39 И я правильно понял, что адресация типа <AnyVar_byte>.%X0..7 работает только с цифрами числами?
Правильно, для использования динамически меняющихся индексов необходимо пользоваться AT.

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

SMax писал(а): 27 июл 2022, 08:57 It is possible to overlap tags in the following blocks:
- FC/FB with standard access
Я это прочитал. Далее, следуя пунктам, отключил оптимизированный доступ в свойствах FC. Далее речь о заполнении Retain...
Каким образом у Вас в примере появилась надпись в имени переменной АТ...?

SMax
не первый раз у нас
не первый раз у нас
Сообщения: 320
Зарегистрирован: 17 июн 2016, 14:18
Имя: Максим
Благодарил (а): 7 раз
Поблагодарили: 113 раз

Косвенная адресация в SCL TIA Portal

Сообщение SMax »

001.png
stesl писал(а): 27 июл 2022, 09:16 Каким образом у Вас в примере появилась надпись в имени переменной АТ...?
002.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.

LexSL
осмотрелся
осмотрелся
Сообщения: 192
Зарегистрирован: 16 дек 2011, 15:13
Имя: Алексей
Страна: Россия
Благодарил (а): 65 раз
Поблагодарили: 46 раз

Косвенная адресация в SCL TIA Portal

Сообщение LexSL »

stesl писал(а): 26 июл 2022, 13:39 PS И я правильно понял, что адресация типа <AnyVar_byte>.%X0..7 работает только с цифрами числами? Т.е. нельзя сделать как то вроде <AnyVar_byte>.%X<AnyVar_int>
я писал обмен с устройством по RS485. Был ICP DAS I-7580 (Profinet to RS485), подключен к CPU315-2 PN/DP.
cpu315.png
В области I\O объявлены 32 байта Input\32 байта Output.
I7580.png
В функцию передачи данных входным параметром был адрес первого байта и данные записывал вот так:

Код: Выделить всё

#adr := #outputAdr + 1;
//сначала записываем передаваемые данные в область выходных данных
FOR #i := 1 TO 13 DO
	%QB(#adr):P := #buf_r[#i];
	#adr := #adr + 1;
END_FOR;
//только потом меняем транзакцию, по которой ICP-DAS понимает, что нужно отсылать данные
%QB(#outputAdr):P := #buf_r[0];	 
#outputAdr - адрес первого байта в Output
buf_r - массив байтов
Думаю, что с S7-1200\1500 это тоже работает
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Косвенная адресация в SCL TIA Portal

Сообщение stesl »

LexSL писал(а): 27 июл 2022, 09:45CPU315-2 PN/DP
Я не знаю, насколько Вы прониклись темой топика, но речь о кастрированном SCL 1200. В Вашем случае (классика), я бы написал например так:

Код: Выделить всё

for i := 0 to 7 do
	QX [0, i] := true;
end_for;
Смысл тут не в том, что конкретно делает код, а в простой и понятной косвенной адресации. 1200 не поддерживает ни косвенную, ни абсолютную адресацию. Отсюда и пляски. Ну и плюсом ко всему - факт того, что я особо никогда и не вникал в 1200 ))
Я даже не понимаю, что значит
%QB(#adr):P :=
что за :Р такое

Отправлено спустя 6 минут 48 секунд:
SMax, понял, спасибо. Надо будет справку на досуге по АТ открыть ;)
Особо нового в подходе для себя не увидел. Я делал так:

Ответить

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