This is topic Программирование in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


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

Posted by shooombj (Участник № / Member № 3565) on :
 
Здравствуйте! Подскажите пожалуйста, как запрограммировать работу функций вида:

1. Y[i] = Y[i-1] + X[i]
2. Y[i] = 0,5*Y[i-1] + (X[i] + X[i-1])/2
3. Y[i] = (X[i] + X[i-1] + ... X[i - (N - 1)])/N

Можно ли в этом случае воспользоваться FBD-блоками?
X-вход, Y-выход. Для примера, пусть X генерируется любым стандартным генератором.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
1. Для решения задач 1 и 2 можно использовать функциональный блок "Запаздывание (LTN)" из раздела "Функции выбора". С задержанными сигналами производить необходимые арифметические действия с помощью блоков из раздела "Арифметические".

2. Задача 3 решается с помощью канала CALL с типом вызова RT_Statistics.
 
Posted by shooombj (Участник № / Member № 3565) on :
 
C задачами 1 и 2 все получилось, большое спасибо! А можно еще поподробнее о решении задачи 3.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
По поводу задачи 3.
Я, видимо, неточно представил себе суть задачи.
Ссылка на RT_Statistics не корректна.

В общем случае надо писать программу на языке ST.
Создавать массив из N глобальных переменных. Программно организовывать в нем стек с вытеснением самой ранней записи и усреднять значения, накопленные в стеке.
Функции стека и усреднения можно организовать с помощью циклов.

Не исключено, что при подходе к этой задаче с точки зрения ее конечного использования, можно найти и более рациональное решение.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2