This is topic Управление дискретными выходами in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.


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

Posted by VVA80 (Участник № / Member № 5358) on :
 
Здравствуйте!
Подскажите пожалуйста как в канале HEX32 привязанному к дискретным выходам управлять битами. Необходимо установить определенный бит в 1 и через 5 секунд сбросить в ноль.
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
VVA80,
Скорее всего Вам придется написать программу на ST или при помощи инструментария FBD диаграмм...
 
Posted by VVA80 (Участник № / Member № 5358) on :
 
Вот я и хочу пример такой программы.
Я в своей создал два аргумента: входной привязанный к реальному значению канала и выходной привязанный к входному. Программа на FBD, использованы FBD-блоки установки и сброса бита, перед сбросом я делаю паузу при помощи блока "Задержки на включение". Но при вызове программы включение бита и соответственно его последующего выключения не происходит.
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Если я правильно Вас понял, то требуется управление отдельными битами...
Следовательно, аргументы требуется создавать с привязкой к конкретным битам.
Подозреваю также, что проще использовать Техно-ST, но это уже вопрос кому что удобнее...
 
Posted by Nico (Участник № / Member № 5342) on :
 
Если можно принебречь задержками передачи данных
в контроллер то проще использовать канал
CALL.BitsFromLong c параметром 8 или 9
 
Posted by VVA80 (Участник № / Member № 5358) on :
 
При использовании FBD-блоков установки и сброса бита привязка к конкретным битам не требуется.

Я хочу понять можно ли в теле одной программы включить бит в модуле дискретных выходов 8041 на контроллере WinPac 8841 и сбросить его спустя допустим 5 или 10 секунд. Или надо написать две программы и вызывать их по очереди?
 
Posted by Abram Shnider (Участник № / Member № 4534) on :
 
Можно. Дело в том, что программы в TM отрабатывают каждый цикл. Надо просто организовать проверку временного интервала. Например на ST:
if (dT > 10)
then
bit = 0;
end_if;
 
Posted by VVA80 (Участник № / Member № 5358) on :
 
Очень бы хотелось чтобы техподдержка сбросила на почту пример решения данной задачи. Если не сложно конечно. Заранее большое спасибо.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Не ясно что вызывает затруднение.

Реализовать задержку в ST можно, используя время получаемое из системной переменной @Set_date. В FBD задержку можно сформировать с помощью, например, тригера.

Можно вообще обойтись без программы и воспользоваться каналом CALL.BitsFromLong.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2