Step 7 IN-OUT-Variabletyp als ARRAY

Vokal12

Level-1
Beiträge
27
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute,
bin neu mit S7 und habe folgenges Problem

hier ist mein FB1:
....
Var_IN_OUT
Gate: ARRAY [1..50] of UDT1;// UDT1 hat 6 Parameter
end_var
....

im OB1 habe ich folgenge Zuweisung gemacht: Gate:=DB2.Gate
aber im DB1 sehe ich keine Änderung von den 6 UDT-Parametern.

wie kann ich es gut machen?

LG,
Vokal12
 
Außer der Schnittstelle beschreibst du nichts. Wer soll jetzt erraten, wie du auf das Array zugreifst... KOP, FUP, AWL, SCL..??? Direkt, indirekt..?? Ein bisschen mehr darf es schon sein...
 
Symbolischer Zugriff in SCL da sollte das normal schon klappen.

Gib mal bisschen was von deinem CODE preis, sonst bleibt das hier eher Rätselraten.

Abgesehen davon :

hier ist mein FB1:
....
Var_IN_OUT
Gate: ARRAY [1..50] of UDT1;// UDT1 hat 6 Parameter
end_var
....

im OB1 habe ich folgenge Zuweisung gemacht: Gate:=DB2.Gate // DB 2
aber im DB1 sehe ich keine Änderung von den 6 UDT-Parametern. // DB 1 ??

wenn es sich nicht um einen Tippfehler handelt, warum sollte sich im DB1 etwas ändern?
 
VAR_INPUT
Nummer:INT;
END_VAR
VAR_IN_OUT
add:INT;
GATE: ARRAY[1..100] OF UDT1;
END_VAR
GATE[Nummer].way:=DB1.GATE[Nummer].way;
GATE[Nummer].Deltaway:=DB1.GATE[Nummer].Deltaway;

GATE[Nummer].way:=GATE[Nummer].way+add; // Bei einer Änderung von Gate-Way um add
GATE[Nummer].Deltaway:=GATE[Nummer].Deltaway+add;
END_FUNKTION_BLOCK











Symbolischer Zugriff in SCL da sollte das normal schon klappen.

Gib mal bisschen was von deinem CODE preis, sonst bleibt das hier eher Rätselraten.

Abgesehen davon :



wenn es sich nicht um einen Tippfehler handelt, warum sollte sich im DB1 etwas ändern?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hier ist mein FB1:
....
Var_IN_OUT
Gate: ARRAY [1..50] of UDT1;// UDT1 hat 6 Parameter
end_var
....

im OB1 habe ich folgenge Zuweisung gemacht: Gate:=DB2.Gate
aber im DB1 sehe ich keine Änderung von den 6 UDT-Parametern.
VAR_INPUT
Nummer:INT;
END_VAR
VAR_IN_OUT
add:INT;
GATE: ARRAY[1..100] OF UDT1;
END_VAR
GATE[Nummer].way:=DB1.GATE[Nummer].way;
GATE[Nummer].Deltaway:=DB1.GATE[Nummer].Deltaway;


GATE[Nummer].way:=GATE[Nummer].way+add; // Bei einer Änderung von Gate-Way um add
GATE[Nummer].Deltaway:=GATE[Nummer].Deltaway+add;
END_FUNKTION_BLOCK
Tippst Du Deinen Code hier aus dem Gedächtnis oder ist der tatsächlich aus Deinem Programm kopiert?

- die Größe und Indexzählung des deklarierten Arrays und des beim Aufruf übergebenen Arrays müssen exakt gleich sein: ARRAY[1..100] OF UDT1
- im FB kopierst Du von DB1 zum übergebenen DB2 und innerhalb des DB2 - dabei ändert sich im DB1 natürlich nichts
- wieso kopierst Du überhaupt von DB1 zu DB2? Das wird ja direkt danach überschrieben
- Falls Du tatsächlich mit 2 Arrays arbeiten wolltest: Du solltest beide Arrays als Parameter übergeben oder auf beide direkt zugreifen, gemixt sieht scheixxe aus.
- auch wenn in SCL die Groß/Kleinschreibung von Variablennamen egal ist, solltest Du im Baustein überall die gleiche Schreibweise benutzen.

Harald
 
Zurück
Oben