Результаты опроса: Автоматы, в задачах логического управления

Голосовавшие
64. Вы ещё не голосовали в этом опросе
  • Использую

    26 40.63%
  • Буду использовать, нужная вещь

    18 28.13%
  • Не использую, пишу "влоб"

    6 9.38%
  • Не пойму, о чем речь

    14 21.88%
Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 21 по 30 из 39

Тема: Switch-технология. Программирование задач логического управления.

  1. #21
    Пользователь
    Регистрация
    12.08.2008
    Адрес
    Белгород
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Т.е. сложные условия вы все-таки куда-то прячете ? Тогда и я вернусь к первому варианту
    Нет. Вы прячете в состояние, а куда переходить суете в переменную state. У меня все условия нагромождены на графе.


    Цитата Сообщение от Валенок Посмотреть сообщение
    Сложное условие копи-пасте в кучу мест ? Класс. Программирование в лоб. Макросная вставка кода работающего с секторами/дорожками при любой необходимости сделать просто write() ??? Функции/подпрограммы/процедуры/прерывания отдыхают – это лишнее.
    Особенно удобно вылавливать ошибки. Условие А из 2 в 1 точно написано, из 3 в 7 перепустали переменную, а из 9 в 4 вообще забыли исправить – хотели копипастить, но позвонили из клиники, тещу забрали в стационар.
    Читаем первый пост. Один раз исправляем в графе и автоматически получаем код.

    Цитата Сообщение от Валенок Посмотреть сообщение
    Вы хоть поняли необходимость параллельных шагов ? Даже если они квазипараллельные
    не очень. если можно еще раз и одним предложением. "Паралельные шаги нужны для...."

    Цитата Сообщение от Валенок Посмотреть сообщение
    Для объективного сравнения чего, нужно оба предмета изучить досконально. Причем я не утверждаю что смог это сделать.
    Мы в равных положениях, я знаю это, вы знаете то, вот и выясняем +сы -сы

  2. #22

    По умолчанию

    Тут ещё вспомнил.
    в макросах визио есть команды для перебора всех страниц документа, и всех шейпов на листе, или только с каким-то свойством или меткой в данных.
    Зачем лепить внешний конвертер на обработку текста? бред какой то...
    Если уж так очень хочется лепить в визио прогу или её часть, лепите правильно, создайте библиотеки нужных шейпов, продумайте листы для подпрограмм, лист для организации этих подпрограм, и обрабатывайте макросами самого визио, рядом с графом можно даже поле с готовым сгенеренным текстом вставлять.
    Ну вы прям микроскопом гвозди забиваете. Если не знаете возможностей инструмента, посетите форумы разработчиков на визио, наймите исполнителя

  3. #23
    Пользователь
    Регистрация
    12.08.2008
    Адрес
    Белгород
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Тут ещё вспомнил.
    в макросах визио есть команды для перебора всех страниц документа, и всех шейпов на листе, или только с каким-то свойством или меткой в данных.
    Зачем лепить внешний конвертер на обработку текста? бред какой то...
    Если уж так очень хочется лепить в визио прогу или её часть, лепите правильно, создайте библиотеки нужных шейпов, продумайте листы для подпрограмм, лист для организации этих подпрограм, и обрабатывайте макросами самого визио, рядом с графом можно даже поле с готовым сгенеренным текстом вставлять.
    Ну вы прям микроскопом гвозди забиваете. Если не знаете возможностей инструмента, посетите форумы разработчиков на визио, наймите исполнителя
    Чтобы понять уровень сложности конвертера откройте его исходники и документацию

  4. #24

    По умолчанию

    Не спорьте, уровень сложности конвертера это от незнания как визио готовить.
    Кстати конвертер можно встроить в визио как надстройку, причём можно скачать с микрософта инструменты для создания надстроек.

    В вашем случае и макросов достаточно. Заменить в нужном месте шейп на текст с данными из этого шейпа? ну очень сложно...
    определить в каком месте текста воткнуть этот шейп по его номеру и свойствам? как два пальца об асфальт.
    во вложении пример простых макросов для определения действий по событию визио и перебор листов с поиском нужных шейпов, чтобы заявку в эксель отправить.
    Вложения Вложения
    • Тип файла: rar visio.rar (6.8 Кб, Просмотров: 22)
    Последний раз редактировалось BETEP; 04.01.2012 в 17:26.

  5. #25
    Пользователь
    Регистрация
    12.08.2008
    Адрес
    Белгород
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Не спорьте, уровень сложности конвертера это от незнания как визио готовить.
    Кстати конвертер можно встроить в визио как надстройку, причём можно скачать с микрософта инструменты для создания надстроек.

    В вашем случае и макросов достаточно. Заменить в нужном месте шейп на текст с данными из этого шейпа? ну очень сложно...
    определить в каком месте текста воткнуть этот шейп по его номеру и свойствам? как два пальца об асфальт.
    во вложении пример простых макросов для определения действий по событию визио и перебор листов с поиском нужных шейпов, чтобы заявку в эксель отправить.
    1) Этот конвертер создавался как универсальное средство. Он создает XML описание автомата которое можно использовать где (и как) угодно. После, руками, создаются шаблоны преобразования XML описания автомата в любой язык программирования. Для этого там применяются синтаксический и лексический анализаторы, +парсеры.

    2) Я, в этом всем, всего лишь отредактировал шаблон под язык ST.

    3) Благодарю за примеры. Давно хотел увидеть что-то конкретное. Если не использовать синтаксические и лексические анализаторы, то Ваш вариант реализации вполне привлекателен.
    т.к. конвертер уже работает, приоритет создания VBA-аналога уменьшится...

    Еще вопрос: откуда эти макросы? я так понял это "САПР"? Самописный?

  6. #26

    По умолчанию

    Самописный, но не мой, это из комплекта заточенного под рисование схем, но для того чтобы им пользоваться нужно немного понимать VBA и как сделаны фигуры в визио. на форумах визио можно вообще крутатень найти.

    То что конвертер работает только с одним листом, и притом глючит с прямыми линиями, ограничения по строкам в тексте....

    тот кто делал заготовку для визио и конвертер, просто дал имена фигурам и метку в данных фигуры, но не догадался сделать полноценные фигуры с данными пользователя, тогда вместо текста квадратиков и линий можно было-бы использовать коннекторы с кучей строк для описания кучи условий перехода. Прямоугольники состояний и групп то-же нужно было наделить пользовательскими данными. Добавить данные можно и к листу, и вообще подготовить листы для подпрограмм. и даже вполне возможно отображать нужные данные из ОРС сервера, что-бы с тормозами лицезреть процесс работы в контроллере.

    Если правильно определить структуру и типы листов, подготовить шейпы с нужными полями для данных, появится возможность рисования сложных алгоритмов и их нормального читаемого оформления и печати. Можно ведь использовать принятые принципы оформления, титульный лист, содержание, граф организации программы, текст графа (как перечни в схемах) листы с подпрограммами графа в виде графов и.т.п.
    Скрипты в предыдущем посте выдают результат немного похожий на конвертер в ST, Перебирают листы, на нужных листах находят нужные фигуры, цепляют из них данные, сортируют, считают и выдают текст. некоторые функции реагируют на событие при подсоединении коннектора к точке и цепляют данные от того к кому прицепились.
    обрабатывать файл визио или его XML версию неблагодарное занятие, обрабатывать данные фигур в самом визио намного проще.

    Это только замечания по реализации идеи с рисованием и конвертацией в ST. Автоматизация нудного неблагодарного труда реально нужна всем, а вот автоматизация ради автоматизации с увеличением времени на отладку...Все кто занимается программированием давно наработали свои шаблоны для разных задач, Ну зачем мне и другим начинать фактически с нуля нарабатывать шаблоны в виде рисунков в визио? у меня времени на работу, пиво и остальное не останется.

    З.Ы. Поплюхался тут недавно сочиняя прогу для одного хитрого девайса, не смог себе мозги перестроить под язык квадратиков и линий, который разработчики девайса предлагают, переключил редактор на текст и мои мозги на место вернулись.

  7. #27
    Пользователь
    Регистрация
    12.08.2008
    Адрес
    Белгород
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Параллельные шаги нужны для.. реальных проектов, которые несколько сложнее светофора.

    Цитата Сообщение от BETEP
    up
    благодарю за развернутый ответ

  8. #28

    По умолчанию

    Цитата Сообщение от gtfox Посмотреть сообщение
    "Паралельные" бывают только физические процессы, а вычислительные - последовательные, хоть вы и видите в SFC 2 одновременно работающих состояния.
    Хм. В стандарте МЭК такого требования нет. Кроме состояний в SFC еще есть и действия. Они способны работать параллельно, независимо от состояний . Исполнитель SFC имеет полное право вешать их на разные процессы. В многоядерных системах будет физически параллельно.
    Цитата Сообщение от gtfox Посмотреть сообщение
    "Если 2 физических процесса происходят одновременно, то для их описания используются 2 автомата, которые запускаются по изменению 1 логической переменной. Если нужно одному подождать - смотрим за номером состояния другого..
    Значит параллелизм в автоматном подходе есть. Он выражается гиперавтоматом. В нем реализуется простейший механизм синхронизации задач (автоматов). Его приходится самостоятельно кодировать в прикладной программе, вместо того чтобы использовать готовые механизмы ОС.
    Цитата Сообщение от gtfox Посмотреть сообщение
    "... "любой момент в физ.объекте" наступает не раньше чем ПЛК опросит входы в начале цикла, и этот момент не сдвинется до следующего цикла. В это время последовательно обрабатываете любые аварии.. .
    Допустим, иногда внутри этого цикла делаются некоторые громоздкие вычисления или блокирующая запись на флеш диск и др. В итоге, наш цикл подзастревает допустим на 1-2 секунды. Еще есть аварийный вход. По его изменению реакция обязана происходить, например, за 1 мс. Решение: на быстрый вход ПЛК вешаем событийную задачу с высшим приоритетом. Она мгновенно останавливает цикл и делает то, что должна. Нигде никакого лишнего кода писать не приходится. Для программирования напрягли 0.5 извилины.
    Автоматный подход очень полезная штука. Раздражают только попытки подать его как универсальную ‘суперкувалду’.

    Есть много других замечательных подходов. Например, событийные, процесс ориентированные...

    Помните, мы обсуждали инструмент PLC Link? Он интегрирует CoDeSys в MATLAB Simulink с непосредственным выполнением в ПЛК и визуальной отладкой. Это было нужно для математически сложных задач, типа динамического управления лопастями генераторов. Тема получила развитие. Теперь в MATLAB появился PLC Coder. Жалко, нет случая попробовать.

  9. #29
    Пользователь
    Регистрация
    12.08.2008
    Адрес
    Белгород
    Сообщений
    63

    По умолчанию

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Хм. В стандарте МЭК такого требования нет. Кроме состояний в SFC еще есть и действия. Они способны работать параллельно, независимо от состояний . Исполнитель SFC имеет полное право вешать их на разные процессы. В многоядерных системах будет физически параллельно.
    Вот поэтому я и не хотел заводить разговор о параллельности
    Фон Неймана никто не отменял, несмотря на прерывания

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Значит параллелизм в автоматном подходе есть. Он выражается гиперавтоматом. В нем реализуется простейший механизм синхронизации задач (автоматов). Его приходится самостоятельно кодировать в прикладной программе, вместо того чтобы использовать готовые механизмы ОС.
    Не очень понял конечно, какой такой готовый механизм синхронизации... Это, если в 1 ветви 1 шаг, а в параллельной 10, то 1-я ветвь будет ждать завершения соседних 10-ти...

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Допустим, иногда внутри этого цикла делаются некоторые громоздкие вычисления или блокирующая запись на флеш диск и др. В итоге, наш цикл подзастревает допустим на 1-2 секунды. Еще есть аварийный вход. По его изменению реакция обязана происходить, например, за 1 мс. Решение: на быстрый вход ПЛК вешаем событийную задачу с высшим приоритетом. Она мгновенно останавливает цикл и делает то, что должна. Нигде никакого лишнего кода писать не приходится. Для программирования напрягли 0.5 извилины.
    Если в SFC сделать 2 параллельных шага, в одном шаге будет выполнятся быстрый код, в другом долгий код.
    Вопрос: Не используя событийных задач с высшим приоритетом, чему будет равен цикл ПЛК (быстрому или долгому коду)?

    + Ничто не мешает нам использовать событийные задачи с высшим приоритетом в "switch-технологии"

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Автоматный подход очень полезная штука. Раздражают только попытки подать его как универсальную ‘суперкувалду’.
    Не совсем "суперкувалду", а один из работающих вариантов реализации автоматного подхода

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Есть много других замечательных подходов. Например, событийные, процесс ориентированные...
    Язык Рефлекс - замечательная вещь
    Если бы с него можно было в ST код генерить - было бы замечательно, однако я не нашел.
    И, кстати, подход генерации кода С,ST,Pascal - подобного по графам аналогичен предложенному в "switch-технологии"

    Цитата Сообщение от Игорь Петров Посмотреть сообщение
    Помните, мы обсуждали инструмент PLC Link? Он интегрирует CoDeSys в MATLAB Simulink с непосредственным выполнением в ПЛК и визуальной отладкой. Это было нужно для математически сложных задач, типа динамического управления лопастями генераторов. Тема получила развитие. Теперь в MATLAB появился PLC Coder. Жалко, нет случая попробовать.
    Касаемо автоматной части (генерация из Stateflow) PLC Coder генерит код, аналогичный MetaAuto-конвертеру, только предварительно нужно его очищать от служебного кода. + Matlab стоит дороже Visio

  10. #30

    По умолчанию

    Цитата Сообщение от gtfox Посмотреть сообщение
    ...Matlab стоит дороже Visio
    С MATLAB и PLC Link фишка в том, что мы строим математическую модель системы управления. Например, для ветряков известна система диф уравнений. Матлаб способен их решать с нужным шагом и точностью. Параллельно рисуем систему управления. Запускаем это все на компьютере, смотрим. Можем попробовать разные регуляторы, четкие, нечеткие. Выбираем лучшее решение. Дальше делается волшебство. Оно заключается в том, что управляющая модель автоматически конвертируется в CoDeSys и запускается в ПЛК параллельно. Мало того, система сравнивает точность результатов вычислений в компьютере и ПЛК и строит графики. Мы можем менять настройки. Например, указываем применять REAL переменные либо более тяжелые библиотеки высокой точности. Результатом моделирования является рабочая, верифицированная программа в ПЛК. Программирования нет вообще. Понятно, что все это передовая наука и пока не дешево. Но, впечатляет

Страница 3 из 4 ПерваяПервая 1234 ПоследняяПоследняя

Похожие темы

  1. Сборник задач
    от antsa в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 01.12.2023, 15:17
  2. конфиг. задач
    от Safron в разделе ПЛК63/73
    Ответов: 8
    Последнее сообщение: 08.09.2010, 15:38
  3. циклично-поточная технология транспортировки сырья
    от AlexP в разделе Подбор Оборудования
    Ответов: 4
    Последнее сообщение: 18.04.2010, 00:43
  4. ПЛК100 по Eternet через switch
    от Денис в разделе Сетевые технологии
    Ответов: 52
    Последнее сообщение: 20.06.2008, 09:43
  5. Подключение ПЛК-150 через Switch
    от Сергей М в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 19.05.2008, 15:53

Ваши права

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