-> Hier kostenlos registrieren
Guten Tag,
Ich habe zwei Fragen:
die 1. ist schnell beantwortet:
Ich möchte Variabel auf ein DB zugreifen z.B. Var1 := MyDB.DX[Var_Byte,VarBit]. Soweit so gut.
Nun möchte ich aber die adresse vorher mathematisch berechnen. ich habe z.B 2 bytes (0.0 - 0.7 und 1.0 und 1.7) in dem DB hinterlegt.
ich habe dann zum beispiel eine Formel: Var_Byte_And_Bit := 2*x .... für x = 6 hätte man ein Wert von 12. 12 entspricht normalerweise dem Bit 1.3. also hätte ich stehen:
mit Variable: Var := MyDB.DX[Var_Byte_And_Bit] und mit zahlen ersetzt für x = 6 MyDB.DX[12]
und jetzt meine eigentliche frage ist dieses DX[12] = DX[1.3] bzw für Var_Byte = 1 und Varbit = 3 ??? ist das das gleiche ?
die zweite Frage:
ich habe 2 Datenbausteine DB1 und DB2. Nun möchte ich ein Datenfeld von 10 Byte oder 80 bit vom DB1 mit dem Datenfeld aus DB2 vergleichen. wenn die gleich sind soll einfach ein Boolscher ausgang geschaltet werden.
ich habs mal so versucht:
Repeat
If DB1.DX[Var_Byte_And_Bit] = DB2.DX[Var_Byte_And_Bit] Then
Var_Byte_And_Bit := Var_Byte_And_Bit +1 ;
End_IF;
Until Var_Byte_And_Bit = 80;
End_Repeat;
If Var_Byte_And_Bit = 80 then
Ergebnis := 1 ;
End_if;
oder
For Var_Byte_And_Bit := 0 To 80 Do
If DB1.DX[Var_Byte_And_Bit] = DB2.DX[Var_Byte_And_Bit] Then
ja und jetzt weiss ich nicht weiter, weil ja nur jedes einzelne bit abgefragt wird. ich will aber dass alle 80 bits abgefragt werden und wenn die alle richtig sind soll das Ergebnis := 1 gesetzt werden
Hoffe das war nicht zu umständlich erklärt. Die aufgabe im im allgemeinen lautet so:
Man hat eine Variable Anzahl an Spannern. diese Spanner sollen für eine Variable Anzahl an Schritten je nach schritt in 2 Stellungen gefahren werden.
Es soll z.b in Schritt 1: spanner 1 in Arbeitsstellung sein, Sp2 ind Grundstellung, Sp3 in AS, Sp4 in AS, Sp5 in GS usw.
in Schritt 2: Sp1 in Gs, Sp2 in AS, Sp3 in AS, Sp4 in Gs usw.
ich hab dazu mittels UDT's 2 DB's angelegt die mit max 20 Schritten und 100 Spannern vorbelegt sind. In dem DB1 sind die Sollwerte im DB2 die Istwerte.
Dazu sollen die max 100 Spanner schritt für schritt verglichen werden. Und erst in den nächsten Schritt gehen wenn der erste Schritt erfüllt ist.
Danke schonmal
Ich habe zwei Fragen:
die 1. ist schnell beantwortet:
Ich möchte Variabel auf ein DB zugreifen z.B. Var1 := MyDB.DX[Var_Byte,VarBit]. Soweit so gut.
Nun möchte ich aber die adresse vorher mathematisch berechnen. ich habe z.B 2 bytes (0.0 - 0.7 und 1.0 und 1.7) in dem DB hinterlegt.
ich habe dann zum beispiel eine Formel: Var_Byte_And_Bit := 2*x .... für x = 6 hätte man ein Wert von 12. 12 entspricht normalerweise dem Bit 1.3. also hätte ich stehen:
mit Variable: Var := MyDB.DX[Var_Byte_And_Bit] und mit zahlen ersetzt für x = 6 MyDB.DX[12]
und jetzt meine eigentliche frage ist dieses DX[12] = DX[1.3] bzw für Var_Byte = 1 und Varbit = 3 ??? ist das das gleiche ?
die zweite Frage:
ich habe 2 Datenbausteine DB1 und DB2. Nun möchte ich ein Datenfeld von 10 Byte oder 80 bit vom DB1 mit dem Datenfeld aus DB2 vergleichen. wenn die gleich sind soll einfach ein Boolscher ausgang geschaltet werden.
ich habs mal so versucht:
Repeat
If DB1.DX[Var_Byte_And_Bit] = DB2.DX[Var_Byte_And_Bit] Then
Var_Byte_And_Bit := Var_Byte_And_Bit +1 ;
End_IF;
Until Var_Byte_And_Bit = 80;
End_Repeat;
If Var_Byte_And_Bit = 80 then
Ergebnis := 1 ;
End_if;
oder
For Var_Byte_And_Bit := 0 To 80 Do
If DB1.DX[Var_Byte_And_Bit] = DB2.DX[Var_Byte_And_Bit] Then
ja und jetzt weiss ich nicht weiter, weil ja nur jedes einzelne bit abgefragt wird. ich will aber dass alle 80 bits abgefragt werden und wenn die alle richtig sind soll das Ergebnis := 1 gesetzt werden
Hoffe das war nicht zu umständlich erklärt. Die aufgabe im im allgemeinen lautet so:
Man hat eine Variable Anzahl an Spannern. diese Spanner sollen für eine Variable Anzahl an Schritten je nach schritt in 2 Stellungen gefahren werden.
Es soll z.b in Schritt 1: spanner 1 in Arbeitsstellung sein, Sp2 ind Grundstellung, Sp3 in AS, Sp4 in AS, Sp5 in GS usw.
in Schritt 2: Sp1 in Gs, Sp2 in AS, Sp3 in AS, Sp4 in Gs usw.
ich hab dazu mittels UDT's 2 DB's angelegt die mit max 20 Schritten und 100 Spannern vorbelegt sind. In dem DB1 sind die Sollwerte im DB2 die Istwerte.
Dazu sollen die max 100 Spanner schritt für schritt verglichen werden. Und erst in den nächsten Schritt gehen wenn der erste Schritt erfüllt ist.
Danke schonmal