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/000914.html

Posted by lumen_xp (Участник № / Member № 4034) on :
 
Здравствуйте. В FBD имеется раздел генераторы. Как используя стандартные блоки можно сделать управляемый генератор? Т.е. известно время цикла CALC. Я так понял генератор меандра изменяет свое состояние раз в цикл. Есть подозрение что необходимо использовать управляющий вход, но вод что и как на него навесить?
 
Posted by lumen_xp (Участник № / Member № 4034) on :
 
Немного подумав, я пришел к выводу что в случае если время цикла 100 мс, то ряд доступных частот будет весьма ограничен. Например возможно использование максимальной частоты 5Гц (больше просто не пройдет из-за времени цикла), далее 1Гц, 0,1Гц и т.д. Т.е. доступны те частоты при которых результат выражения 5/n, где n - частота [Гц], есть целое число. Выражение справедливо для цикла 100 мс. Возможным решением представляется написание программы на STL с использованием счетчиков.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Управление генератором можно осуществлять программно либо через управление циклом пересчета канала, вызывающего этот генератор, либо внутри программы с генератором.
В любом случае получить генератор с временным интервалом изменения его значения, меньшим, чем цикл обработки базы каналов, нельзя.
 
Posted by lumen_xp (Участник № / Member № 4034) on :
 
Не совсем понимаю как будет обсчитываться программа:
Т.е. счетчик будет прибавлять значение переменной b c интевалом CALC (задан 0,1с)? Если нет, то как модифицировать программу что бы она изменяла значение out_f с частотой 0,1 Гц при времени цикла CALC 0,1c.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Оператор цикла

while b!=a do
b=b+1;
end_while;

реализует внутренний цикл в одном вызове программы.

Вот пример программы, которая при цикле вызова 0.1 сек. будет генерировать меандр с периодом 10 сек.

PROGRAM
VAR_INPUT cicle : UINT := 50; END_VAR
VAR_INOUT RESULT : BOOL; END_VAR
VAR_INOUT count : UINT; END_VAR

count = count + 1;
IF count == cicle
THEN RESULT = !RESULT; count = 0;
END_IF;

END_PROGRAM
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2