Серёга Букашкин спасибо, поэксперементирую с этим, может быть полезным, а то у меня есть датчики с 0-5мА
Вопрос разработчикам ОЛ.
Вот пример программы, которая в данной комбинации ведет себя абсолютно неадекватно как в симуляции так и в реальном ПР.
Если убрать SEL на выходных сигналах макроса, которые служат просто для фиксации значений между расчетами, и на переменные подать непосредственно с макроса, то все нормализуется.
При этом даже в данном примере, если запустить исполнения макроса в редакторе тоже все работает корректно.
Можете прокомментировать как элементы на выходе могут влиять на работу макроса ?
Может у Вас блок записи в функциональный блок стоит, у меня с ним "непонятки" встречались, подсказали надо как-то синхронизировать запись в функциональный блок, а как так никто толком не сказал!
Вот ссылка, пост#2429: http://www.owen.ru/forum/showthread.php?t=9398&page=243
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Глюки наблюдаются и без записи в функциональный блок.
Я ранее выкладывал переделку макроса наработки, в котором применил макрос AI! SelChange, в котором есть обратные связи, так вот при интеграции 1 или 2 макросов все в норме, устанавливаешь 3-й и все крашится и сходит с ума.
Сделал обратные связи через 2 блока ИЛИ и работа восстанавливается.
И в этом примере, если с выхода макроса на SEL подать обратные связи, то все начинает работать.
У меня такое подозрение, что при каких-то комбинациях и в определенных случая происходит сбой стека в программе.
Скорее всего собака там же порыта, где и некорректно работающие обратные связи...
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
ну, неадекватное поведение обратных связей еще AI! заметил при пошаговой отладке..
Владимир Ситников вам в картинках или на словах поймете ?
точка 1, от нее 2 линии, простая и обратная на точки 2 и 3
При пошаговом исполнении на точке 1 логическая 1, на точке 2 и 3 - 0, следующий шаг, на точке 2 и 3 - 1 (а должно быть 1 и 0) и только на следующем шаге на 3 точке должна стать лог.1
Прямо на проекте из двух связей воспроизводится?
У меня ОЛ эти две связи отрабатывает верно:
Снимок экрана 2016-10-20 в 22.50.31.png
Снимок экрана 2016-10-20 в 22.50.41.png
Снимок экрана 2016-10-20 в 22.50.45.png
Снимок экрана 2016-10-20 в 22.51.24.png
Если у вас на более сложном проекте, то, возможно, у вас просто есть цикл из "не обратных" связей, и ОЛ просто превратило какую-то "простую" связь в обратную (ну а как иначе ему вычислить значение вашего проекта, если там цикл?)
Иными словами, эффект "обратная и простая связь, исходящие из одной точки меняются одновременно" вполне может возникать, если "простая" по факту была превращена в обратную из-за наличия цикла связей.
Да не важно, есть циклы, нет циклов. Не важно какая сложность, но 2 выхода из одного источника прямой и обратный (следующий цикл) ВСЕГДА должны отличаться.
я уже писал выше, что сам по себе макрос SelChange работает правильно, интегрируем его в другой макрос 1 раз - работа сохраняется, 2 раз - работа сохраняется, 3 раз - все начинает ломаться и куролесить...
В том то и прикол, что одна обратная связь обычно не портит проект, а несколько и в разных местах может все сломать.
Да и посмотрите пример с макросом SortAlDown который тут выложил, где после макроса стоят SEL и посмотрите результат в симуляции (в реальном ПР тоже не работает). Я поэтому и спрашиваю разработчиков, каким образом обычный библиотечный элемент SEL, установленный ПОСЛЕ макроса ломает его работу ?
Ведь там на вид нет ничего военного с синхронизацией и т.д. При этом без SEL или если на эти SEL подать обратные связи вместо прямых выходов, а так же если использовать промежуточные переменные (то есть с выхода макроса поставить запись в переменную, тут же поставить эту переменную и завести на SEL а из SEL закинуть в другую переменную) то все начинает работать.
При редактировании макроса и эмуляции его работы не происходит никаких катаклизмов.
Вот хоть бейте меня, так как я не программер такого уровня, хотя что-то простоя на C# могу накидать, но у меня ощущение, что при использовании обратных связей, когда их несколько они начинают накладываться одна на другую где-то в стеке или как их там разруливают...
Последний раз редактировалось melky; 21.10.2016 в 09:00.