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

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

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

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

    По умолчанию

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

  2. #2

    По умолчанию

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

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

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

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

  3. #3

    По умолчанию

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

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

    По умолчанию

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

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

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

  5. #5

    По умолчанию

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

    В обычном микроконтроллере, это выглядело бы как обычный конечный автомат.
    Было бы объявлено какой-то 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. Причина: Исправление

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

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

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

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

  8. #8
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Alex19
    на пластавтомате нет быстрых процессов.
    там ни переходы, ни менеджер задач не нужны.
    А программа пишется примерно так:
    Изображения Изображения
    • Тип файла: jpg 2.jpg (183.6 Кб, Просмотров: 26)
    • Тип файла: jpg 1.jpg (159.5 Кб, Просмотров: 22)

  9. #9

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Alex19
    на пластавтомате нет быстрых процессов.
    там ни переходы, ни менеджер задач не нужны.
    А программа пишется примерно так:
    Честно говоря у меня еще нет полного представления о работе ТПА.
    Сейчас собираю документацию на машину.

    Как понял у Вас используется последовательный вызов функций/методов.
    А если режимов работы несколько?

    В одном случае, автомат, переход из функции в функцию, в другом случае вызов по нажатию. В этом случае Вам нужно будет делать проверку на входе каждой, можно так же поставить их по режимам работы. К примеру if и потом череду функций с доп. проверками, но тогда у нас получаются лишние вызовы, case позволяет избежать их.

  10. #10

    По умолчанию

    Нужно отдыхать, завтра в командировку.
    На следующей неделе попробую проверить все идеи.

    Большое спасибо, всем кто уделил мне время.

Страница 3 из 3 ПерваяПервая 123

Похожие темы

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

Ваши права

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