В функциях ST не инициализируются значения по умолчанию во входных переменных, в функциональных блоках все нормально
В функциях ST не инициализируются значения по умолчанию во входных переменных, в функциональных блоках все нормально
Я не волшебник, я только учусь...
Функции не имеют памяти, это азы программирования. На входы, каждый цикл, надо подавать значения, для её работы.
Инициализировать входы внутри невозможно, они перезапишутся значениями на входе.
Вы не баг нашли, а расписались в незнании теории.
У вас ещё много открытий впереди, в вашем примере на выходе функции всегда будет 0, даже если на вход подать True.
Последний раз редактировалось kondor3000; 29.10.2025 в 14:13.
AllXXX Держи тебе подробное (моё) чтиво: https://cs-cs.net/funkciya-fun-i-fun...esys-owenlogic
Если потратишь чуток времени - дофига вопросов отпадёт про функции и FB
kondor3000 правильно пишет всё!
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Спасибо обязательно почитаю на досуге
Я не волшебник, я только учусь...
Нет. Желательно первым делом почитать, чтобы закрыть 90% всех вопросов
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Ура! Я писал сам, когда разбирался!
Ещё добавлю комментарий вот какой: В ДРУГИХ средах разработки параметры по умолчанию для функций могут работать!
То есть, это в OwenLogic не реализовано (или сделано криво).
Например, в CodeSys последних версий (SP17) можно объявить функцию как
И вызывать так:Код:FUNCTION MyFun VAR_INPUT wParam1 : WORD; wParam2 : WORD := 10; END_VAR
Код:MyFun(10, 30); MyFun(200);
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab
Типа это в ST только-только добавили, в то время как в других языках это давно было?
Или это было, но никто не придавал значению?
Развитие ST тогда радует![]()
kondor3000 Не понял! Ни разу она не бестолковая! Это опциональные аргументы. Как во всех других языках.
Ты чего? Ни разу этим не пользовался вообще нигде? Я удивлён: ты же прям гуру и спец форума.
Опциональные аргументы используют тогда, когда не надо их менять на свои, и когда стандартные значения устраивают
Например, у меня есть функция, которая делает из WORD тип TIME, и имеет такие аргументы:
wValue : WORD;
bTimeInMunitues : BOOL := FALSE;
Соответственно если я вызываю её так:
CSWordToTime(132) - то знаю, что второй аргумент подставится как FALSE
А если
CSWordToTime(132, TRUE) - то явно подставляю аргумент как мне надо
Это даже в WinAPI так было ещё с WIn 3.11
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab