PDA

Просмотр полной версии : Непонятное поведение ПР



Sergh_Cherenkov
20.06.2011, 14:13
Сделал небольшой проект, проверяю и не могу разобраться как так??? Есть 4 входных канала и 4 выходных. При подаче импульса на любой вход, соответствующий выход включается. При следующем импульсе с любого входа, если хоть один из выходов включен, то все выходы должны отключиться. Ну так вот. Смотрю в эмуляторе вход 1 - работает все ОК, смотрю вход2,3,4 - НЕ РАБОТАЕТ, хотя все каналы абсолютно симметричны. Включаю шаговый режим, и вижу, что бывают моменты, когда на одном конце проводника Лог.1, а на другом конце - Лог.0. Например, переменная res. Прошил ПР, думал глюк в эмуляторе. Не помогло. ПР также как и эмулятор работает правильно только с одним каналом. Подскажите, от чего зависит ФИШКА? Где я ошибаюсь?

AI!
20.06.2011, 18:07
"линия перемен дат" проходит не там где вы ожидаете...

(в циклических "программах" всегда будет связь, которая будет передаваться не сразу, а при следующем цикле)

rovki
20.06.2011, 18:11
вся причина в "Гонках" ,вы очень не аккуратно используете f -r триггера да еще в сочетании с Д-триггером ,у вас на Д-вход приходит короткий импульс и на вход С одновременно.Долго обьяснять ,проше нарисовать ,просто некоторые триггера обрабатываются в одном цикле ,а другие в разных циклах.Поставьте задачу ,попробуем другим(надежным способом ) реализовать

AI!
20.06.2011, 18:31
можно сделать, например, так.в версии 1.3.22b не онкрывается :(

Sergh_Cherenkov
20.06.2011, 18:41
вся причина в "Гонках" ,вы очень не аккуратно используете f -r триггера да еще в сочетании с Д-триггером ,у вас на Д-вход приходит короткий импульс и на вход С одновременно.Долго обьяснять ,проше нарисовать ,просто некоторые триггера обрабатываются в одном цикле ,а другие в разных циклах.Поставьте задачу ,попробуем другим(надежным способом ) реализовать

Ок, с этим соглашусь, но не понятно, почему существует ситуация, когда на выходе с элемента Лог.1, соединяю этот элемент с входами 4х других элементов и получаю на входе одного лог.1 (как и должно быть), а на 3-х остальных входах Лог.0. Почему в конце одного цикла переменные на одном и том же соединении (проводе) имеют разные значения???
То, что триггеры могут обрабатываться в разных циклах, слышал и сталкивался. Но тут абсолютно одинаковые 4 канала, 1 - работает, 3 - нет. Жалко пример не открыть от разработчика. Кстати, убрал вообще все f-r триггеры, ситуация та-же.

rovki
20.06.2011, 18:52
потому что в разных циклах обработка идет сигналов на входах Д-триггера,и когда пытался сделать синхронный регистр сдвига на них не чего не получается ,так как в элементах ПР нет задержек ,точнее они могут появится если будут отрабатываться в разных циклах ПР ,но это не угадаещь ,поэтому нужна другая схемотехника.

Sergh_Cherenkov
20.06.2011, 19:03
Вот сделал скриншот, четко видно, что res в конце одного цикла имеет разные значения. Если использовать просто соединения, без превличения переменной, то результат тот-же.

rovki
20.06.2011, 19:18
Примерно то же самое неоднократно наблюдали -на одном конце провода 0,на другом 1.Это особенности программной реализации. К этому нужно привыкнуть и использовать другой подход к схемотехнике.Нужно делать схемы без гонок ,тем более в обратных связях.Вот как можно на Д-триггерах

Sergh_Cherenkov
20.06.2011, 19:21
Примерно то же самое неоднократно наблюдали -на одном конце провода 0,на другом 1.Это особенности программной реализации. К этому нужно привыкнуть и использовать другой подход к схемотехнике.

Ок, смирился. Как подправить? Может есть тонкость? Как заставить считать это в одном цикле? И что это за "другой подход к схемотехнике"? Подскажите, пожалуйста!

rovki
20.06.2011, 19:27
Ок, смирился. Как подправить? Может есть тонкость? Как заставить считать это в одном цикле? И что это за "другой подход к схемотехнике"? Подскажите, пожалуйста!
У вас например при сбросе входного сигнала на выходе макроса формируется импульс ,по которому ,по первому -устанавливается выход в единицу ,а при втором (заднем фронте входного импулльса) сбрасывается ,так это не что иное как Т-триггер (счетный ), которые реализованы в примерах ,что выше.Один вариант T-триггера от AT,другой классический на Д-триггере.На примерах не зазорно учится ,дайте ТЗ ,сделаю по своему ,может чего почерпнете

rovki
20.06.2011, 19:30
в версии 1.3.22b не онкрывается :(

Мало того ,проект закрывается только аварийно ,через менеджер задач.

Евгений Сергеевич
21.06.2011, 12:52
исправил)
написал по ошибке в тестовой версии программы, извиняюсь.

Sergh_Cherenkov
21.06.2011, 14:26
Спасибо всем за содействие. Действительно, добавив таймеры с задержкой включения всё решилось. Кривовастенько, но работает же!!!

rovki
21.06.2011, 15:09
Спасибо всем за содействие. Действительно, добавив таймеры с задержкой включения всё решилось. Кривовастенько, но работает же!!!
Решилось да не все ,канал 1 работает не так как каналы 2-4,они устанавливаются и сбрасываются сами при каждом заднем фронте вх.импульса .;) :confused:
приведенные приметы на Т-триггерах ,работают без проблем

Евгений Сергеевич
21.06.2011, 16:04
To rovki
если вы проверяли только в симуляторе, то время цикла надо поставить не по умолчанию которое и равно 10, а скажем 5))

Sergh_Cherenkov
21.06.2011, 16:28
Решилось да не все ,канал 1 работает не так как каналы 2-4,они устанавливаются и сбрасываются сами при каждом заднем фронте вх.импульса .;) :confused:
приведенные приметы на Т-триггерах ,работают без проблем
Ну дак это понятно, в симуляторе надо время выставить так, чтобы оно было равно хотя-бы половине времени таймеров, тогда все пашет. Пример Евгения подсказал как бороться с неравномерностью. А приведенный пример на T-тригг. не сбрасывает сразу все выходы. Т.к. это только начало проекта, то вообщем-то оба примера мне не подойдут, но зато, как я сказал, свет стал намного ближе в конце туннеля! Спасибо.

rovki
21.06.2011, 17:28
To rovki
если вы проверяли только в симуляторе, то время цикла надо поставить не по умолчанию которое и равно 10, а скажем 5))
А вот это уже плохо ,что работоспособность схемы зависит от установленных времен цикла и периода в режиме симулятора.Это должно быть на автомате ,если симулятору нужно большее(меньшее ) время пусть об этом скажет или изменит сам.

rovki
21.06.2011, 17:31
Т-триггер на Д-триггере позволяет устанавливать его в любое положение по R_S входам,но вам виднее ,потому как только вам известно что нужно получить.
Вообще в полученной схеме ,вырванной из контекста нет смысла ,потому как данную функцию реализуют Ф-триггера:)

Евстигнеев Максим
21.06.2011, 17:58
А вот это уже плохо ,что работоспособность схемы зависит от установленных времен цикла и периода в режиме симулятора.Это должно быть на автомате ,если симулятору нужно большее(меньшее ) время пусть об этом скажет или изменит сам.

Мы думали над этим.
Но, к сожлению, тут нельзя сделать автоматически. Так как времена могут приходить в программу "извне". Или, например, являться результатом вычислений. Симулятор наперед не может предугадать.

rovki
21.06.2011, 19:38
тогда по умолчанию должно ставится минимальное время .Потом каждый раз проверять получаемые значения времени и сравнивать с временем цикла и если пользователь закажет время цикла больше этого значения симулятор ругнется и оставит все как есть,что сейчас и есть ,но для фиксированных уставок времени.Хотя Вам виднее ,но эту ФИЧУ нужно красным цветом прописать в документации ,если сделать нечего невозможно.

rovki
21.06.2011, 19:45
И еще ,не по теме ,очень часто вылетает овен лоджик ,просит прошение за причененные неудобства ,потерянные данные ,кнопка отладка в этом окне не работает.Седел час работал и все коту под хвост ,

Евстигнеев Максим
21.06.2011, 20:53
И еще ,не по теме ,очень часто вылетает овен лоджик ,просит прошение за причененные неудобства ,потерянные данные ,кнопка отладка в этом окне не работает.Седел час работал и все коту под хвост ,

Нужен лог ошибки

AI!
21.06.2011, 23:25
тож решил себя попробовать в "4х-каналке" ;)

rovki
21.06.2011, 23:45
Нужен лог ошибки.Это в другом проекте ,но суть та же:(

wal79
22.06.2011, 12:31
.Это в другом проекте ,но суть та же:(

Нужны подробности... Хоть какие-нибудь... Что и как делали? Как пришли к этому?

rovki
22.06.2011, 13:25
когда рисую проект ,по моему нажимаю левой кнопкой мыши и перетаскиваю выделенное или просто смешаю курсив ....Уже с 10 раз такое было.Постараюсь поточней понаблюдать .Но точно не в режиме симуляции.

rovki
25.06.2011, 13:38
С Вас wal79 ,бутылка :)(исправленная версия) ,нашел ошибку в овен лоджик ,точнее определил когда она возникает на 100%
Это касается блока записи в ФБ .Если в основной программе или макросе ,после входа в режим симулятора и выхода из него попытаться передвинуть это блок -получите это сообщение :eek:

wal79
27.06.2011, 10:49
С Вас wal79 ,бутылка :)(исправленная версия) ,нашел ошибку в овен лоджик ,точнее определил когда она возникает на 100%
Это касается блока записи в ФБ .Если в основной программе или макросе ,после входа в режим симулятора и выхода из него попытаться передвинуть это блок -получите это сообщение :eek:

Спасибо за исследование ошибки! Что ж, бутылка так бутылка! ;)
Буду смотреть из-за чего вылетает... К сожалению, тестирование проги - это отдельная песня у нас... Поэтому выношу официальную благодарность Вам! :)

wal79
27.06.2011, 11:55
Спасибо rovki за обнаруженную ошибку еще раз. Баг исправлен... Это касалось как оказалось не только блока WriteToFB, а также TP и других, у кого в симуляторе показывалось состояние внутренних переменных блока.

rovki
27.06.2011, 14:43
Качнуть бы новинку,а то и гляди в спешке опять будет вылетать у меня .,а времени нет заново набирать .:)

wal79
28.06.2011, 09:53
Качнуть бы новинку,а то и гляди в спешке опять будет вылетать у меня .,а времени нет заново набирать .:)

С удовольствием бы дал новую версию, но она будет требовать перепрошивки прибора, так как заложен функционал для работы с сетевыми переменными, который требует аппаратной поддержки. К сожалению, сама прошивка для прибора на данный момент не готова еще. Как только она будет готова, так сразу новый OWEN Logic будет выложен на сайт.
В новой версии ,как уже было сказано выше, появится новый тип переменных - сетевые, с помощью которых появится доступ к схеме извне. Также были обнаружены и исправлены парочка багов:
1) баг, обнаруженный rovki насчет попытки переместить элемент на схеме;
2) прога вылетала при установке связи между элементами при определенных условиях.