Страница 390 из 415 ПерваяПервая ... 290340380388389390391392400 ... ПоследняяПоследняя
Показано с 3,891 по 3,900 из 4917

Тема: разные вопросы новичка

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

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

    По умолчанию

    Цитата Сообщение от Але-ндр Посмотреть сообщение
    Возможно я изобретаю велосипед, подскажите как реализовать правильно эту функцию.

    И от сюда вытекает второй вопрос. В программе мне необходимо использовать 2 блока. 1 это инициализация (выполняется один раз при старте) и 2 в цикле. Я использовал оператор IF c защелкой. (решение мне самому не нравится). Сейчас играюсь с функциями WHILE и REPEAT UNTIL. мне кажется они более правильные.
    Есть ли какие-то более гибкие и правильные реализации этих двух вопросов?
    Даже если не устраивают готовые решения, посмотреть как сделана инициализация и как сохранять данные можно было.
    Пример Опер таймера (наработка) на ST и ФБ времени https://owen.ru/forum/showthread.php...l=1#post443096

    И вы конечно изобретаете велосипед, IF наше всё, а с WHILE очень аккуратно.
    Последний раз редактировалось kondor3000; 27.03.2026 в 07:51.

  2. #2

    По умолчанию

    Але-ндр Варианты, как понял тебя я (я делал такой блок на FBD, и он отлично работает):
    1. Да! В коде ST положение строк ВАЖНО. Потому что они выполняются сверху вниз.
    И если тебе надо сначала получить данные из VAR_IN_OUT, а потом выдать - то строки поулчения должны быть выше.
    2. Если писать счётчик часов на FBD, то можно объявить энергонезависимую переменную прям внутри макроса (я так и сделал).
    3. WHILE - это цикл. Я не уверен, что он нужен в этом блоке.
    Clip_3.jpg Clip_4.jpg
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

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

    По умолчанию

    ДА.
    Как это не парадоксально. но вся программа у меня также написана на FBD и уже давно работает (больше 2 лет).
    А тут решил ( как говорится) ради самоистязания (в свободное время) изучить ST, и переписать уже работающую программу. (на самом деле готовлю обновление).
    По этому все вопросы исключительно по ST.
    Самая большая проблема что я не смог найти данных о времени выполнения тех или иных функций (тайминги реального процессора) хотя в принципе они не критичны. Опытным путем определил что Vaur OUT := Var IN корректно работает в первых трех строках.
    И до сих пор не разобрался в приоритетах выполнения (последовательности функциональных блоков).

    Почему разбиваю выполнение на 2 блока? На самом деле это мая (в некотором смысле ) прихоть не хочу нагружать цикл тупым переписываниями 14 переменных одними и теми же данными, обычно они прописываются при инициализации. К сожалению при определении переменных им можно задавать только константы. На сколько я помню (могу ошибаться, не хочу лезть в справочник) на запись уходит 3 такта процессор (3х14=42) а на функцию IF около 10.
    Последний раз редактировалось Але-ндр; 27.03.2026 в 00:54.

  4. #4

    По умолчанию

    Цитата Сообщение от Але-ндр Посмотреть сообщение
    ДА.
    Как это не парадоксально. но вся программа у меня также написана на FBD и уже давно работает (больше 2 лет).
    А тут решил ( как говорится) ради самоистязания (в свободное время) изучить ST, и переписать уже работающую программу. (на самом деле готовлю обновление).
    По этому все вопросы исключительно по ST.
    Самая большая проблема что я не смог найти данных о времени выполнения тех или иных функций (тайминги реального процессора) хотя в принципе они не критичны. Опытным путем определил что Vaur OUT := Var IN корректно работает в первых трех строках.
    И до сих пор не разобрался в приоритетах выполнения (последовательности функциональных блоков).

    Почему разбиваю выполнение на 2 блока? На самом деле это мая (в некотором смысле ) прихоть не хочу нагружать цикл тупым переписываниями 14 переменных одними и теми же данными, обычно они прописываются при инициализации. К сожалению при определении переменных им можно задавать только константы. На сколько я помню (могу ошибаться, не хочу лезть в справочник) на запись уходит 3 такта процессор (3х14=42) а на функцию IF около 10.
    Ситуация с "первыми тремя строчками" конечно странная - как я понимаю, при обработке ФБ его программа на ST обрабатывается полностью, прежде чем произойдёт запись в переменные, присоединённые к его выходам или начнётся обработка следующего ФБ. И поэтому все эти такты/тайминги влияют только на общее значение текущего времени обработки холста (времени цикла).

    Выбор порядка выполнения блоков остаётся за компилятором, и можно повлиять на него лишь используя линии задержки. Наверное можно считать, что ФБ связанные непосредственной линией связи - будут обработаны последовательно,. Я бы хотел, чтобы на блоках отображался порядок их выполнения (хотя бы по вызову, как например в CDS3.5)

  5. #5

    По умолчанию

    Але-ндр 1. Ой ой! Ты путаешь ПРку и микроконтроллеры. Тут НЕ надо считать такты и время цикла.
    Потому что время цикла ПРки зависит от нагруженности её программы.

    2. Внутри FUN/FB ST-код выполняется по строкам так, как написан.

    3. Зря ты морочишься. Можно же часть программы писать на ST, а часть на FBD.

    4. Про "Vaur OUT := Var IN корректно работает в первых трех строках" - показал бы весь код FBшки-то? Интересно, что же там такого ты накрутил!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  6. #6

    По умолчанию

    owen_questions.png
    Сделал программу, в режиме симуляции пытаюсь посмотреть, что происходит в той её части, что снизу справа, и есть ощущение, что эта часть даже не запускается. Для сравнения, в симуляции всей остальной программе на каждом входе и выходе показаны текущие значения, а тут их просто нет. В чём может быть дело?

  7. #7

    По умолчанию

    Скорее всего переменная level нигде не используется. Она должна направляться на выход или выводиться на экран или быть энергонезависимой. Иначе вся ветка не обсчитывается

  8. #8

    По умолчанию

    Цитата Сообщение от RockTeal Посмотреть сообщение
    Скорее всего переменная level нигде не используется. Она должна направляться на выход или выводиться на экран или быть энергонезависимой. Иначе вся ветка не обсчитывается
    Спасибо, проблема оказалось в этом!

  9. #9
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    9,900

    По умолчанию

    Цитата Сообщение от ligachad Посмотреть сообщение
    owen_questions.png
    Сделал программу, в режиме симуляции пытаюсь посмотреть, что происходит в той её части, что снизу справа, и есть ощущение, что эта часть даже не запускается. Для сравнения, в симуляции всей остальной программе на каждом входе и выходе показаны текущие значения, а тут их просто нет. В чём может быть дело?
    Для симуляции надо чтобы ваша логика имела минимальный смысл, в смысле, результат подавался на выход ПР или на экран или в энергонезависимую переменную!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  10. #10

    По умолчанию

    Здравствуйте !!!
    Подскажите есть какой то механизм внутри среды.
    Который позволяет выполнить запись или чтение 485 один раз после старта ?

Страница 390 из 415 ПерваяПервая ... 290340380388389390391392400 ... ПоследняяПоследняя

Похожие темы

  1. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 65
    Последнее сообщение: 20.08.2026, 16:52
  2. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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