Hallo miteinander,
ich habe nun, das Ganze in ein Programm integriert, mit einanderverflochtene Arrays. Nun meine Frage, wie kann dieser Komplez am schnellsten abgearbeitet werden, sodass die Berechnung gleich schnell erfolgt, wie wenn man das ganze komplett ausführlich (12*20) aufgliedern würde.
MEines Erachtens ist nun ein Schleife mit:
1. Zähler 1-12 [Supp]
2. Zähler 1-20 [Werks]
einzufügen.
= [Werks]= 1, Zähler 1=+1: [Supp] 1,2,3,...12 , dann Zähler 2+1
dann
= [Werks]= 2, Zähler 1=+1: [Supp] 1,2,3,...12
...
= [Werks]= 12, Zähler 1=+1: [Supp] 1,2,3,...12, dann Zähler 1 und 2 = wieder Reset:1
[list=]Wäre dies so korrekt? Und was für eine Schleife oder wie wäre der Zählring auzubauen?
Wie sind die Tasks aufzubauen (freilaufend oder zyklisch? des weiteren sind noch andere Programmteile, die die gleiche Priorität haben sowie einige, die z.B. nur jede Sekunde ablaufen brauchen, vorhanden???[/list][size=50]VAR_GLOBAL RETAIN PERSISTENT
IF1pos_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
IF1neg_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [0..12] OF BOOL;
IF2pos_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
IF2neg_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
IF3pos_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
IF4pos_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
IF4neg_Supp_ay2_vWerk_ay1_On: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
S_ay2_Werks_ay1AN: ARRAY [0..20] OF ARRAY [1..12] OF BOOL;
VISU_SUP_ay1_MsNullp_: ARRAY [1..12] OF WORD; (*Support 1-12 Maschienennullpunkt*)
VISU_SUP_ay1_StRefp_: ARRAY [1..12] OF BYTE; (*Support 1-12 Startrefernzpunkt* vom Mittelpunkt des Supports + Bearbeitung*)
VISU_SUP_ay1_EndRefp_: ARRAY [1..12] OF BYTE; (*Support 1-12 Endtrefernzpunkt, vom Mittelpunkt des Supports + Bearbeitung*)
VISU_SUP_ay1_Start_Sonder_: ARRAY [1..12] OF BYTE; (*Support 1-12 Startrefernzpunkt, vom Mittelpunkt des Supports - SonderBearbeitung*)
VISU_SUP_ay1_Ende_Sonder_: ARRAY [1..12] OF BYTE; (*Support 1-12 Endtrefernzpunkt, vom Mittelpunkt des Supports - SonderBearbeitung*) VISU_Anfangswert_1_WzSt_: ARRAY [0..20] OF WORD; (*Eingabe in Visu Anfangswert_1_ von Werkstueck 1-20 keine Bearbeitung; Visuvalisierung Stueck-Berabeitungs-Laengen*)
VISU_Bearbeitungswert_2_WzSt_: ARRAY [0..20] OF WORD; (*Eingabe in Visu Bearbeitungswert_2_ von Werkstueck 1-20 Bearbeitun; Visuvalisierung Stueck-Berabeitungs-Laengen*)
VISU_Anfangswert_3_WzSt_: ARRAY [0..20] OF WORD; (*Eingabe in Visu Anfangswert_3_ von Werkstueck 1-20 keine Bearbeitung; Visuvalisierung Stueck-Berabeitungs-Laengen*)
VISU_Bearbeitungswert_4_WzSt_: ARRAY [0..20] OF WORD; (*Eingabe in Visu Bearbeitungswert_4_ von Werkstueck 1-20, keine Bearbeitung; Visuvalisierung Stueck-Berabeitungs-Laengen*)
VISU_Endwert_5_WzSt_: ARRAY [0..20] OF WORD; (*Eingabe in Visu Bearbeitungswert_5_ von Werkstueck 1-20 keine Bearbeitung; Visuvalisierung Stueck-Berabeitungs-Laengen*)
VISU_Stuecklaenge_: ARRAY [0..20] OF WORD; (*Visu-Stuecklänge*)
VISU_SUP_ay2_ST_ay1_: ARRAY [0..20]OF ARRAY [1..12]OF BOOL; (*Support 1-12, für jeweiliges Werkstueck 1-20, Bearbeitung aktiv, Visuvalisierung Support Zustand Bearbeitung aktiv *)
VISU_SUP_SONDERaktiv_ay2_ST_ay1_: ARRAY [0..20]OF ARRAY [1..12]OF BOOL; (*Support 1, füR jeweiliges Werkstueck 1-20, Sonderlaengen-Bearbeitung aktiv, Visuvalisierung Support Zustand Sonderlaengen-Bearbeitung aktiv *)
END_VAR
[/size]
(*Werkstueck 1 bis 20 für je Support 1-12. Standart-Bearbeitung oder Sonderstück-Bearbeitung*)FOR Werks:=1 TO 20 DO OR 1 TO (Stueckzahlnummer)FOR Supp:=1 TO 12 DOIF Stueck_ay1_aktiv_[Werks] = TRUE AND VISU_SUP_ay2_ST_ay1_[Werks][Supp] = TRUE
THEN
IF VISU_SUP_SONDERaktiv_ay2_ST_ay1_[Werks][Supp] = TRUE AND VISU_Anfangswert_1_WzSt_[Werks] >0
THEN
IF VISU_SUP_ay1_MsNullp_[Supp] + VISU_SUP_ay1_Start_Sonder_[Supp] +
VISU_Anfangswert_1_WzSt_[1] < Anfangspos_Maschine_ay1_[Werks]
THEN
1pos_Supp_ay2_vWerk_ay1_On :=TRUE;
ELSE
1pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=FALSE ; END_IF
ELSE
IF VISU_SUP_ay1_MsNullp_[Supp] - VISU_SUP_ay1_StRefp_[Supp]
<Anfangspos_Maschine_ay1_[Werks]
THEN
1neg_Supp_ay2_vWerk_ay1_On :=TRUE;
ELSE
1neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=FALSE; END_IF END_IF
IF VISU_SUP_SONDERaktiv_ay2_ST_ay1_[Werks][Supp] = TRUE AND VISU_Anfangswert_3_WzSt_[Werks] >0
THEN
IF VISU_SUP_ay1_MsNullp_[Supp] - VISU_SUP_ay1_Ende_Sonder_[Supp] >
Anfangspos_Maschine_ay1_[Werks] - VISU_Bearbeitungswert_2_WzSt_[Werks] -
VISU_Anfangswert_1_WzSt_[Werks]
THEN
2pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=TRUE;
ELSE
2pos_Supp_ay2_vWerk_ay1_On :=FALSE; END_IF
ELSE
IF VISU_SUP_ay1_MsNullp_[Supp] + VISU_SUP_ay1_EndRefp_[Supp] >
Anfangspos_Maschine_ay1_[Werks] - Stuecklaenge_ay1_[Werks]
THEN
2neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=TRUE;
ELSE
2neg_Supp_ay2_vWerk_ay1_On :=FALSE; END_IF END_IF
IF VISU_SUP_SONDERaktiv_ay2_ST_ay1_[Werks][Supp] = TRUE AND VISU_Bearbeitungswert_4_WzSt_[Werks] >0
THEN
IF VISU_SUP_ay1_MsNullp_[Supp] + VISU_SUP_ay1_Start_Sonder_[Supp] +
VISU_Anfangswert_3_WzSt_[Werks] + VISU_Bearbeitungswert_2_WzSt_[Werks] +
VISU_Anfangswert_1_WzSt_[Werks] < Anfangspos_Maschine_ay1_[Werks]
THEN
3pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=TRUE;
ELSE
3pos_Supp_ay2_vWerk_ay1_On[Werks][Supp :=FALSE; END_IF END_IF
IF VISU_SUP_SONDERaktiv_ay2_ST_ay1_[Werks][Supp] = TRUE AND VISU_Endwert_5_WzSt_[Werks] >0
THEN
IF VISU_SUP_ay1_MsNullp_[Supp] - VISU_SUP_ay1_Ende_Sonder_[Supp] >
Anfangspos_Maschine_ay1_[Werks] - Stuecklaenge_ay1_[Werks] +
VISU_Endwert_5_WzSt_[Werks]
THEN
4pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=TRUE;
ELSE
4pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=FALSE; END_IF
ELSE
IF VISU_SUP_ay1_MsNullp_[Supp] + VISU_SUP_ay1_EndRefp_[Supp] >
Anfangspos_Maschine_ay1_[Werks] - Stuecklaenge_ay1_[Werks]
THEN
4neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=TRUE;
ELSE
4neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] :=FALSE; END_IF END_IF END_IF
IF (pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] = TRUE OR 1neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] = TRUE)
AND
(2pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] = TRUE OR 2neg_Supp_ay2_vWerk_ay1_On[Werks][Supp] = TRUE
OR 3pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] =TRUE)
AND
(4pos_Supp_ay2_vWerk_ay1_On[Werks][Supp] = TRUE OR 4neg_Supp_ay2_vWerk_ay1_On[Werks][Supp=TRUE)
THEN
S_ay2_Werks_ay1AN[Werks][Supp] := TRUE;
ELSE
S_ay2_Werks_ay1AN[Werks][Supp] := FALSE; END_IF[/color]
END_FOR
END_FOR