This is topic Подключение FBD программы in forum Пользователи для пользователей at Форум TRACE MODE: техническая поддержка.


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

Posted by tressi (Участник № / Member № 4058) on :
 
Подскажите, пожалуйста, как сделать так чтобы FBD программа запускалась только после нажатия кнопки, а не сразу же с запуском проекта. Какой должен бать тип и подтип канала, и какие атрибуты кнопки? Проект разрабатывается в ТрейсМоуд 5.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
А почему проект разрабатывается в Trace Mode 5? Эта версия уже закрыта.
 
Posted by tressi (Участник № / Member № 4058) on :
 
Мне более удобно работать в Trace Mode 5.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Trace Mode 5 больше не поддерживается. Переход от версии 5 к версии 6 займет у Вас не так много времени, а пользы от этого будет намного больше.
 
Posted by SergeyZ86 (Участник № / Member № 5575) on :
 
Добрый день! У меня аналогичная проблема, только проект разрабатывается как раз в ТрейсМоуд 6. Я поступил следующим образом. Написал простенькую программу на FBD в шаблоне программ. Создал в узле канал класса CALL, вызывающий программу. При запуске профайлера все работает отлично. Затем я меняю тип канала, вызывающего программу на Output. Открываю свойства кнопки, и во вкладке "События" задаю на нее функцию "Выполнить", где указываю канал, вызывающий программу. После этого программа перестает запускаться. Подскажите пожалуйста, в чем может быть проблема?
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В настоящее время функция “Выполнить” в ГЭ отключена.
Для запуска программы с типом канала вызова OUT надо на экране создать аргумент, привязанный к атрибуту EXEC (39) канала вызова программы, а из ГЭ передавать в этот аргумент “1”.
 
Posted by SergeyZ86 (Участник № / Member № 5575) on :
 
Здравствуйте! Воспользовался вашим советом, происходит следующее. При записи "1" в аргумент (типа BOOL), привязанный к атрибуту EXEC(39), программа выполняется однократно, завершается и значение аргумента сбрасывается в "0" (при последующем нажатии кнопки все повторяется). Мне же нужно, чтобы:
1) программа выполнялась циклически, так как если бы она вызывалась стандартно каналом класса CALL типа Input;
2) завершалась только по нажатию другой кнопки.
Пункт №2 я предполагаю реализовать с помощью FBD блока "Exit". Подскажите пожалуйста, как реализовать пункт №1. Заранее благодарю.
 
Posted by stepan (Участник № / Member № 3589) on :
 
это же просто... нужно немного почитать справку и потренироваться с атрибутами канала.

1) выключить канал, который вызывает программу (в редакторе)

после запуска МРВ:
2)нужно включить программу - в атрибут 003 канала вызывающего программу отправляете 0 - канал включается и прога работает

3) нужно выключить - шлёте 1 - канал выключается, программа не вызывается
 
Posted by stepan (Участник № / Member № 3589) on :
 
это то что было нужно?
 
Posted by SergeyZ86 (Участник № / Member № 5575) on :
 
Спасибо stepan! Хотелось бы еще кое-что уточнить. Допустим, программа состоит из одного генератора синусоидального сигнала, значение этого сигнала выводится на ГЭ Тренд. При записи "1" в атрибут 003, программа выключается, но при этом продолжается расчет сигнала. При последующем включении программы она стартует ни с того значения, на котором была остановлена, а собственно с расчитанного на данный момент времени. Пытался запретить пересчет канала посылкой "0" в атрибут 123, не получилось. Подскажите пожалуйста, куда копать. Еще лучше было бы научиться запускать программу заново (с нуля). Заранее благодарю.
 
Posted by Nico (Участник № / Member № 5342) on :
 
sin от колличества пересчетов программы увеличиваем в самой проге
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
FBD "Генератор Sin" имеет в качестве аргумента время в секундах. Поэтому он не учитывает промежутки времени, в течение которых программа была выключена.
Начальные условия каждого запуска программы должны быть заданы в самой программе.
 
Posted by Yury (Участник № / Member № 6151) on :
 
Здравствуйте! Немного не по теме, но все же. Имеется две программы на FBD. Мне нужно связать их через один аргумент например BOOL. Т.е. чтобы, если я в одной из программ придавал этому аргументу значение 1, то и в другой программе тоже автоматически этот аргумент принимал значение 1. Возможно ли это сделать? Версия софта 6.06.
 
Posted by Ilgeneer (Участник № / Member № 5896) on :
 
Yury ,
Если не ошибаюсь, то в одной программе его делать out, а в другой программе in и привязать его на аут первой.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Yury,

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

или использовать предложение Ilgeneer'а.
 
Posted by traffick (Участник № / Member № 6646) on :
 
Добрый день, подскажите в чем ошибка синтаксическая ?
PROGRAM
VAR_OUTPUT Status : INT; END_VAR
VAR_OUTPUT STS : INT; END_VAR
VAR_OUTPUT STS2 : INT; END_VAR
VAR_INPUT ВВ_включен_C : BOOL; END_VAR
VAR_INPUT ВВ_отключен_C : BOOL; END_VAR
VAR_INPUT ВВ_рабочее_C : BOOL; END_VAR
VAR_INPUT ВВ_контрольное_C : BOOL; END_VAR
VAR_INPUT ВВ_ремонтное : BOOL; END_VAR


if ВВ_включен_C : BOOL == 0;
then Status =0; else Status = 1;end_if;

if ВВ_отключен_C : BOOL ==0;
then Status =0; else Status =1;end_if;

if ВВ_рабочее_C : BOOL ==0;
then Status =0; else Status =1;end_if;

if ВВ_контрольное_C : BOOL ==0;
then Status =0; else Status =1;end_if;


END_PROGRAM
Заранее спасибо!
 
Posted by Nico (Участник № / Member № 5342) on :
 
"if ВВ_включен_C : BOOL == 0;" - и подобные ниже строчки неверны
 
Posted by traffick (Участник № / Member № 6646) on :
 
Nicо, а как будет верно написать. Подскажите пожалуйста.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
В каждом из условных операторов 3 ошибки:
- компонент "выражение" не закрывается разделителем ";",
- переменная должна обозначаться только своим именем (не ВВ_включен_C : BOOL, а ВВ_включен_C),
- для переменных типа BOOL проверка значения в условном операторе имеет только 2 возможных варианта
if !ВВ_включен_C then ....;
else ...; end_if;
или
if ВВ_включен_C then ....;
else ...; end_if;

У нас нет возможности искать синтаксические ошибки в программах.
Надеемся на понимание.

Топик закрывается.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2