Форум TRACE MODE: техническая поддержка
Тема закрыта / Topic Closed  Тема закрыта / Topic Closed
  
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 5 » Языки программирования (IL/FBD) / Algorithm Programming Languages » Трудности при создании FBD и IL программ

   
Автор / Author Тема / Topic: Трудности при создании FBD и IL программ
_SaM_
Forum Member / Участник форума
Участник № / Member № 122


Icon 5 отправлено / posted      Профиль для / Profile for _SaM_           Редактировать/удалить сообщение / Edit/Delete Post 
Какие ограничения накладываются на имена переменных, определяемые с помощью оператора #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 /* Эдесь ошибки не возникает, но правильно ли работает ? */


Сообщения / Posts 40 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Wizard
unregistered



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
ЗАПИШИТЕ ПРОГРАММУ СЛЕДУЮЩИМ ОБРАЗОМ:
PROGRAM
#DEFINE I1 T1
VAR_IN_OUT
T1 AI_-lm00-0002 R
END_VAR
F0 = T1
ТЕПЕРЬ БУДЕТ РАБОТАТЬ ПРАВИЛЬНО.

IP / IP: IP адрес / IP address | Report this post to a Moderator
_SaM_
Forum Member / Участник форума
Участник № / Member № 122


Icon 1 отправлено / posted      Профиль для / Profile for _SaM_           Редактировать/удалить сообщение / Edit/Delete Post 
Меня, наверное, не совсем правильно поняли. Я приводил примеры двух программ, одна из которых компилируется (вторая), а другая - нет.
Вот пример программы, вызывающий ошибку при компиляции:
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
что и должны были получить в предыдущем варианте.

Сообщения / Posts 40 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post 
Длина имени переменной, задаваемого оператором #DEFINE, ограничена 8 символами.
Могут использоваться любые буквы и цифры.
Однако, это имя не может использоваться в разделе определения переменных (между операторами VAR_IN_OUT и END_VAR).
Мы пометим это при ближайшей корректировке СПРАВОЧНОЙ СИСТЕМЫ.

Сообщения / Posts 17075 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

   Открыть тему / Open Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2