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

Тема: Работа с массивами

  1. #21

    По умолчанию

    Я делаю интересней. Правда я так вид аварии определяю, и основной стоп...
    Код:
    stop:=false
    for i:=1 to 6 do
       alarm[i]:= false
       if alfa[i]=0 then
          alarm[i]:=true
          stop:=true
       end_if
    end_for
    ... Тут далее этот stop обрабатываем, иначе он может потеряться, т.к. всегда вначале обнуляется.
    Ретурн не делаю...
    В массиве алармов видно, на какой переменной нулевые значения, при чем на всех, а не на первой, если применять ретурн.
    А стоп один общий, если хотя бы один ноль есть...

  2. #22
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,325

    По умолчанию

    Ретурн служит для проверки на ИЛИ. Какой смысл ползать дальше по массиву, если выход один и проверяем ИЛИ?
    если надо И, то там должно пройти по всем элементам цикла.
    Хотя и при И в определенных случаях можно выйти раньше.

  3. #23

    По умолчанию

    Просто мне надо видеть все аварии, а не первую из списка.

  4. #24

    По умолчанию

    Тогда уж так, и все аварии и Стоп
    Код:
    stop:=FALSE;                          
    FOR i:=1 TO 6 DO
    alarm[i]:= rParam_[i] =0 ;       
    stop := stop OR alarm[i];         
    END_FOR

  5. #25

    По умолчанию

    Можно и так

  6. #26

    По умолчанию

    https://owen.ru/forum/showthread.php...l=1#post463322
    Ну так всё же? как тут быть?
    Есть код, его достаточно, и где-то в середине (пришлось так сделать), что идёт проверка на ненулевые значения "настроек" и если нулевое попадается, то включается БИТ и он сенсорной панели говорит, что "высвети окно с настройками" и пусть оператор задаст ненулевые параметры, т.к. с нулевыми "система" не поедет... Так вот пока оператор не задаст всё правильно, то бит и останется включенным, ну а всё остальное (код) пусть работает - зачем его тормозить-то?
    Выходит, что лучшим способом будет "запихнуть эту проверку" в функциональный блок и, по ходу цикла, входить и проверять на "ненулевые" значения и зажигать бит (или не зажигать)... но а в таком случае получится выйти из этого ФБ и продолжить выполнять POU - тут я еще не пробовал... а может уже кто-то попробовал так?

  7. #27

    По умолчанию

    Цитата Сообщение от goldenlife Посмотреть сообщение
    https://owen.ru/forum/showthread.php...l=1#post463322
    Ну так всё же? как тут быть?
    Есть код, его достаточно, и где-то в середине (пришлось так сделать), что идёт проверка на ненулевые значения "настроек" и если нулевое попадается, то включается БИТ и он сенсорной панели говорит, что "высвети окно с настройками" и пусть оператор задаст ненулевые параметры, т.к. с нулевыми "система" не поедет... Так вот пока оператор не задаст всё правильно, то бит и останется включенным, ну а всё остальное (код) пусть работает - зачем его тормозить-то?
    Выходит, что лучшим способом будет "запихнуть эту проверку" в функциональный блок и, по ходу цикла, входить и проверять на "ненулевые" значения и зажигать бит (или не зажигать)... но а в таком случае получится выйти из этого ФБ и продолжить выполнять POU - тут я еще не пробовал... а может уже кто-то попробовал так?
    Без RETURN; вы можете взять любой последний код (сегодня 2 варианта уже дали) и использовать в середине программы. 1 Массивы.jpg
    Программа не остановится, хоть в ФБ, хоть где вставьте. Переменная stop будет активна и массив бит (аварий) покажет где нули есть.
    С разными переменными можно проверить все массивы на 0, после исправления массивов, переменные (типа stop и массивы аварий) сбросятся сами.
    Последний раз редактировалось kondor3000; 02.05.2025 в 22:27.

  8. #28

    По умолчанию

    Цитата Сообщение от kondor3000 Посмотреть сообщение
    Тогда уж так, и все аварии и Стоп
    Код:
    stop:=FALSE;                          
    FOR i:=1 TO 6 DO
    alarm[i]:= rParam_[i] =0 ;       
    stop := stop OR alarm[i];         
    END_FOR
    Извините, но встал в ступор =))) меня чуть синтаксис вводит в заблуждение этих двух строчек (я только вступаю в ST) и нужно много читать/пробовать, а тут прям очень-новенькое:

    alarm[i]:= rParam_[i] =0; => если рассуждать,- то в массив alarm[i] (который булевый) запишется что??? не понимаю=( ведь в rParam_[i] находятся значения REAL...
    stop := stop OR alarm[i]; => в бит stop будет записываться он же, или нули из массива alarm[i], если они там находятся, т.е. он будет всегда FALSE пока в массиве alarm[i] будут нули, а если в массиве будет ненулевое значение, то он станет TRUE ... так?

    обновление:
    alarm[i]:= rParam_[i] =0; = это проверка! если rParam_[i] =0 не выполняется, то возвращает TRUE, а если выполняется то возвращает FALSE, т.е. в alarm[i] будет возвращаться результат проверки.
    .
    Откланялся =)
    пошел дальше изучать... где нибудь бы литературу правильную взять/найти по ST =)) а лучше что-то типо видеоуроков.
    Последний раз редактировалось goldenlife; 02.05.2025 в 22:27.

  9. #29

    По умолчанию

    Цитата Сообщение от goldenlife Посмотреть сообщение
    Извините, но встал в ступор =))) меня чуть синтаксис вводит в заблуждение этих двух строчек (я только вступаю в ST) и нужно много читать/пробовать, а тут прям очень-новенькое:
    alarm[i]:= rParam_[i] =0; = это проверка! если rParam_[i] =0 не выполняется, то возвращает TRUE, а если выполняется то возвращает FALSE, т.е. в alarm[i] будет возвращаться результат проверки.
    .
    Откланялся =)
    пошел дальше изучать... где нибудь бы литературу правильную взять/найти по ST =)) а лучше что-то типо видеоуроков.
    Выше скрин с работой, проверка в 2 массивах.
    ST изучают только основы, далее применение на примерах.

  10. #30

    По умолчанию

    Цитата Сообщение от goldenlife Посмотреть сообщение
    Извините, но встал в ступор =)))...
    Откланялся =)
    пошел дальше изучать... где-нибудь бы литературу правильную взять/найти по ST =)) а лучше что-то типо видеоуроков.
    Технологию и алгоритмы программирования можете изучать практически на любом языке (например на си).
    Конкретно для ST достаточно изучить его операторы и синтаксис - в справке на тот-же кодесис достаточно много описаний, даже с небольшими примерами.
    Вот завалялась ещё брошюрка
    Вложения Вложения

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

Похожие темы

  1. Работа с массивами
    от Леонид в разделе ПЛК1хх
    Ответов: 31
    Последнее сообщение: 30.05.2020, 23:13
  2. CoDeSys работа с массивами.
    от Роман26 в разделе Эксплуатация
    Ответов: 13
    Последнее сообщение: 10.08.2019, 07:52
  3. Работа с рецептами
    от Aleksandr в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.01.2012, 12:36
  4. Работа с массивами
    от MerlinLegacy в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 08.08.2011, 13:41
  5. подскажите по работе с массивами
    от alexval2006 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 11.03.2010, 15:36

Ваши права

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