Страница 6 из 8 ПерваяПервая ... 45678 ПоследняяПоследняя
Показано с 51 по 60 из 74

Тема: Графические языки и удобство программирования

  1. #51

    По умолчанию

    Контроллер это не ПК. Тут мышление при программировании должно работать по-другому. Программу надо оптимизировать. Надо стараться не тормозить работу контроллера циклами, а наоборот разносить код по разным циклам, чтобы время цикла контроллера было по возможности минимальным.
    В плане оптимизации вы конечно правы. Но есть огромная куча примеров, когда обязательно нужен вложенный цикл. Чаще всего он прост и до тормозов ему далеко, но без него не обойтись. Чтобы не "квакать" бестолку, вот простой пример, "от балды":

    Допустим есть входная целочисленная переменная, и есть массив целочисленных элементов. Нам надо узнать количество элементов в этом массиве, которые больше этой входной переменной. И найденное их количество уже используется в следующих шагах программы, и требуется оно в каждом цикле ПЛК. Без цикла FOR-NEXT не обойтись. Как сами понимаете, примеры могут быть самые разные, и возникают они очень часто.

  2. #52

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от Boris_K Посмотреть сообщение
    Поконвертировал тут из ST в другие языки цикл FOR и условный оператор с набором нескольких команд в теле. Получилось неплохо, правда в CFC конвертить нельзя, а интересовал именно он. По идее на нём цикл можно сделать с помощью обратной связи, но как тогда заставлять программу выйти из этого кольца, к следующим конструкциям?
    есть джамп для этого, писал же нужно досканально знать CFC, если это не так то перейти на удобный язык

  4. #54

    По умолчанию

    ОК, я протупил немного, закольцовывая ничего хорошего не получишь. Там в CFC есть оператор перехода, на нём конечно можно. Хотя в обычных языках аналогичный оператор (GOTO) использовать не рекомендуется т. к. при злоупотреблении им код получается трудно читаемым, т. е. дурным тоном считается.

  5. #55

    По умолчанию

    "Качество программного кода обратно пропорционально количеству операторов GOTO в нём"
    Эдсгер Дейкстра

  6. #56

    По умолчанию

    "Качество программного кода обратно пропорционально количеству операторов GOTO в нём"
    Эдсгер Дейкстра
    Да, именно так Чем меньше ГОУТУ, тем меньше "спагетти-кода". Хотя некоторые известные кодеры с этим не согласны.

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

    По умолчанию

    Цитата Сообщение от Boris_K Посмотреть сообщение
    Да, именно так Чем меньше ГОУТУ, тем меньше "спагетти-кода". Хотя некоторые известные кодеры с этим не согласны.
    незнаю, что Вы понимаете под этим, собственно цикл for и подразумевает некоторое количество использований goto, а Ваш перебор цикла у меня получился минут за пять, восновном время потрачено на расположение элементов
    Вложения Вложения

  8. #58

    По умолчанию

    Моделирую ситуацию:
    15 дискретных входов и 15 дискретных выходов.
    Программа все входы перебирает и соотв что то пишет в выходы.
    Алгоритм расхода времени:
    Чтение всех входов;
    Выполнение одного цикла программы;
    Запись в выходы.
    Итог!: программа обработает 15-й вход только спустя 15 циклов алгоритма расхода времени при отсутствии оператора For (то есть только использовав If), а на 15-м входе срабатывание уже в начале 1го цикла.
    Время выполнения тела программы может быть существенным, плюс время на чтение запись входов выходов.
    For же на первом цикле программы(да, затратив время контроллера на перебор всех данных с входов) обработает ВСЕ данные с входов.

    Мне кажется, по времени, For !в данном случае! будет выгоднее. ИМХО)

  9. #59
    Пользователь
    Регистрация
    05.11.2011
    Адрес
    Томск
    Сообщений
    192

    По умолчанию

    Так то 15 выходов можно и ручками прописать)

  10. #60
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,318

    По умолчанию

    Цитата Сообщение от Boris_K Посмотреть сообщение
    С помощью sel, mul и подобными можно обработать только одну выходную переменную. А если надо "заусловить" блок из 30 выражений, это придётся для каждого sel хреначить. Вот только и остаётся ST родимый.
    Шашлык делали ? Так же все 30 выражений насаживаете на EN
    Можно изящней. Весь блок в макрос. В макросе, в начале, делаете вход (IF) и (IF)---o< RETURN>

Страница 6 из 8 ПерваяПервая ... 45678 ПоследняяПоследняя

Похожие темы

  1. Языки программирования CoDeSys
    от mogikanin в разделе ПЛК3хх
    Ответов: 21
    Последнее сообщение: 23.03.2014, 16:58
  2. примеры программирования
    от ilf в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 20.07.2010, 15:33
  3. Удобство монтажа
    от SKiT в разделе Разработки
    Ответов: 3
    Последнее сообщение: 05.03.2009, 11:24

Ваши права

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