Ура! Вроде все получилось. Все работает. Только вот компилятор говорит- Предупреждение 1503:POU не имеет выходов. Результату присвоено значение TRUE. Так и должно быть? Теперь буду учиться создавать FB.
Наверное в вашем ФБ есть входы и нет выходов. Если так и было задумано, то нормально. Но обычно ФБ выполняет какую-то отдельую задачу. И для этого ему нужды входные параметры. После выполнения он должен выдать результат, вызвавшей его программе, для этого нужны выходные параметры. Если нет выходных параметров, то очевидно, что ФБ использует глобальные переменные, которые доступты везде. Старайтесь не использовать глобальные переменные, только в крайнем случае, если это оправдано. Это избавит вас от ошибок, которые трудно будет найти.
А , чё это ?????????
Если нет выходных параметров то очевидно головотяпство , но на выполнение программы это не влияет .
Причем здесь глобальные переменные ???? В чем они виноваты???? Если вы претендуете на роль учителя и благодетеля своими примерами - корректно выражайтесь. Человеку , не желающему разбиратся , "глобальная переменная" ни о чем не говорит.
Например в моих проектах 90% переменных глобальные и все работает .
Мож книгу написать . Так её читать не будут или начнут и бросят , ведь может быть на форуме найдется добрячёк , который весь код напишет.
Уважаемый Sergey666. Я еще совсем новичек и если знаете-подскажите, как это делает amn идругие учасники. Но нравоучения,да еще в такой форме,поменьшей мере даже в чем то оскарбительны.Теперь по теме.Я пытаюсь создать не FB a POU Вкратце еще раз. большая программа с входами и выходами все работает. Хочу разбить ни подпраграммы .Делаю следующее:1.Создаю новые POU с названиями
2 В PLC_PRG в новой строке создаю напр. TON переименовую его в название POU
3.Принимает такой вид(во вложении)
4.компилирую-выдает предупреждения по каждому POU. Это нормально?
Хороший тон программирования предполагает использовать локальные переменные всюду, где это возможно, и стараться не использовать глобальных переменных вообще, кроме случаев, где это оправдано. Разве не так?
На роль учителя мне еще рано претендовать. Мне нравится этот форум за то, что тут "живут" отзывчивые люди. Мне помогают, и я стараюсь помочь, чем могу. Заодно и учусь в процессе.
С уважением, Михаил.
Но если одни и те же переменные в разных POU то как без глобальных. Локальные ведь не будут видны . И вы мне скажите предупреждения которые выдает компилятор. ЭЭЭто нормально. Или должно быть 0 ошибок 0 предупреждений. проект в LD.
В основной программе (PLC_PRG) у вас есть какие-то переменные. Чтобы они стали доступны POU надо их передать ему в качестве параметров. Чтобы такая возможность появилась, в POU объявляете переменные следующим образом:
VAR_INPUT
var1: BOOL; (*первый входной параметр блока*)
var2: BOOL; (*второй входной параметр блока*)
END_VAR
VAR_OUTPUT
q1: BOOL; (*первый выходной параметр блока*)
q2: BOOL; (*второй выходной параметр блока*)
END_VAR
VAR
var3: BOOL; (*первая локальная переменная блока*)
var4: BOOL; (*вторая локальная переменная блока*)
END_VAR
В этом случае в блоке POU появятся дополнительные входы и выходы. Обратите внимание, у вас в примере у блоков нет параметров и поэтому они выглядят пустыми квадратиками.
Кстати, имена переменных, которые вы передаете в качестве параметров в POU из основной программы не обязательно должны быть такими же как и объявленные внутри POU.
Если сделаете все правильно будет 0 ошибок и 0 предупреждений.