Also, ich hab mal was probiert:
Wie in der Hilfe schon steht, ist EXTERNAL immer die
lokale Deklaration einer globalen Variable, welche in der globalen Liste mit VAR_GLOBAL deklariert wird.
Man kann eine globale Variable auch direkt ohne eine lokale EXTERNAL-Deklaration nutzen. Dann wird sie mit "NameDerGlobalenListe.VarName" angezeigt, taucht aber nicht in der lokalen Liste auf.
Eine VAR_EXTERNAL hat
immer ein Pendant mit gleichem Namen in der globalen Liste.
VAR_EXTERNAL_PG und VAR_EXTERNAL_FB (sowie "GLOBAL") sind einschränkungen. Normalerweise werden alle Globalen Varibalen aus der Liste "Global_Variables" als Task-unabhängige Variablen abgelegt (VAR_GLOBAL). Jede Programminstanz hat noch eine eigene globale Liste (mit Namen der Programminstanz) mit VAR_GLOBAL_PG drin.
In der Programm-Instanz kannste dann auswählen, ob du die globale Variable der "wirklich" globalen Liste, oder die aus der Liste der Programminstanz wählen willst.
Ebenso verhält es sich bei Funktionsbausteininstanzen.
Die Unterschiede bestehen bei der Gültigkeit.
Liste "Global_Variables" : überall gültig
Liste "Instanz.GlobaleVariablen": nur für die Programminstanz gültig (in allen FBs usw.)
Liste "FB.GlobaleVariablen": In jeder Instanz dieses FBs gültig mit globaler Verwendung für diese FBs.
Über den Sinn dieser Unterscheidung kann man streiten, aber es gibt sie dort.
Pack alle Globalen Variablen in die Liste "Global_Variables" und gut is
Hilft das ?
MfG
Chris