Форум TRACE MODE: техническая поддержка   
мой профиль / 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 » Присвоение значения канала

   
Автор / Author Тема / Topic: Присвоение значения канала
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Здравствуйте.
Что неверно в моей программе?

PROGRAM
VAR_IN_OUT
Q0 BigSumma In

END_VAR
Q0=0:Discret:1 R
EXIT

Не присваивается Q0 значение канала 0:Discret:1
Если написать "Q0=100" - присваивается!

Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Извините, вопрос снимается.

Возник новый: как сложить несколько значений?

Пишу:

PROGRAM
VAR_IN_OUT
Q0 BigSumma In
I1 0:Discret:1
I2 0:Discret:31
I3 0:Discret:79
END_VAR
Q0 = I1 + I2 + I3
EXIT

В результате Q0 принимает значение только I1 !!!

В чем ошибка?

Спасибо!

Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
PROGRAM
VAR_IN_OUT
Q0 BigSumma In
I1 0:Discret:1
I2 0:Discret:31
I3 0:Discret:79
END_VAR
Q0+I1
Q0+I2
Q0+I3
EXIT

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
В этом случае с каждым тактом происходит циклическое добавление значений каналов к Q0, т.е.
реализовано выражение Q0=Q0+I1+I2+I3!!!!
А мне нужно просто сумма I, I=1..n

Q0=I1+I2+I3

Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Вы не поняли - выход блока формируется в рамках одного такта, ведь никто же не говорит, что IL-код блока вычисляется как одна строчка за один такт! [Улыбка / Smile]
Поэтому при вычислении блока Вы получите сумму всех трех входов, а не их последовательные слагаемые. IL - это ОДНОАДРЕСНЫЙ язык программирования, в нем недопустимы конструкции вида: Q0=I1+I2+I3

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Хорошо, как же мне на IL написать программу, вычисляющую сумму?
Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Невнимательно прочитала Ваш ответ, а Вы, вероятно мой...

Код
Q0+I1
Q0+I2
Q0+I3

дает при всех единицах последовательные результаты:
3
6
9
Проверяла!!!
То есть, программа реализует функцию Q0=Q0+I1+I2+I3
а мне нужна
Q0=I1+I2+I3 !!!!!!!

Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Правильно, выход блока же не сбрасывается от вызова к вызову, значит надо сделать так:
F0+I1
F1+I2
F2+I3
Q0=F0

Суммировать через динамическую переменную, она при каждом вызове обнуляется. Но можно и выход обнулять в самом начале программы.

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



Icon 1 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post 
Используйте код:

Q0 = I1
Q0 + I2
Q0 + I3

IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Не поможет.
Поможет в начале
Q0=0
[clever / умный]

Сообщения / Posts 141 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post 
Q0 = I1
Q0 + I2
Q0 + I3

Тоже верный код и должен работать правильно.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
Olga Shabalina
Forum Haunter / Завсегдатай форума
Участник № / Member № 1126


Icon 1 отправлено / posted      Профиль для / Profile for Olga Shabalina           Редактировать/удалить сообщение / Edit/Delete Post 
Действительно, работает [Улыбка / Smile]
Правильно, какая разница, что присваивать Q1 в начале

Спасибо! [Усмешка / Big Grin]

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

   Закрыть тему / Close 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

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2