Страница 12 из 17 ПерваяПервая ... 21011121314 ... ПоследняяПоследняя
Показано с 111 по 120 из 164

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

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

    По умолчанию

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

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

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

  2. #112
    Пользователь
    Регистрация
    19.11.2011
    Адрес
    г. Белгород
    Сообщений
    357

    По умолчанию

    Предлагаю свой вариант. Правда у меня 5-й вход оказался лишним . Руководствовался заданием в посте 55. Сделал частично с макросами. Если нужно, то можно и остальное убрать в макросы. Там кое-где есть комментарии (для этого надо навести курсор на блок или переменную).
    Вложения Вложения
    Последний раз редактировалось amn; 05.08.2014 в 19:51.

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

    По умолчанию

    Цитата Сообщение от 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 в 23:14.
    электронщик до мозга костей и не только

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

    По умолчанию

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

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

    По умолчанию

    Лиха беда начало .Удачи в освоении .
    электронщик до мозга костей и не только

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

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Удачи в освоении .
    Спасибо! Но фраза звучит так, что мне уж и спрашивать вродь не полагается... А вопросы еще есть и будут. Просто я стараюсь пощупать-поиграться для получения своих шишек - без этого какое же обучение. Потому лишь постепенно осваиваю то, что предлагают уважаемые коллеги.

    Очень понравилась реализация от amn. Да, она выполнена в том подходе, который я бы назвал "нерегулярный фазовый автомат". Или, иначе говоря, более традиционный для схем на ПР. Но все же фазы выделены (даже визуально) и при моей реально простой задаче это решение, которое можно было бы считать более удачным, чем мои навороты. Но, сами понимаете, охота пуще неволи. Я хочу работать с регулярной структурой.
    А советы коллеги rovki как раз звучат в унисон с моими хотелками. Я наконец-то понял, как "программировать" ПЗУ То есть, по сути, было ясно, что при наличии счетчика фаз установка ПЗУ на выходы (это раз!) и на отработку событий для следующего шага (это два!) придает системе фантастическую регулярность и стройность. Но я сразу тупо не въехал, "куда ж коней впрягают". Поэтому проигнорил ПЗУ как класс. Теперь буду думать. Правда, у меня вся схема такая простая, что кодировать состояние 4-х выходов (АВАРИЯ рождается из фазы 0 и таймера 5 сек) вроде уж совсем помпезно... Но. Но ради будущих проектов могу попробовать и здесь ПЗУ заюзать.
    А вот сам синхрофазотрон как-то меня "не вставил". Мож тут как с ПЗУ, я просто не понял. Но "отработчик событий для перехода на следующую фазу" (так я понимаю официальную функцию СФТ) должен работать как с событиями, возникающими в текущей фазе, так и с событиями, фронт от которых уже не получишь (например, перемычка, которая "произошла" еще на этапе монтажа шкафа). Поэтому подавать "события" на входы С триггера... Не то. При этом хочу прдчеркнуть: именно реализация СФТ у меня представляет ИМХО самое слабое место. То есть, я буду копать именно в данном направлении, поизучаю проект коллеги rovki.

    А чтобі вам было удобнее следить за полетом моей фантазии, ща причешу чуток проект (который работает на железке, йо-майо!) и приаттачу.

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

    По умолчанию

    Ну, слегка причесал, добавил макрос RANGE и парочку переменных (разгружают рисунок). Ввел все же возможность перезапуска с произвольной фазы по перепаду на тумблере СТОП-РАБОТА. Ибо иногда на железе сам заводил систему в раскаряку (нереальными, в принципе, действиями, но все же может быть) - и выводить приходится передергом питания. Оно-то и не страшно, но как-то тумблером хотелось с самого начала...
    Конечно, главный фокус по сравнению со старой версией - использование целочисленной переменной для передачи номера фазы из счетчика в схему (2 макроса, UPPER и UpLo) генерации импульсов перехода ("СФТ" по терминологии от rovki). Это позволило ввести 9-ю фазу и сделать красивые UPPER и UpLo.
    Вложения Вложения

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

    По умолчанию

    Добрый день.
    Если развернуть все макросы больно уж громоздко для такой задачи. Ощущение, что к звёздам через большие тернии. Или по принципу "Мы не ищем лёгких путей". Покажем программу заказчику, он напугается и заплатит побольше. При таком раскладе ваша попытка отдать исходники заказчику заранее обречена на то, что никто не разберётся и всегда будут звать Вас. А через несколько лет возможно они захотят перейти на другое аппаратное решение. Вот у меня полетел контроллер, где программа на зелио ложике была представленна просто напечатанной на бумажке и всё понятно, переделать можно и на ПР. А у Вас такой фокус не пройдёт. Больно уж вы замудрёвываете. Универсальные есть макросы, но создать универсальную программу нельзя. Возьмётесь решать посерьёзнее задачу и с Вашим подходом у Вас просто банально не хватит памяти. Обратите внимание на показания внизу окошка ОЛ с используемыми ресурсами. Коллеги не дадут соврать, что особенно помню при создании первых универсальных макросов вылазили такие трудности.
    С уважением.
    Лучшее - враг хорошего "Le mieux est I\'ennemi du bien" (вроде как Вольтеровское)

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

    По умолчанию

    Цитата Сообщение от maximov2009 Посмотреть сообщение
    Покажем программу заказчику, он напугается и заплатит побольше. При таком раскладе ваша попытка отдать исходники заказчику заранее обречена на то, что никто не разберётся и всегда будут звать Вас. А через несколько лет
    Не-не, тут Вы не правы. Я исходники не передаю, да и некому, как правило. Сопровождаю свои изделия еще 99-го года выпуска. Ну, мы уже говорили об особенностях моих клиентов.
    Так что нагромождать ради объема - смысла нет никакого. Исключительно для того, чтобы я сам лучше видел логику работы и потом легче сопровождал.

    Цитата Сообщение от maximov2009 Посмотреть сообщение
    Больно уж вы замудрёвываете. Универсальные есть макросы, но создать универсальную программу нельзя.
    Наверное, так и есть. Как мне судить с опытом одной программы за плечами? Но... Будем считать, что я ищу не наилучшее решение с точки зрения грамотного специалиста, а решение, понятное мне. Как единственному потребителю "внутренностей" программы. Все остальные потребляют только ее работу - и пока ПР справляется, им по-барабасику.

    Цитата Сообщение от maximov2009 Посмотреть сообщение
    Возьмётесь решать посерьёзнее задачу и с Вашим подходом у Вас просто банально не хватит памяти
    Значит не возьмусь. У меня же джокер в рукаве: я сюда пришел с ПЛК. Чуть запахнет жареным - я не принципы написания программ буду ломать, а сменю контроллер
    Хотя... Вредность не позволяет мне не упомянуть такие цифры (раз уж речь пошла об используемых ресурсах): беру ту строчку снизу для трех вариантов:

    27 19 33 08 15 мой (полностью работающая программа)
    27 24 40 06 10 rovki (его программа, допиленная мною)
    19 22 27 05 07 amn (программу нужно чуток подпилить)

    Я бы не сказал, что мое решение очень "жрущее".

  10. #120
    Пользователь Аватар для Василий Кашуба
    Регистрация
    20.11.2011
    Адрес
    Ставрополь
    Сообщений
    2,493

    По умолчанию

    Цитата Сообщение от drvlas Посмотреть сообщение
    Ну, слегка причесал, добавил макрос RANGE и парочку переменных (разгружают рисунок). Ввел все же возможность перезапуска с произвольной фазы по перепаду на тумблере СТОП-РАБОТА. Ибо иногда на железе сам заводил систему в раскаряку (нереальными, в принципе, действиями, но все же может быть) - и выводить приходится передергом питания. Оно-то и не страшно, но как-то тумблером хотелось с самого начала...
    Конечно, главный фокус по сравнению со старой версией - использование целочисленной переменной для передачи номера фазы из счетчика в схему (2 макроса, UPPER и UpLo) генерации импульсов перехода ("СФТ" по терминологии от rovki). Это позволило ввести 9-ю фазу и сделать красивые UPPER и UpLo.
    Пока причёсывал ваши макросы, увидел, что нет связи с четвёртого входа внутри UPPER. Сразу не обратил внимания, и теперь не знаю, толи я её потерял, толи её и не было.
    Вложения Вложения

Страница 12 из 17 ПерваяПервая ... 21011121314 ... ПоследняяПоследняя

Похожие темы

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

Ваши права

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