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

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

  1. #21

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Ladder Logic. Язык, который заставляет применять ПЛК строго по их назначению =)
    Понятно, спасибо за пояснения буду смотреть.

    Цитата Сообщение от Yegor Посмотреть сообщение
    Электромеханикой делайте в обход контроллера. Это ж безопасность, ё-маё. Мы для одной большой печки не поленились вообще режим "без контроллера" сделать, чтобы деталь в печке спасти можно было. А когда людей спасать требуется, тут точно надо делать так, чтобы оно не могло не сработать.
    Уже есть электромеханика везде, если относится к безопасности оператора, на дверях еще электрогидравлика. Электроника это дополнительный уровень защиты оператора и защита оснастки, форм и т.д.
    Последний раз редактировалось Alex19; 29.09.2016 в 17:19. Причина: Исправление

  2. #22

    По умолчанию

    Цитата Сообщение от Alex19 Посмотреть сообщение
    Понятно, спасибо за пояснения буду смотреть.
    Лучше не надо =)

  3. #23
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    как вообще это делают
    Код:
    выход_на_моторчик := NOT стоп AND (крутить_моторчик OR другие_условия_кручения_моторчика)
    И всё, остальное главный цикл сделает за вас. Причём желательно, чтобы это было единственное место записи в выход_на_моторчик; в кодесисе даже проверка есть, в скольких местах переменная записывается. Если что-то можно сделать без ветвления, на ПЛК это надо делать без ветвления.

  4. #24

    По умолчанию

    Если в контроллере выходы меняются после цикла проги, кто мешает в самом конце проги, при отсутствии сигнала на входе контроллера выполнить по триггеру действия при обнаружении перехода 1-0, а далее тупо обнулять выходы пока ноль на входе?
    Вроде элементарно, вроде такой подход защищает от ошибок в будущем, при изменении проги, когда уже почти забыл где что.

    Нужна максимальная скорость? поставьте в начале проги переход в конец по условию входа. (кстати заморозите все переменные, может пригодится при возврате к автомату.)

    Нафига городить строки
    выход_на_моторчик := NOT стоп AND (крутить_моторчик OR другие_условия_кручения_моторчика)
    Причём желательно, чтобы это было единственное место записи в выход_на_моторчик;
    Вопрос у ТС был довольно интересный, про архитектуру,
    В подходе из цитат, архитектурой даже не пахнет.

    -------------------
    Архитектура, это когда прога разбита на кучу подпрограм и функций, а в нужный момент работают только те куски, которые нужны именно в этот момент. Так вообще то писать намного проще.
    Последний раз редактировалось BETEP; 29.09.2016 в 19:52.

  5. #25

    По умолчанию

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

  6. #26
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Вопрос у ТС был довольно интересный, про архитектуру,
    В подходе из цитат, архитектурой даже не пахнет.

    -------------------
    Архитектура, это когда прога разбита на кучу подпрограм и функций, а в нужный момент работают только те куски, которые нужны именно в этот момент. Так вообще то писать намного проще.
    но он то совсем про другое, ему казалось что бесконечный цикл решит все проблемы и неподозревал что плк это делает и так. Под прерываниями он тоже имел ввиду не то что считается в контроллерах
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  7. #27

    По умолчанию

    Да ушел от темы, как и задал вопрос слишком преждевременно, погорячился. Надо было больше почитать и проверить свои идеи.

    В обычном микроконтроллере, это выглядело бы как обычный конечный автомат.
    Было бы объявлено какой-то enum, ну к примеру:
    enum TPAAutomaticStepCycleEnum
    {
    /// <summary>
    /// Не выбран
    /// </summary>
    TPAASC_None = 0,
    /// <summary>
    /// Смыкание формы
    /// </summary>
    TPAASC_CloseForm = 1,
    /// <summary>
    /// Выс. давл. дожатия
    /// </summary>
    TPAASC_CloseFormHighPressureSqueezing = 2
    };
    Переменная, как stateTPA которая хранит переменную.
    Дальше проверка if, которая проверяет вход, и если на нем 0, идем в функцию которая отключает оборудование в зависимости от последнего пункта, каким образом мы не идем дальше, если 1 идем дальше.

    После это проверка выбранного режима, как правило они жестко забиты, поэтому это был бы if, а в нем функции TPAWAutomatic(), TPAWSemiAutomatic(), TPAWManual() и т.д.. Каждая функция TPAWAutomatic и TPAWSemiAutomatic представляет собой отдельный конечный автомат на case, к примеру так.
    switch (stateTPA)
    {
    case TPAASC_CloseForm:
    func1(&stateTPA);
    break;
    case TPAASC_CloseFormHighPressureSqueezing:
    func2(&stateTPA);
    break;
    }
    При появлении нового шага, нам нужно добавить дополнительную строку в enum, поменять нумерацию и добавить дополнительную обработку в case. Сами обработчики это функции и т.д.

    Это, что касается расширения программы.
    Что касается обработчика защиты, то мы просто читаем в критическим моментах порт. Или создаем прерывание и пробуем перейти в 0 адрес программы.

    Не являюсь профессионалом, поэтому возможно вариант не идеальный. И да
    Последний раз редактировалось Alex19; 29.09.2016 в 21:47. Причина: Исправление

  8. #28

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Код:
    выход_на_моторчик := NOT стоп AND (крутить_моторчик OR другие_условия_кручения_моторчика)
    И всё, остальное главный цикл сделает за вас. Причём желательно, чтобы это было единственное место записи в выход_на_моторчик; в кодесисе даже проверка есть, в скольких местах переменная записывается. Если что-то можно сделать без ветвления, на ПЛК это надо делать без ветвления.
    Вы предлагаете, проверять в критических моментах. Но имеет ли смысл, если пока мы не перешли к следующему циклы, значения портов не изменятся.

  9. #29

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Если в контроллере выходы меняются после цикла проги, кто мешает в самом конце проги, при отсутствии сигнала на входе контроллера выполнить по триггеру действия при обнаружении перехода 1-0, а далее тупо обнулять выходы пока ноль на входе?
    Вроде элементарно, вроде такой подход защищает от ошибок в будущем, при изменении проги, когда уже почти забыл где что.
    Очень интересно, есть какой-то триггер, который может обнаружить переход состояния входа 1-0. Идея действительно правильная, но мне мешало ее увидеть привычка, что изменение выхода происходит мгновенно. По сути триггер с проверкой в конце цикла, это то, что мне нужно, надо разобраться, что за зверь и как это работает. Спасибо за идею.

    Цитата Сообщение от BETEP Посмотреть сообщение
    Нужна максимальная скорость? поставьте в начале проги переход в конец по условию входа. (кстати заморозите все переменные, может пригодится при возврате к автомату.)
    Вы говорите о метках или goto, разумно.

    Цитата Сообщение от BETEP Посмотреть сообщение
    Архитектура, это когда прога разбита на кучу подпрограм и функций, а в нужный момент работают только те куски, которые нужны именно в этот момент. Так вообще то писать намного проще.
    Такое написание кода, желательно всегда.

  10. #30

    По умолчанию

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

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

Похожие темы

  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

Ваши права

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