Просмотр полной версии : Выполнение кода FB поэтапно
Иван Светлов
15.11.2023, 09:30
Здравствуйте, недавно руководитель проекта подкинул задачу, а именно сделать поэтапное выполнение кода функционального блока. По его словам возможно выполнение функции в несколько проходов. К примеру: есть массив структур на 5000 элементов, в каждом цикле (цикл ПЛК) записать 50 элементов пока не завершится запись всех.
-Цель задачи, снизить нагрузку на ПЛК, во время выполнения кода ФБ.
Попытка привязать выполнение отдельных частей кода блока к счетчику циклов ПЛК успехом не увенчалась.
Вопрос в следующем, возможно ли в принципе реализовать данную идею, если да, то хотелось бы узнать хотя бы в каком направлении копать?
П.С. Я в Codesys (да и в программировании в целом) новичок поэтому прошу не удивляться, если где то подтупливаю. =)
МихаилГл
15.11.2023, 09:35
Пиши на st...
И что это за объект, где 5000 структур?
Работал на обогатительных фабриках, и там не более 500 структур на всё оборудование...
А во вторых, как вы снизите нагрузку? Просто вместо 1 цикла у вас всё будет выполняться 100 циклов... По времени то же самое и выйдет.
Иван Светлов
15.11.2023, 09:39
По факту структур будет около 100 - 200, но руководитель приказал тестировать на 5000.
Обычно так выполняют циклы. Ставишь условие по которому выполняешь действия с массивом, обнуляешь счетчик. Обрабатываешь элемент массива с индексом равным текущему значению счетчика. Затем инкрементируешь счетчик. Проверяешь счетчик на максимум элементов массива. Если максимум то сбрасываешь условие выполнения. Как то так.
МихаилГл
15.11.2023, 09:42
Обычно так выполняют циклы. Ставишь условие по которому выполняешь действия с массивом, обнуляешь счетчик. Обрабатываешь элемент массива с индексом равным текущему значению счетчика. Затем инкрементируешь счетчик. Проверяешь счетчик на максимум элементов массива. Если максимум то сбрасываешь условие выполнения. Как то так.
Поэтому я и написал, чтоб использовал st.
Я на LD так делаю. И не в Кодесис. Пофиг на чем. Если знаешь что хочешь получить.
CASE'ом "пройтись" 5000/n?
МихаилГл
15.11.2023, 10:14
Я на LD так делаю. И не в Кодесис. Пофиг на чем. Если знаешь что хочешь получить.
Я на LD так делал в rslogix5000, там специфический LD и позволяет такое делать. Самая удобная среда программирования, которую я видел.
Мне CX-Programmer больше зашел.
Я на LD так делал в rslogix5000, там специфический LD и позволяет такое делать. Самая удобная среда программирования, которую я видел.
Не работал с rslogix5000, но мне LD-редактор зашел у GE, в среде Machine Edition. Прям одно удовольствие "стряпать" релейные схемы.
Даже на ПРке можно делать вычисления каждый цикл, ну просто ждать 5000 циклов придется :) ну или разбить на несколько действий в рамках одного цикла. Можно даже настроечный параметр ввести, по 10-ть, по 20-ть и т.д.
Здесь нужно понимать для чего это делается. В моем случае это было необходимо при редактировании уставок оператором. При этом пересчитывался график кусочно - линейной аппроксимации. Время этой процедуры было не критично. Мне гораздо важнее было иметь стабильное время скана программы.
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot