tressi
Junior Member / Новичок
Участник № / Member № 4058
отправлено / posted
Подскажите, пожалуйста, как сделать так чтобы FBD программа запускалась только после нажатия кнопки, а не сразу же с запуском проекта. Какой должен бать тип и подтип канала, и какие атрибуты кнопки? Проект разрабатывается в ТрейсМоуд 5.
Сообщения / Posts 3 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Trace Mode 5 больше не поддерживается. Переход от версии 5 к версии 6 займет у Вас не так много времени, а пользы от этого будет намного больше.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
SergeyZ86
Junior Member / Новичок
Участник № / Member № 5575
отправлено / posted
Добрый день! У меня аналогичная проблема, только проект разрабатывается как раз в ТрейсМоуд 6. Я поступил следующим образом. Написал простенькую программу на FBD в шаблоне программ. Создал в узле канал класса CALL, вызывающий программу. При запуске профайлера все работает отлично. Затем я меняю тип канала, вызывающего программу на Output. Открываю свойства кнопки, и во вкладке "События" задаю на нее функцию "Выполнить", где указываю канал, вызывающий программу. После этого программа перестает запускаться. Подскажите пожалуйста, в чем может быть проблема?
Сообщения / Posts 9 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
В настоящее время функция “Выполнить” в ГЭ отключена. Для запуска программы с типом канала вызова OUT надо на экране создать аргумент, привязанный к атрибуту EXEC (39) канала вызова программы, а из ГЭ передавать в этот аргумент “1”.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
SergeyZ86
Junior Member / Новичок
Участник № / Member № 5575
отправлено / posted
Здравствуйте! Воспользовался вашим советом, происходит следующее. При записи "1" в аргумент (типа BOOL), привязанный к атрибуту EXEC(39), программа выполняется однократно, завершается и значение аргумента сбрасывается в "0" (при последующем нажатии кнопки все повторяется). Мне же нужно, чтобы: 1) программа выполнялась циклически, так как если бы она вызывалась стандартно каналом класса CALL типа Input; 2) завершалась только по нажатию другой кнопки. Пункт №2 я предполагаю реализовать с помощью FBD блока "Exit". Подскажите пожалуйста, как реализовать пункт №1. Заранее благодарю.
Сообщения / Posts 9 | Из / From: Россия
| IP / IP: IP адрес / IP address |
stepagrus
Forum Haunter / Завсегдатай форума
Участник № / Member № 3589
отправлено / posted
это же просто... нужно немного почитать справку и потренироваться с атрибутами канала.
1) выключить канал, который вызывает программу (в редакторе)
после запуска МРВ: 2)нужно включить программу - в атрибут 003 канала вызывающего программу отправляете 0 - канал включается и прога работает
SergeyZ86
Junior Member / Новичок
Участник № / Member № 5575
отправлено / posted
Спасибо stepan! Хотелось бы еще кое-что уточнить. Допустим, программа состоит из одного генератора синусоидального сигнала, значение этого сигнала выводится на ГЭ Тренд. При записи "1" в атрибут 003, программа выключается, но при этом продолжается расчет сигнала. При последующем включении программы она стартует ни с того значения, на котором была остановлена, а собственно с расчитанного на данный момент времени. Пытался запретить пересчет канала посылкой "0" в атрибут 123, не получилось. Подскажите пожалуйста, куда копать. Еще лучше было бы научиться запускать программу заново (с нуля). Заранее благодарю.
Сообщения / Posts 9 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Nico
Forum Professor / Завсегдатай форума
Участник № / Member № 5342
отправлено / posted
FBD "Генератор Sin" имеет в качестве аргумента время в секундах. Поэтому он не учитывает промежутки времени, в течение которых программа была выключена. Начальные условия каждого запуска программы должны быть заданы в самой программе.
Сообщения / Posts 17329 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Yury
Junior Member / Новичок
Участник № / Member № 6151
отправлено / posted
Здравствуйте! Немного не по теме, но все же. Имеется две программы на FBD. Мне нужно связать их через один аргумент например BOOL. Т.е. чтобы, если я в одной из программ придавал этому аргументу значение 1, то и в другой программе тоже автоматически этот аргумент принимал значение 1. Возможно ли это сделать? Версия софта 6.06.
Сообщения / Posts 8 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
Ilgeneer
Forum Member / Участник форума
Участник № / Member № 5896
отправлено / posted
Yury , Если не ошибаюсь, то в одной программе его делать out, а в другой программе in и привязать его на аут первой.
Сообщения / Posts 51 | Из / From: Россия
| IP / IP: IP адрес / IP address |
если Вам необходимо, что бы у двух разных программ аргументы принимали одно и тоже значение, то проще всего привязать эти аргументы к одному общему источнику.
traffick
Junior Member / Новичок
Участник № / Member № 6646
отправлено / posted
Nicо, а как будет верно написать. Подскажите пожалуйста.
Сообщения / Posts 16 | Из / From: Российская Федерация
| IP / IP: IP адрес / IP address |
отправлено / posted
В каждом из условных операторов 3 ошибки: - компонент "выражение" не закрывается разделителем ";", - переменная должна обозначаться только своим именем (не ВВ_включен_C : BOOL, а ВВ_включен_C), - для переменных типа BOOL проверка значения в условном операторе имеет только 2 возможных варианта if !ВВ_включен_C then ....; else ...; end_if; или if ВВ_включен_C then ....; else ...; end_if;
У нас нет возможности искать синтаксические ошибки в программах. Надеемся на понимание.