Hallo ihr,
ich möchte einen Button implementieren, der, sobald er gedrückt wird, ein Array zurücksetzt.
Dazu habe ich beim Element Konfigurieren von dieser Schaltfläche unter Eingabe -> Programm ausführen folgendes geschrieben:
INTERN ASSIGN PLC_PRG.array1 := (PLC_PRG.array2)
(array1 : ARRAY[1..7] OF BOOL; (array 2 ebenso) )
Sobald ich das teste, läuft es aber nicht (egal ob simuliert oder über die PLCWinNT).
Wieso?
Probier ich folgendes:
INTERN ASSIGN PLC_PRG.array1[1] := (PLC_PRG.array2[1])
so läuft es - halt nur für die erste Stelle.
Geht INTERN ASSIGN generell nicht für komplette Arrays? Das wäre sehr schade. Wie könnte man das vielleicht anders implementieren?
Danke für eure Hilfe.
Grüße
Sara
Talk.ru: 1
Hallo
Da hast du wohl Recht, das geht nicht für komplette Arrays.
Im Quellcode übrigens auch nicht.
Die Lösung sieht so aus:
INTERN ASSIGN PLC_PRG.array1[2] := (PLC_PRG.array2[2])
INTERN ASSIGN PLC_PRG.array1[3] := (PLC_PRG.array2[3])
usw...
Gruß Erik
Talk.ru: 1 Talk.ru: 2 Talk.ru: 3
oder eben per Button ein Flag setzen, das dann eine Schleife startet.
if bClearArray then
FOR i:=1 to 7 do
PLC_PRG.array1[i] := (PLC_PRG.array2[i])
END_FOR
bClearArray := false;
end_if
Hi Erik,
schade schade. Das wäre mal ein schönes feature...
Danke!
Hi Sara
Ob das schön wäre sei mal dahingestellt...
Was wäre denn, wenn deine beiden Arrays nicht die selbe Größe haben ???
Ich kenne keine Programmiersprache in der so was zugelassen ist.
Gruß
Erik
na, die müssen schon dieselbe Größe haben!
so was würde ja auch nicht in einem CoDeSys-Baustein gehen.
Aber mir ist auch schon aufgefallen, dass Anweisungen in der Visu nicht syntaktisch geprüft werden, was ich auch schade finde.
Stellt das Prüfen denn ein Problem dar?
Hi
Ob das ein Problem darstellt, kann ich dir auch nicht sagen. Ich schreib ja den Compiler nicht...
Log in to post a comment.
Hallo ihr,
ich möchte einen Button implementieren, der, sobald er gedrückt wird, ein Array zurücksetzt.
Dazu habe ich beim Element Konfigurieren von dieser Schaltfläche unter Eingabe -> Programm ausführen folgendes geschrieben:
INTERN ASSIGN PLC_PRG.array1 := (PLC_PRG.array2)
(array1 : ARRAY[1..7] OF BOOL; (array 2 ebenso) )
Sobald ich das teste, läuft es aber nicht (egal ob simuliert oder über die PLCWinNT).
Wieso?
Probier ich folgendes:
INTERN ASSIGN PLC_PRG.array1[1] := (PLC_PRG.array2[1])
so läuft es - halt nur für die erste Stelle.
Geht INTERN ASSIGN generell nicht für komplette Arrays? Das wäre sehr schade. Wie könnte man das vielleicht anders implementieren?
Danke für eure Hilfe.
Grüße
Sara
Related
Talk.ru: 1
Hallo
Da hast du wohl Recht, das geht nicht für komplette Arrays.
Im Quellcode übrigens auch nicht.
Die Lösung sieht so aus:
INTERN ASSIGN PLC_PRG.array1[1] := (PLC_PRG.array2[1])
INTERN ASSIGN PLC_PRG.array1[2] := (PLC_PRG.array2[2])
INTERN ASSIGN PLC_PRG.array1[3] := (PLC_PRG.array2[3])
usw...
Gruß Erik
Related
Talk.ru: 1
Talk.ru: 2
Talk.ru: 3
oder eben per Button ein Flag setzen, das dann eine Schleife startet.
if bClearArray then
FOR i:=1 to 7 do
END_FOR
bClearArray := false;
end_if
Hi Erik,
schade schade. Das wäre mal ein schönes feature...
Danke!
Hi Sara
Ob das schön wäre sei mal dahingestellt...
Was wäre denn, wenn deine beiden Arrays nicht die selbe Größe haben ???
Ich kenne keine Programmiersprache in der so was zugelassen ist.
Gruß
Erik
na, die müssen schon dieselbe Größe haben!
so was würde ja auch nicht in einem CoDeSys-Baustein gehen.
Aber mir ist auch schon aufgefallen, dass Anweisungen in der Visu nicht syntaktisch geprüft werden, was ich auch schade finde.
Stellt das Prüfen denn ein Problem dar?
Grüße
Sara
Hi
Ob das ein Problem darstellt, kann ich dir auch nicht sagen. Ich schreib ja den Compiler nicht...
Gruß
Erik