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

Тема: Вопросы по поиску правильной архитектуры приложения.

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

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Цитата Сообщение от Alex19 Посмотреть сообщение
    Идея была в том, чтобы свалиться в прерывание и перейти в начало программы.
    Ради интереса потом гляну возможно ли это.
    Так не работает.
    Дело, например, в том, что помимо вашей программы, ПЛК выполняет обработку сети (ethernet, 485 и т.п.).
    Если вы собрались занимать вообще всё процессорное время, то кто будет отвечать по сети?

    Поэтому, цикл "1мс" существует специально для того, чтобы ПЛК мог выполнять свои задачи.
    Например, пользовательская программа "вычислить 10 if'ов" занимает 0.1мс, а всё остальное время 0.9мс прошивка ПЛК использует для своих нужд (сеть экран вот это всё).

    В общем "тут принято", без прерываний, и у всех работает (если правильно помню, то обрабатывают более 30 модулей, и цикл не превышает 2мс)

  2. #2

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Так не работает.
    Дело, например, в том, что помимо вашей программы, ПЛК выполняет обработку сети (ethernet, 485 и т.п.).
    Если вы собрались занимать вообще всё процессорное время, то кто будет отвечать по сети?

    Поэтому, цикл "1мс" существует специально для того, чтобы ПЛК мог выполнять свои задачи.
    Например, пользовательская программа "вычислить 10 if'ов" занимает 0.1мс, а всё остальное время 0.9мс прошивка ПЛК использует для своих нужд (сеть экран вот это всё).
    Да и сама моя идея, была не правильная, погорячился.

    Самый верный подход, как мне кажется, это прерывание, в котом задаем переменную, а дальше, только в ответственных участках кода проверяем ее. Тогда все будет логично и правильно, надо только понять как происходит передача управления. В станке предусмотрено еще 2 уровня защиты, оба механических, на случай ошибок или выхода ПЛК из строя.

    Разумеется, есть код, который выполняется за кулисами моей программы, который требует ресурсы.
    Мне еще нужно понять, какой объем этих ресурсов требуется. Пока когда читаю документацию, удивляюсь скорости переключения выходов и т.д., правда там написано не более.

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    В общем "тут принято", без прерываний, и у всех работает (если правильно помню, то обрабатывают более 30 модулей, и цикл не превышает 2мс)
    Вы зародили сомнения, в моем решении.

    У Вас больше опыта с ПЛК, но мой предыдущий опыт (с обычными микроконтроллерами), говорит, что решить такую задачу в ПЛК без прерываний не возможно. Попробую разобраться с прерываниями, тогда все станет на свои места.

  3. #3
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,851

    По умолчанию

    Цитата Сообщение от Alex19 Посмотреть сообщение
    Да и сама моя идея, была не правильная, погорячился.

    Самый верный подход, как мне кажется, это прерывание, в котом задаем переменную, а дальше, только в ответственных участках кода проверяем ее. Тогда все будет логично и правильно, надо только понять как происходит передача управления. В станке предусмотрено еще 2 уровня защиты, оба механических, на случай ошибок или выхода ПЛК из строя.

    Разумеется, есть код, который выполняется за кулисами моей программы, который требует ресурсы.
    Мне еще нужно понять, какой объем этих ресурсов требуется. Пока когда читаю документацию, удивляюсь скорости переключения выходов и т.д., правда там написано не более.


    Вы зародили сомнения, в моем решении.

    У Вас больше опыта с ПЛК, но мой предыдущий опыт (с обычными микроконтроллерами), говорит, что решить такую задачу в ПЛК без прерываний не возможно. Попробую разобраться с прерываниями, тогда все станет на свои места.
    Придется расстаться с опытом с обычными микроконтроллерами. Нету в ПЛК прерываний, и работает он с физическими входами и выходами не так, как обычный микроконтроллер.
    Рабочий цикл ПЛК.
    1. Опрос физических входов
    2. Сохранение образа состояния входов
    3. Выполнение программы, при этом используются именно образ входов. Если в программе используются выходы ПЛК, то изменение их состояния происходит не на физ. выходах а в их образе.
    4. Запись образа выходов на физические выходы ПЛК
    5. Выполнение служебных задач.
    Далее все повторяется
    Станок постоянно опрашивает один из входов контролера и если на нем появляется логический 0, станок должен остановится. При этом не важно в каком режиме работает данный станок, в каком шаге и т.д., он должен выполнить определенные действия в зависимости от шага автомата (отключить какое-то оборудования) и остановиться. А в автоматическом режиме, при появлении на данном входе 1, должен продолжить из места остановки.

    Как мне видится решение данной проблемы.
    1. Перед каждым шагом в условии if проверяем функцию. Функция проверяет вход, а если требуется остановка выполняет определенные действия (отключает какое-то оборудование) в зависимости от шага автомата.
    Все просто, но минус если шагов сотни, то каждый раз прописывать if, ужасно не удобно.
    Все очень просто и без прерываний.
    Ясно, что для конечного автомата нужно использовать CASE.
    Но вот вместо IF для каждого шага нужно вынести этот IF за пределы CASE, например перед ним.
    И так остановка станка по условию появления 0 на определенном входе ПЛК это тоже некоторое состояние автомата. И его просто нужно описать в CASE. А во внешнем IF/ELSE, который перед CASE, проверять состояние входа ПЛК и если нужно выполнить стоп, то запомнить текущее состояние переменной CASE и присвоить ей номер состояния отработки остановки станка.
    При появлении на входе ПЛК сигнала о продолжении работы, во внешнем IF/ELSE присвоить переменной CASE ранее сохраненное значение. И работа станка возобновиться из места остановки.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Похожие темы

  1. Выбор правильной конфигурации
    от maxsus в разделе Подбор Оборудования
    Ответов: 3
    Последнее сообщение: 07.09.2015, 16:39
  2. Друзья , нужна помощь в подключении и правильной работе МПР51
    от Виктор Иванов в разделе Эксплуатация
    Ответов: 11
    Последнее сообщение: 24.07.2015, 14:47
  3. ПЛК 304 автозапуск приложения
    от Шевцов Игорь в разделе ПЛК3хх
    Ответов: 24
    Последнее сообщение: 06.03.2015, 12:07
  4. Поделитесь опытом по поиску Заказчиков
    от dmm в разделе Трёп (Курилка)
    Ответов: 16
    Последнее сообщение: 11.12.2011, 23:21
  5. вопрос по выбору архитектуры
    от Kraft в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 09.02.2010, 07:11

Ваши права

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