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


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

Posted by Droshnev (Участник № / Member № 132) on :
 
Возникла странная ситуация.

Есть три алгоритма: Запуск насоса, стоп насоса, вывод насоса в ремонт.
Мы реализовали эти алгоритмы с помощью FBD-программ, прописанных в процедуре управления.
FBD-программы состоят из стандартных FBD-блоков и из FBD-блоков написанных нами на Техно-IL.

Странность ситуации в том, что алгоритмы "Запуск насоса" и "вывод насоса в ремонт" работают без нареканий, а вот алгоритм "Стоп насоса",
составленный из тех же функциональных блоков работает не адекватно [Неодобрение / Frown] В режиме эмуляции в РБК все ОК, с выхода Q1 блока 4:14 "Zapusk" идет единичка при наличии единички
на входе I1. В базе каналов этот выход(через блоки 9:10 и 10:11) привязан к каналу "33B2.ЗК.OUT". Эта единичка
держится там до прихода единички на вход I2 этого же блока. , Если в течении 15секунд на входе I2 Единичка не появляется,
то блок выводит на выход Q2 - единичку(код сообщения) и прекращает работу.
Повторюсь в режиме эмуляции в РБК все именно так и происходит,
Причем этот же блок, в алгоритме Zap_NS работает идеально как в эмуляции РБК, так и в РПД.
А вот в РПД блок 4:14 из алгоритма STOP_NS работает так: на выходе Q1 - единичка не появляется, если этот выход через
блоки 9:10 и 10:11 привязан к каналу "33B2.ЗК.OUT"(даже если он привязан непосредственно напрямую к каналу - ситуация не меняется)
И так по всем 6-и насосам [Неодобрение / Frown] . А если этот выход привязать к любому другому каналу напр. 33B2.СТ.OUT, то все ОК.

Релиз ТМ 5.11, В 5.12 СИТУАЦИЯ НЕ ИЗМЕНИЛАСЬ.

Высылаем Вам проект, эти каналы находятся на узле Node1.. На экране "Странно", алгоритм STOP_NS, запускается по кнопке
"авт СТОП"

Ждем Ваших комментариев.
Файл "Algoritm.zip" выслан Вам на forum@adastra.ru
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Мы проанализировали присланный Вами проект.
В указанный Вами канал 33B2.ЗК_OUT сигналы передаются от FBD, вызываемых двумя каналами - STOP_NS3 и REM_NS3. Первый канал пытается передать туда "1", а второй - "0". Поэтому означенная Вами функция "Стоп насоса" не работает. Вам надо каким-то образом разрешить этот конфликт на уровне Вашей программы.

Попутно хочу дать Вам некоторые рекомендации.

1. Для анализа и диагностики таких ситуаций удобно пользоваться механизмом объектов. Я создал в базе каналов объект, "Зависящий от канала 33B2.ЗК_OUT". Этот объект собрал все каналы, которые в своих FBD имеют ссылки на атрибуты канала 33B2.ЗК_OUT. В объекте обказались каналы STOP_NS3 и REM_NS3. Когда я в реальном времени изменил СОСТОЯНИЕ канала REM_NS3 на "1" (выключил его), алгоритм "Стоп насоса" стал передавать "1" в канал 33B2.ЗК_OUT.

2. В Ваших программах Вы чрезмерно увлекаетесь IL-блоками. Многие из реализуемых ими функций относительно просто решаются с помощью FBD. Язык Техно-IL реализуется с повышенными по сравнению с FBD ресурсами.

3. Согласно нашей документации в имени канала не рекомендуется использовать символы математических операций, спецсимволы, знаки препинания и пробелы. Вы эту рекомендацию нарушаете.
 
Posted by Droshnev (Участник № / Member № 132) on :
 
>В указанный Вами канал 33B2.ЗК_OUT сигналы передаются от FBD, вызываемых двумя каналами - STOP_NS3 и REM_NS3. Первый канал пытается передать туда "1", а второй - "0". Поэтому означенная Вами функция "Стоп насоса" не работает.
>Вам надо каким-то образом разрешить этот конфликт на уровне Вашей программы.

Подскажите, каким образом на уровне системы мы можем разрешить этот конфликт?
Повторюсь у нас на каждый насос должно быть 3 алгоритма, в двух из них (STOP_NSx и REM_NSx) используется один и тот же канал 3xB2.ЗК_OUT, а всего 10 насосов.

Как бы Вы решили данную задачу?

> В Ваших программах Вы чрезмерно увлекаетесь IL-блоками. Многие из реализуемых ими функций относительно просто решаются с помощью FBD.

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

Если для Вас такое решение затруднительно, то, по крайней мере, управляя входами RUN FB, которые выдают сигналы управления и коды сообщений и шага в каждом алгоритме, можно обеспечить отсутствие конфликтов.

Что касается наглядности и расширения сервисных функций в языках программирования, то мы планируем в версии Трейс Моуд 6 принципиальные шаги в этом направлении.
 


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



Powered by Infopop Corporation
UBB.classic™ 6.7.2