This is topic Трудности при создании FBD и IL программ in forum Языки программирования (IL/FBD) / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Какие ограничения накладываются на имена переменных, определяемые с помощью оператора #DEFINE. Работает ли этот оператор при разработке метапрограмм и чем вызвана ошибка "неправильное имя переменной"? Пример: PROGRAM #DEFINE I0 VAR1 VAR_IN_OUT VAR1 AI_-lm00-0002 R END_VAR F0 = VAR1 /* в этом месте выдаёт ошибку*/
PROGRAM #DEFINE I1 T1 VAR_IN_OUT T AI_-lm00-0002 R END_VAR F0 = T1 /* Эдесь ошибки не возникает, но правильно ли работает ? */
Posted by Wizard (Участник № / Member № 109) on :
ЗАПИШИТЕ ПРОГРАММУ СЛЕДУЮЩИМ ОБРАЗОМ: PROGRAM #DEFINE I1 T1 VAR_IN_OUT T1 AI_-lm00-0002 R END_VAR F0 = T1 ТЕПЕРЬ БУДЕТ РАБОТАТЬ ПРАВИЛЬНО.
Posted by electropribor (Участник № / Member № 122) on :
Меня, наверное, не совсем правильно поняли. Я приводил примеры двух программ, одна из которых компилируется (вторая), а другая - нет. Вот пример программы, вызывающий ошибку при компиляции: PROGRAM #DEFINE I0 V1 VAR_IN_OUT V1 AI_-lm00-0002 R END_VAR F0 = V1 /* в этом месте выдаёт ошибку*/ Слегка переделаем вторую программу - поменяем I1 на I4 PROGRAM #DEFINE I4 T1 VAR_IN_OUT T1 AI_-lm00-0002 R END_VAR F0 = T1 И посмотрим дамп: 37 00[0] 00[0] : PROGRAM I00 <= 00037 (00) I01 <= 00002 (00) 01 05[0] 00[1] : = F0 T1 Почему то с каналом связывается переменная I1. Если указать переменную I4 в секции VAR_IN_OUT непосредственно (вместо T1), то получим следующий дамп: 37 00[0] 00[0] : PROGRAM I00 <= 00037 (00) I01 <= 00000 (00) I02 <= 00000 (00) I03 <= 00000 (00) I04 <= 00002 (00) 01 05[0] 00[1] : = F0 T1 что и должны были получить в предыдущем варианте.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Длина имени переменной, задаваемого оператором #DEFINE, ограничена 8 символами. Могут использоваться любые буквы и цифры. Однако, это имя не может использоваться в разделе определения переменных (между операторами VAR_IN_OUT и END_VAR). Мы пометим это при ближайшей корректировке СПРАВОЧНОЙ СИСТЕМЫ.