Berechnungsfehler AWL / VIPA 314 ST

Huibuh

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forengemeinde,
bin neu hier, daher war ich mir nicht sicher ob das die richtige Rubrik ist und bitte Milde walten zu lassen, falls doch falsch... =)
folgendes Problem:
Ich nutze einen Inkrementalgeber für die Bestimmung von verschiedenen Wegepunkten. Die Wegepunkte werden in DBs (Array of Struct) gespeichert.
Setzwert Ink-Geber: 999.900.000
Endwert Ink-Geber: 1.000.000.000 (zu Testzwecken)
Nun habe ich eine Schleife in AWL programmiert, die bei einem Überlauf vom Inkrementalgeber, mal eben durch alle Arrays huscht und alle Werte die größer als 1.000.000.000 mal eben -100.000 rechnet.
Leider wird das nicht immer ganz korrekt ausgeführt. Wenn die Anlage an der Leistungsgrenze fährt, passiert es manchmal, dass an einer Position nicht -100.000 sondern -50.000 gerechnet wird.
Dieser Fehler tritt aber nur sporadisch auf, daher glaube ich das ich einen Fehler in der indirekten Adressierung habe.
Es ist auch nicht der letzte oder erste Schleifendurchlauf, sondern irgendwo mitten drin...

Hier mal der Code:

//Positive Flanke von "Überlauf Inkrementalgeber"
U "Ueberlauf_Inkgeber"
FP M 200.0
= L 0.0

//Reset "Überlaufeingang"
U L 0.0
= "Reset_Ueberlauf_Inkgeber"


///----------------Werte Station anpassen---------------------///
U L 0.0
SPBN _001
L 0
T #Zaehler


_002: NOP 0
//Station1 anpassen
L #Zaehler
L 10
*I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station1"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _003


L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]


_003: NOP 0
//Station2 anpassen
L #Zaehler
L 4
*I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station2"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _004


L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_004: NOP 0
//Station3_AN anpassen
L #Zaehler
L 8
*I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station3"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _005

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_005: NOP 0
//Station3_AUS anpassen
L #Zaehler
L 8
*I
L 4
+I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station3"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _006

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_006: NOP 0
//Station4_AN anpassen
L #Zaehler
L 8
*I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station4"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _007

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_007: NOP 0
//Station4_AUS anpassen
L #Zaehler
L 8
*I
L 4
+I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station4"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _008

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]


_008: NOP 0
//Station5_AN anpassen
L #Zaehler
L 8
*I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station5"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _009

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_009: NOP 0
//Station5_AUS anpassen
L #Zaehler
L 8
*I
L 4
+I
SLD 3
LAR1

AUF "Ink-Verwaltung_Station5"
L DBD [AR1,P#0.0]
L L#999999990
>=D
SPBN _010

L DBD [AR1,P#0.0]
L L#100000
-D
T DBD [AR1,P#0.0]

_010: NOP 0
L #Zaehler
+ 1
T #Zaehler

L #Zaehler
L "Inkrementverwaltung".Pos_MAX
<I
SPB _002

_001: NOP 0


Pos_MAX ist 512. Ich bin für jede Hilfe dankbar, da ich mit der SPS-Programmierung noch recht wenig Erfahrung habe.
 
Hallo Zusammen,
ich habe den Fehler gefunden. Die Schleife ist vollkommen in Ordnung, es waren äußere Einflüsse die die Daten verändert haben. Topic kann geschlossen werden.
Gruß,
Huibuh
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sie konte die Schleife wel etwas sneller machen:

Code:
_004: NOP 0
 //Station3_AN anpassen 
 L #Zaehler
 L 8
 *I
 SLD 3
 LAR1
[COLOR="#FF0000"]// ab hier bleib AR1 gleich[/COLOR]
 AUF "Ink-Verwaltung_Station3"
 L DBD [AR1,P#0.0]
 L L#999999990
 >=D
 SPBN _005

 L DBD [AR1,P#0.0]
 L L#100000
 -D
 T DBD [AR1,P#0.0]

 _005: NOP 0
 //Station3_AUS anpassen 
[COLOR="#FF0000"] //L #Zaehler
// L 8
// *I
// L 4
// +I
// SLD 3
// LAR1
// neue AR = AR1 + P 4.0[/COLOR] 
 AUF "Ink-Verwaltung_Station3"
 L DBD [AR1,P#4.0]
 L L#999999990
 >=D
 SPBN _006

 L DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]
 L L#100000
 -D
 T DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]

 _006: NOP 0
 //Station4_AN anpassen 
 
 AUF "Ink-Verwaltung_Station4"
 L DBD [AR1,P#0.0]
 L L#999999990
 >=D
 SPBN _007

 L DBD [AR1,P#0.0]
 L L#100000
 -D
 T DBD [AR1,P#0.0]

 _007: NOP 0
 //Station4_AUS anpassen 
 
 AUF "Ink-Verwaltung_Station4"
 L DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]
 L L#999999990
 >=D
 SPBN _008

 L DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]
 L L#100000
 -D
 T DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]


 _008: NOP 0
 //Station5_AN anpassen 
 AUF "Ink-Verwaltung_Station5"
 L DBD [AR1,P#0.0]
 L L#999999990
 >=D
 SPBN _009

 L DBD [AR1,P#0.0]
 L L#100000
 -D
 T DBD [AR1,P#0.0]

 _009: NOP 0
 //Station5_AUS anpassen 
 
 AUF "Ink-Verwaltung_Station5"
 L DBD [AR1,P#4.0]
 L L#999999990
 >=D
 SPBN _010

 L DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]
 L L#100000
 -D
 T DBD [AR1,[COLOR="#FF0000"]P#4.0[/COLOR]]

 _010: NOP 0
 
Zurück
Oben