This is topic Трудности при создании FBD и IL программ in forum Языки программирования (IL/FBD) / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/11/t/000004.html

Posted by electropribor (Участник № / Member № 122) on :
 
Какие ограничения накладываются на имена переменных, определяемые с помощью оператора #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).
Мы пометим это при ближайшей корректировке СПРАВОЧНОЙ СИСТЕМЫ.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2