Просмотр полной версии : Codesys 3.5 - FB или FUN? Что оптимальнее использовать???
Androidmatis
06.09.2024, 11:37
Добрый день.
Занимаюсь написанием программы на ПЛК210 и задался вопросом:
А как писать код более оптимизированно?
При написании в виде FB четко видна структура, более понятно разделение переменных на входные, выходные, внутренние.
При написание в виде структуры, которую потом обрабатывать функцией можно достичь более оптимального использования памяти, за счет возможности распределения переменных одного типа рядом в структуре.
Подскажите, какая разница, с точки зрения нагрузки на процессор, в использовании FB и FUN?
Вряд ли это непосредственно связанные вещи - нагрузка процессора и ваш выбор между FB и FUN.
А внутренние состояния при использовании функций вы тоже будете в структурах хранить?
Androidmatis
06.09.2024, 11:55
Если они требуют сохранения данных в течении нескольких циклов обработки то да. Если же есть переменные, которые необходимы только во время обработки (например какой-нибудь промежуточный буфер), то они будут расположены внутри функции, чтобы при выходе из функции они просто исчезали.
Если они требуют сохранения данных в течении нескольких циклов обработки то да. Если же есть переменные, которые необходимы только во время обработки (например какой-нибудь промежуточный буфер), то они будут расположены внутри функции, чтобы при выходе из функции они просто исчезали.
Можно использовать ФБ и INOUT для работы со структурой
Androidmatis
06.09.2024, 12:13
Можно использовать ФБ и INOUT для работы со структурой
Как вариант. При вызове функции, в оперативной памяти выделяется место под переменные функции, а после выхода они удаляются, итак происходит при каждом вызове. А при создании блока память выделяется один раз и до конца работы программы. И мне был интересен момент как раз таки того, на сколько сильно отличается нагрузка процессора при постоянном вызове функции и выделении памяти для функции от вызова блока, который уже жестко определен в памяти.
ПОЖАЛУЙСТА! Я написал для новичков отличную статью про разницу между FUN и FB!
Вот она: https://cs-cs.net/funkciya-fun-i-funkcionalniy-blok-fb-codesys-owenlogic
ПОЖАЛУЙСТА почитай её! Там прям как раз есть разные примеры применения и даже про VAR_IN_OUT рассказано.
Про память переживать не надо. CodeSys 3.5 - это НЕ микроконтроллер, и там выделение мелких объёмов памяти не так важно, как в микроконтроллерах.
Как вариант. При вызове функции, в оперативной памяти выделяется место под переменные функции, а после выхода они удаляются, итак происходит при каждом вызове. А при создании блока память выделяется один раз и до конца работы программы. И мне был интересен момент как раз таки того, на сколько сильно отличается нагрузка процессора при постоянном вызове функции и выделении памяти для функции от вызова блока, который уже жестко определен в памяти.
Я думаю, что в подавляющем большинстве задач ПЛК (тем более такого как ПЛК210) более важен понятный легко модифицируемый и поддерживаемый код, чем ловля микросекунд, получение низкой нагрузки на процессор и перетасовка данных в структурах для экономии памяти.
Конечно, если в программе производится много вызовов одного и того-же ФБ или функции, на его оптимизацию имеет смысл потратить время
Емельянов Кирилл
07.09.2024, 03:02
PRG и структуры в VAR IN OUT тоже прекрасно работают
Powered by vBulletin® Version 4.2.3 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot