Показано с 1 по 10 из 164

Тема: Тренироваться на кошечках

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,150

    По умолчанию

    В данном макросе(способе) есть 7 шагов (интервалов) во времени(произвольной длины) .Шаг -любое последовательное во времени событие (переход из "0 в "1") ,в соответствии которого ставится любая комбинация на выходе макроса ,путем записи констант во внутреннее ПЗУ макроса .Он рассчитан для работы в циклических алгоритмах .
    Следующим будет макрос ,позволяющий увеличивать количество событий (шагов) .
    Последний раз редактировалось rovki; 05.08.2014 в 05:59.
    электронщик до мозга костей и не только

  2. #2
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Следующим будет макрос ,позволяющий увеличивать количество событий (шагов) .
    Я как раз проснулся с тоскливым обдумыванием ограниченности количества входов-выходов в макросах этой вашей хваленой ОВ
    И решил, что есть такие пути:
    1) максимально прятать внутрь те части схемы, в которых "позиционный код". Возможно, проводить границу разделения макросов по целочисленным аргументам. Ну, например, текущую фазу из макроса, где она создается и модифицируется, выносить для других макросов в виде числа. А в тех макросах, где она юзается, разворачивать число в позиционный код. Например, ставить блоки EQ и получать все интересующие нас значения в виде булевых переменных (равно или не равно, скажем, 5)
    2) наращивать макросы в макросах (это то, что Вы собираетесь делать?)

    Мне еще надо время понять полеты Вашей мысли, я так быстро не умею. Но наперед закину вот что: наш сиквенсер (степпер, фазовый управитель, как его назвать?) должен иметь такие параметры:

    1) Реагирование не только на события, но и на постоянно существующие условия. Это значит, вот что. Допустим, в фазе 5 анализируется некое "событие". Так вот, нужно реагировать на это "событие" не только в случае, когда оно происходит (условие начинает выполняться) непосредственно в фазе 5. Нужно также реагировать на это событие, если оно произошло еще до наступления фазы 5.
    Пример: вместо сигнала "Разрешение разгрузки" я ставлю перемычку. И хочу, чтобы в нужной фазе ПР увидел эту перемычку и пошел дальше "мгновенно", пусть там и прощелкает несколько циклов работы контроллера. Если же перемычки не будет, то ПР постоит в фазе ожидания разрешения разгрузки и по получению "события" пойдет дальше.
    Я для реализации такого поведения наставил кучу таймеров по 0,2 с - это ужасное решение

    2) "Произвольный условный переход"
    В любой фазе мы можем принять решение о переходе не к следующей фазе, а к какой-то иной. Теоретически, можно требовать, чтобы из любой фазы при некоторых условиях можно было улетать на любую другую. Но практически это громоздко и трудно. Поэтому я бы рассмотрел чуть менее универсальное умение: в каждой фазе есть одно условие "нормального" выхода (к следующей фазе) и одно условие выхода к произвольной фазе. Скажем, у нас есть сигнал "Днище закрыто". Его исчезновение в некоторых фазах должно вызывать отработку аварийной ситуации. Сейчас я тупо сбрасываю счетчик фаз. И в состоянии INIT должен побеспокоиться о сбросе всего что нужно и переходе или не переходе в фазу BottomWait. А можно было бы зарезервировать некую фазу 8, предназначенную для отработки аварии "Днище упало во время подачи или ожидания фиксации результата дозирования". И именно туда направлять степпер (теперь уже джампер?) в случае такой аварии. Тогда в системе есть место и для других аварий - заведу фазу 9 для аварии "Слишком долго идет насыпка", фазу 10 для аварии "Не могу дождаться разргрузки" и т.д....
    Одним словом, добавить условный переход, как в обычных программах, есличьо...

    3) Конечно же, хотелось бы иметь масштабируемый степпер, чтобы фаз могло быть больше, чем 8. Мне просто повезло с моим первым проектом, но расширяться уже некуда. А может понадобиться.

    Я не слишком размечтался?

  3. #3
    Пользователь Аватар для maximov2009
    Регистрация
    11.09.2012
    Адрес
    Барнаул Алтайский край
    Сообщений
    2,465

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение

    Мне еще надо время понять полеты Вашей мысли, наш сиквенсер (степпер, фазовый управитель, как его назвать?) должен иметь такие параметры:

    Я не слишком размечтался?
    Как в книжке "12 стульев" "И тут Остапа понесло.
    По моему вы хотите решить две взаимоисключающие задачи пошаговое управление или свободно реагирующее на ситуацию.
    Лучшее - враг хорошего "Le mieux est I\'ennemi du bien" (вроде как Вольтеровское)

  4. #4
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,150

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Я как раз проснулся с тоскливым обдумыванием ограниченности количества входов-выходов в макросах этой вашей хваленой ОВ
    И решил, что есть такие пути:
    1) максимально прятать внутрь те части схемы, в которых "позиционный код". Возможно, проводить границу разделения макросов по целочисленным аргументам. Ну, например, текущую фазу из макроса, где она создается и модифицируется, выносить для других макросов в виде числа. А в тех макросах, где она юзается, разворачивать число в позиционный код. Например, ставить блоки EQ и получать все интересующие нас значения в виде булевых переменных (равно или не равно, скажем, 5)
    2) наращивать макросы в макросах (это то, что Вы собираетесь делать?)

    Мне еще надо время понять полеты Вашей мысли, я так быстро не умею. Но наперед закину вот что: наш сиквенсер (степпер, фазовый управитель, как его назвать?) должен иметь такие параметры:

    1) Реагирование не только на события, но и на постоянно существующие условия. Это значит, вот что. Допустим, в фазе 5 анализируется некое "событие". Так вот, нужно реагировать на это "событие" не только в случае, когда оно происходит (условие начинает выполняться) непосредственно в фазе 5. Нужно также реагировать на это событие, если оно произошло еще до наступления фазы 5.
    Пример: вместо сигнала "Разрешение разгрузки" я ставлю перемычку. И хочу, чтобы в нужной фазе ПР увидел эту перемычку и пошел дальше "мгновенно", пусть там и прощелкает несколько циклов работы контроллера. Если же перемычки не будет, то ПР постоит в фазе ожидания разрешения разгрузки и по получению "события" пойдет дальше.
    Я для реализации такого поведения наставил кучу таймеров по 0,2 с - это ужасное решение

    2) "Произвольный условный переход"
    В любой фазе мы можем принять решение о переходе не к следующей фазе, а к какой-то иной. Теоретически, можно требовать, чтобы из любой фазы при некоторых условиях можно было улетать на любую другую. Но практически это громоздко и трудно. Поэтому я бы рассмотрел чуть менее универсальное умение: в каждой фазе есть одно условие "нормального" выхода (к следующей фазе) и одно условие выхода к произвольной фазе. Скажем, у нас есть сигнал "Днище закрыто". Его исчезновение в некоторых фазах должно вызывать отработку аварийной ситуации. Сейчас я тупо сбрасываю счетчик фаз. И в состоянии INIT должен побеспокоиться о сбросе всего что нужно и переходе или не переходе в фазу BottomWait. А можно было бы зарезервировать некую фазу 8, предназначенную для отработки аварии "Днище упало во время подачи или ожидания фиксации результата дозирования". И именно туда направлять степпер (теперь уже джампер?) в случае такой аварии. Тогда в системе есть место и для других аварий - заведу фазу 9 для аварии "Слишком долго идет насыпка", фазу 10 для аварии "Не могу дождаться разргрузки" и т.д....
    Одним словом, добавить условный переход, как в обычных программах, есличьо...

    3) Конечно же, хотелось бы иметь масштабируемый степпер, чтобы фаз могло быть больше, чем 8. Мне просто повезло с моим первым проектом, но расширяться уже некуда. А может понадобиться.

    Я не слишком размечтался?
    Как обещал новые макросы фазатрона .Первый макрос (2шт) фиксатор событий ,второй- счетчик событий с преобразованием в код целочисленный ,третий экстрактор .Если в счетчик поставить 2ППзу ,то можно отрабатывать 32 события ,но тогда нужно ставить 5фиксаторов .Данный способ(абстракционизм) имеет право на существование ,но я предпочитаю классику ,когда смотришь на картину(проект) и понимаешь ,что хотел сказать автор....
    Вложения Вложения
    Последний раз редактировалось rovki; 05.08.2014 в 22:14.
    электронщик до мозга костей и не только

  5. #5
    Пользователь Аватар для drvlas
    Регистрация
    30.09.2010
    Адрес
    Киев
    Сообщений
    700

    По умолчанию

    Ребята, я сегодня запустил на своем первом ПР110 первый проект в железе. Уф. Работает! Ваши варианты не рассматривал. Не потому, что не интересно, просто пекло другое
    Завтра...

Похожие темы

  1. Ответов: 4
    Последнее сообщение: 03.03.2017, 08:25
  2. Файловый менеджер на Delphi на основе утилиты plc_io
    от kandiral в разделе Помощь Разработчикам
    Ответов: 18
    Последнее сообщение: 09.12.2016, 14:52
  3. Ответов: 6
    Последнее сообщение: 11.05.2011, 16:19
  4. Ответов: 7
    Последнее сообщение: 26.01.2011, 07:58
  5. Ответов: 2
    Последнее сообщение: 05.09.2010, 16:27

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •