Как в книжке "12 стульев" "И тут Остапа понесло.
По моему вы хотите решить две взаимоисключающие задачи пошаговое управление или свободно реагирующее на ситуацию.
Вид для печати
Предлагаю свой вариант. Правда у меня 5-й вход оказался лишним :). Руководствовался заданием в посте 55. Сделал частично с макросами. Если нужно, то можно и остальное убрать в макросы. Там кое-где есть комментарии (для этого надо навести курсор на блок или переменную).
Как обещал новые макросы фазатрона .Первый макрос (2шт) фиксатор событий ,второй- счетчик событий с преобразованием в код целочисленный ,третий экстрактор .Если в счетчик поставить 2ППзу ,то можно отрабатывать 32 события ,но тогда нужно ставить 5фиксаторов .Данный способ(абстракционизм;)) имеет право на существование ,но я предпочитаю классику ,когда смотришь на картину(проект) и понимаешь ,что хотел сказать автор....
Ребята, я сегодня запустил на своем первом ПР110 первый проект в железе. Уф. Работает! Ваши варианты не рассматривал. Не потому, что не интересно, просто пекло другое :)
Завтра...
Лиха беда начало .Удачи в освоении .
Спасибо! Но фраза звучит так, что мне уж и спрашивать вродь не полагается... А вопросы еще есть и будут. Просто я стараюсь пощупать-поиграться для получения своих шишек - без этого какое же обучение. Потому лишь постепенно осваиваю то, что предлагают уважаемые коллеги.
Очень понравилась реализация от amn. Да, она выполнена в том подходе, который я бы назвал "нерегулярный фазовый автомат". Или, иначе говоря, более традиционный для схем на ПР. Но все же фазы выделены (даже визуально) и при моей реально простой задаче это решение, которое можно было бы считать более удачным, чем мои навороты. Но, сами понимаете, охота пуще неволи. Я хочу работать с регулярной структурой.
А советы коллеги rovki как раз звучат в унисон с моими хотелками. Я наконец-то понял, как "программировать" ПЗУ :) То есть, по сути, было ясно, что при наличии счетчика фаз установка ПЗУ на выходы (это раз!) и на отработку событий для следующего шага (это два!) придает системе фантастическую регулярность и стройность. Но я сразу тупо не въехал, "куда ж коней впрягают". Поэтому проигнорил ПЗУ как класс. Теперь буду думать. Правда, у меня вся схема такая простая, что кодировать состояние 4-х выходов (АВАРИЯ рождается из фазы 0 и таймера 5 сек) вроде уж совсем помпезно... Но. Но ради будущих проектов могу попробовать и здесь ПЗУ заюзать.
А вот сам синхрофазотрон как-то меня "не вставил". Мож тут как с ПЗУ, я просто не понял. Но "отработчик событий для перехода на следующую фазу" (так я понимаю официальную функцию СФТ) должен работать как с событиями, возникающими в текущей фазе, так и с событиями, фронт от которых уже не получишь (например, перемычка, которая "произошла" еще на этапе монтажа шкафа). Поэтому подавать "события" на входы С триггера... Не то. При этом хочу прдчеркнуть: именно реализация СФТ у меня представляет ИМХО самое слабое место. То есть, я буду копать именно в данном направлении, поизучаю проект коллеги rovki.
А чтобі вам было удобнее следить за полетом моей фантазии, ща причешу чуток проект (который работает на железке, йо-майо!) и приаттачу.
Ну, слегка причесал, добавил макрос RANGE и парочку переменных (разгружают рисунок). Ввел все же возможность перезапуска с произвольной фазы по перепаду на тумблере СТОП-РАБОТА. Ибо иногда на железе сам заводил систему в раскаряку (нереальными, в принципе, действиями, но все же может быть) - и выводить приходится передергом питания. Оно-то и не страшно, но как-то тумблером хотелось с самого начала...
Конечно, главный фокус по сравнению со старой версией - использование целочисленной переменной для передачи номера фазы из счетчика в схему (2 макроса, UPPER и UpLo) генерации импульсов перехода ("СФТ" по терминологии от rovki). Это позволило ввести 9-ю фазу и сделать красивые UPPER и UpLo.
Добрый день.
Если развернуть все макросы больно уж громоздко для такой задачи. Ощущение, что к звёздам через большие тернии. Или по принципу "Мы не ищем лёгких путей". Покажем программу заказчику, он напугается и заплатит побольше. При таком раскладе ваша попытка отдать исходники заказчику заранее обречена на то, что никто не разберётся и всегда будут звать Вас. А через несколько лет возможно они захотят перейти на другое аппаратное решение. Вот у меня полетел контроллер, где программа на зелио ложике была представленна просто напечатанной на бумажке и всё понятно, переделать можно и на ПР. А у Вас такой фокус не пройдёт. Больно уж вы замудрёвываете. Универсальные есть макросы, но создать универсальную программу нельзя. Возьмётесь решать посерьёзнее задачу и с Вашим подходом у Вас просто банально не хватит памяти. Обратите внимание на показания внизу окошка ОЛ с используемыми ресурсами. Коллеги не дадут соврать, что особенно помню при создании первых универсальных макросов вылазили такие трудности.
С уважением.
Не-не, тут Вы не правы. Я исходники не передаю, да и некому, как правило. Сопровождаю свои изделия еще 99-го года выпуска. Ну, мы уже говорили об особенностях моих клиентов.
Так что нагромождать ради объема - смысла нет никакого. Исключительно для того, чтобы я сам лучше видел логику работы и потом легче сопровождал.
Наверное, так и есть. Как мне судить с опытом одной программы за плечами? Но... Будем считать, что я ищу не наилучшее решение с точки зрения грамотного специалиста, а решение, понятное мне. Как единственному потребителю "внутренностей" программы. Все остальные потребляют только ее работу - и пока ПР справляется, им по-барабасику.
Значит не возьмусь. У меня же джокер в рукаве: я сюда пришел с ПЛК. Чуть запахнет жареным - я не принципы написания программ буду ломать, а сменю контроллер :)
Хотя... Вредность не позволяет мне не упомянуть такие цифры (раз уж речь пошла об используемых ресурсах): беру ту строчку снизу для трех вариантов:
27 19 33 08 15 мой (полностью работающая программа)
27 24 40 06 10 rovki (его программа, допиленная мною)
19 22 27 05 07 amn (программу нужно чуток подпилить)
Я бы не сказал, что мое решение очень "жрущее".