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

Макрос. Динамические переменные

Модератор: специалисты Weintek

Ответить

Автор темы
Dron_Tat
здесь недавно
здесь недавно
Сообщения: 82
Зарегистрирован: 07 янв 2017, 09:12
Имя: Андрей
Благодарил (а): 1 раз
Поблагодарили: 1 раз

Макрос. Динамические переменные

Сообщение Dron_Tat »

Добрый день. Пытаюсь реализовать динамические переменные в цикле for, но что то не получается:

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

macro_command main()
bool download, upload, return_sush
int i
char result[1]
char string1[20] = "Control_HMI.AUTO_DN_"

for i=1 to 4
	StringBin2DecAsc(i, result[0])
	StringCat(result[0], string1[0])
	GetData(download, "Siemens S7-1200/S7-1500", string1[0] , 1)
	GetData(upload, "Siemens S7-1200/S7-1500", "Control_HMI.AUTO_UP_"+i, 1)
	GetData(return_sush, "Siemens S7-1200/S7-1500", "Control_HMI.AUTO_RT_"+i, 1)
next i
end macro_command
Не хочу все теги расписывать, так это только начало.
Либо я тупой, либо панель не умеет так работать, не пойму как реализовать

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1455
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 61 раз
Поблагодарили: 181 раз

Макрос. Динамические переменные

Сообщение Madwolf »

Насколько я понял, то в функциях макроса панель не допускает вложенных функций (в GetData и SetData не прокатывало у меня никогда).
"Control_HMI.AUTO_RT_"+i нужно вынести в отдельную функцию:
char stringSumm[21] = "Control_HMI.AUTO_RT_"+i

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

Макрос. Динамические переменные

Сообщение VanMo »

Добрый день.
Не работает такой способ адресации. Имя тега должно быть константным.
Единственный вариант - подставлять переменную с абсолютным адресом.

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1455
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 61 раз
Поблагодарили: 181 раз

Макрос. Динамические переменные

Сообщение Madwolf »

Не сразу понял что это имя тега. Вам нужно использовать индексный регистр.
Ответить

Вернуться в «WEINTEK (операторские панели)»