Droshnev
Forum Member / Участник форума
Участник № / Member № 132
отправлено / posted
Возникла странная ситуация.
Есть три алгоритма: Запуск насоса, стоп насоса, вывод насоса в ремонт. Мы реализовали эти алгоритмы с помощью FBD-программ, прописанных в процедуре управления. FBD-программы состоят из стандартных FBD-блоков и из FBD-блоков написанных нами на Техно-IL.
Странность ситуации в том, что алгоритмы "Запуск насоса" и "вывод насоса в ремонт" работают без нареканий, а вот алгоритм "Стоп насоса", составленный из тех же функциональных блоков работает не адекватно В режиме эмуляции в РБК все ОК, с выхода 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-и насосам . А если этот выход привязать к любому другому каналу напр. 33B2.СТ.OUT, то все ОК.
Релиз ТМ 5.11, В 5.12 СИТУАЦИЯ НЕ ИЗМЕНИЛАСЬ.
Высылаем Вам проект, эти каналы находятся на узле Node1.. На экране "Странно", алгоритм STOP_NS, запускается по кнопке "авт СТОП"
отправлено / posted
Мы проанализировали присланный Вами проект. В указанный Вами канал 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. Согласно нашей документации в имени канала не рекомендуется использовать символы математических операций, спецсимволы, знаки препинания и пробелы. Вы эту рекомендацию нарушаете.
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Droshnev
Forum Member / Участник форума
Участник № / Member № 132
отправлено / posted
>В указанный Вами канал 33B2.ЗК_OUT сигналы передаются от FBD, вызываемых двумя каналами - STOP_NS3 и REM_NS3. Первый канал пытается передать туда "1", а второй - "0". Поэтому означенная Вами функция "Стоп насоса" не работает. >Вам надо каким-то образом разрешить этот конфликт на уровне Вашей программы.
Подскажите, каким образом на уровне системы мы можем разрешить этот конфликт? Повторюсь у нас на каждый насос должно быть 3 алгоритма, в двух из них (STOP_NSx и REM_NSx) используется один и тот же канал 3xB2.ЗК_OUT, а всего 10 насосов.
Как бы Вы решили данную задачу?
> В Ваших программах Вы чрезмерно увлекаетесь IL-блоками. Многие из реализуемых ими функций относительно просто решаются с помощью FBD.
Да, они реализуются, но целиком алгоритм в FBD блоках получается очень громоздким и не наглядным.Вносить в него какие-то поправки очень не удобно. Обидно, что в редакторе FBD нет возможности копировать FBD-блоки, группировать их.
Сообщения / Posts 60 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Я не случайно предложил Вам решать этот конфликт на уровне Вашей программы, т.к. в системе такая ситуация не блокируется. Предполагается, что в каких-то пользовательских программах такое решение может оказаться предпочтительным. С моей точки зрения, наиболее эффективное решение состоит в том, чтобы реализованный алгоритм управления насосом всегда выдавал только одну команду. Полагаю, что для такого решения у Вас есть основания: ведь в каждый момент времени для определенного насоса реализуется только один из трех алгоритмов? Можно было бы создать одну комплексную функцию, которая, в зависимости от ситуации, реализовывала бы нужный алгоритм. Кстати, аналогичные проблемы у Вас могут быть при передаче "сообщений" из алгоритмов.
Если для Вас такое решение затруднительно, то, по крайней мере, управляя входами RUN FB, которые выдают сигналы управления и коды сообщений и шага в каждом алгоритме, можно обеспечить отсутствие конфликтов.
Что касается наглядности и расширения сервисных функций в языках программирования, то мы планируем в версии Трейс Моуд 6 принципиальные шаги в этом направлении.
Сообщения / Posts 17315 | Из / From: Россия
| IP / IP: IP адрес / IP address |