TIA Skalieren

Boldi

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag!

Ich brauche kleine Hilfe von euch. Ich habe einen ArrayDB und möchte jeder Element skalieren. Ich hab so was geschrieben aber es hat Fehler. Wer kann mir weiter helfen?


FOR #i := 0 TO 71 DO
#variable_von_array:= "AnalogDB"."THIS"[#i];

SCALE(IN := #variable_von_array, HI_LIM := 150, LO_LIM := 0, BIPOLAR := FALSE, OUT => #variable_zurück);


"AnalogDB"."THIS"[#i] := #variable_zurück;

END_FOR;
 
Na du skalierst ja auch (unendlich oft) den skalierten Wert immer wieder.

Code:
FOR #i := 0 TO 71 DO
    #variable_von_array:= [COLOR=#ff0000]HIER_DEIN_UNSKALIERTER_EINGANGSWERT[/COLOR];
    
    SCALE(IN := #variable_von_array, HI_LIM := 150, LO_LIM := 0, BIPOLAR := FALSE, OUT => #variable_zurück);


    "AnalogDB"."THIS"[#i] := #variable_zurück;
    
END_FOR;

Versuchs mal damit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe so gemacht

FOR #i := 0 TO 71 DO
#variable_von_array:= "AnalogeDB"."THIS"[#i];

#fehlerinformationen :=SCALE (IN := #variable_von_array, HI_LIM := 150, LO_LIM := 0, BIPOLAR := FALSE, OUT => #variable_zurück)
;


"AnalogeDB"."THIS"[#i] := #variable_zurück;

END_FOR;
 
Was soll denn in den ArrayElementen stehen? Der Wert, wie er vor dem Skalieren ist oder der Wert, wie er nach dem Skalieren ist?
Du könntest z.B. mit 2 Arrays arbeiten. Eines für die unskalierten und das andere für die skalierten Werte.
 
Zuletzt bearbeitet:
Was soll denn in den ArrayElementen stehen? Der Wert, wie er vor dem Skalieren ist oder der Wert, wie er nach dem Skalieren ist?
Du könntest z.B. mit 2 Arrays arbeiten. Eines für die unskalierten und das andere für die skalierten Werte.

Genau so, ein Array für die unscalierten Werte, ein weites für die scalierten. Hat auch den Vorteil, dass man bei unplausiblen Werten mal in beide Array schauen kann.

@Boldi

Wie AQ3 schreibt, du nimmst die Werte im DB, scalierst sie und schreibst an die selbe Stelle im DB zurück. Das geht genau einmal, bei zweiten Mal scalierst du die schon scalierten Werte.
Oder du schreibst jeden Zyklus die Analogwerte in den DB und scalierst sie anschließend. Aber ob das wirklich nötig ist?
Wenn du mit 2 Array arbeitest, hast du in jedem Fall die bessere Übersicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beispiel.
Ich habe 72 Eingänge und muss alle skalieren. Ich kann für jeder seine eigene Funktion machen,aber ich dachte es geht auch mit Array. 72 Eingänge skaliere und in den Array rein stecke. Oder?
 
Beispiel.
Ich habe 72 Eingänge und muss alle skalieren. Ich kann für jeder seine eigene Funktion machen,aber ich dachte es geht auch mit Array. 72 Eingänge skaliere und in den Array rein stecke. Oder?
Wo sind denn Deine 72 Eingänge? Du nimmst doch gar nicht die 72 Eingänge, sondern holst nacheinander aus den 72 "Schubladen" Deines Arrays irgendwelche Werte, skalierst also Werte, von denen wir gar nicht wissen, ob sie bereits oder noch den 72 Eingängen entsprechen und legst die (zum x-ten Male?) skalierten Werte wieder in denselben Schubladen ab.
Wie/wo kommen die 72 Eingänge ins Array und wo merkst Du Dir, ob die ArrrayElemente schon skaliert wurden oder noch nicht?
 
Na ja, ich hab jetzt so gemacht und habe genauso was ich brauchte)

FOR #i := 0 TO 71 DO

#variable_von_array := WORD_TO_INT(PEEK_WORD(area := 16#81,
dbNumber := 0,
byteOffset := #i * 2));

#fehlerinformationen := SCALE(IN := #variable_von_array, HI_LIM := 150, LO_LIM := 0, BIPOLAR := FALSE, OUT => #variable_zurück);

"TemperaturenDB"."THIS"[#i] := #variable_zurück;

END_FOR;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na ja, ich hab jetzt so gemacht und habe genauso was ich brauchte)

FOR #i := 0 TO 71 DO

#variable_von_array := WORD_TO_INT(PEEK_WORD(area := 16#81,
dbNumber := 0,
byteOffset := #i * 2));
Das machst Du aber bei Dir zuhause und nicht in einer richtigen Industrieanlage? ;)
Wenn durch solch undurchsichtige Programmierung Dein Haus an Wert verliert ist es Dein Problem. Wenn im Problemfall das SPS-Programm verschrottet und neu programmiert wird, dann muß das jemand (teuer?) bezahlen. Hintergrund: so programmiert wird man nur mit übermäßig langem Suchen finden wo Deine Analogeingänge verwendet werden.

Ist bei Deinem Auftraggeber indirekte Adressierung von Eingängen und Ausgängen erlaubt?

Was sind das für Analogsensoren daß die alle exakt gleich skaliert werden?

Harald
 
Das machst Du aber bei Dir zuhause und nicht in einer richtigen Industrieanlage? ;)
Wenn durch solch undurchsichtige Programmierung Dein Haus an Wert verliert ist es Dein Problem. Wenn im Problemfall das SPS-Programm verschrottet und neu programmiert wird, dann muß das jemand (teuer?) bezahlen. Hintergrund: so programmiert wird man nur mit übermäßig langem Suchen finden wo Deine Analogeingänge verwendet werden.

Ist bei Deinem Auftraggeber indirekte Adressierung von Eingängen und Ausgängen erlaubt?

Was sind das für Analogsensoren daß die alle exakt gleich skaliert werden?

Harald

Hey,sorry, ich bin ganz neu in sps, ich war früher auf IOS(Apple) da läuft fast alles über den Arrays und indirekt. Ich wollte nur nach Hilfe bieten. Wo ist Problem? Wieso so aggressiv?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Einfach die SCALE Bausteine hintereinander aufrufen und jeweils mit dem Eingangsparameter versorgen dann findet jeder wo der eingang umgewandelt wird und du kannst ggf. deine Skalierung ändern
 
Zurück
Oben