-> Hier kostenlos registrieren
Hallo,
habe schon einige Beiträge zu dem Problem von Pointern bei Multiinstanzen gelesen, bin aber nicht so richtig schlau daraus geworden.
Also, folgende Situation:
Im Instanz DB des aufrufenden FB`s sind Sollwerte für jede einzelne Arbeitsstation hinterlegt. Jede Arbeitsstation selber hat bis zu 11 mögliche Positionen die angefahren werden können, und dies jeweils für drei unterschiedliche Motoren. Das ergibt bei 12 Stationen, 12 Positionen und 3 Motoren immerhin 432 Datensätze. Nun soll natürlich pro Station in abhängigkeit der Positionsnummer der richtige Sollwert je Motor ausgegeben werden.
Zur Umsetzung:
Ich dachte an einen FB (1) in dessem Instanz DB alle Sollwerte hinterlegt sind. Die Verwaltung macht ein FB (2), der für jede station als Multiinstanz aufgerufen wird.
Somit übergebe ich an den FB (2) die Positionsummer und den Offest wert für den Speicherbereich (als Integer). Das wäre zum bsp für Station 2 der Wert 72. (12(pos)*2(Int)*3(motoren)).
bisheriger Code:
Ab dem Kommentar Schleife funktioniert alles. Dachte eine schleife für jeden Motor dann zu machen.
Problem: PLCSim geht in Stop, weil ein Fehler drin ist, ich jedoch nicht weiß woran es happert..........
Vielleicht kann mir hierzu ja einer weiterhelfen und sagen wie es geht, oder ob überschüssiger Code drin ist (zb die Register retten), bzw wie man das ganze schöner macht.
habe schon einige Beiträge zu dem Problem von Pointern bei Multiinstanzen gelesen, bin aber nicht so richtig schlau daraus geworden.
Also, folgende Situation:
Im Instanz DB des aufrufenden FB`s sind Sollwerte für jede einzelne Arbeitsstation hinterlegt. Jede Arbeitsstation selber hat bis zu 11 mögliche Positionen die angefahren werden können, und dies jeweils für drei unterschiedliche Motoren. Das ergibt bei 12 Stationen, 12 Positionen und 3 Motoren immerhin 432 Datensätze. Nun soll natürlich pro Station in abhängigkeit der Positionsnummer der richtige Sollwert je Motor ausgegeben werden.
Zur Umsetzung:
Ich dachte an einen FB (1) in dessem Instanz DB alle Sollwerte hinterlegt sind. Die Verwaltung macht ein FB (2), der für jede station als Multiinstanz aufgerufen wird.
Somit übergebe ich an den FB (2) die Positionsummer und den Offest wert für den Speicherbereich (als Integer). Das wäre zum bsp für Station 2 der Wert 72. (12(pos)*2(Int)*3(motoren)).
bisheriger Code:
Code:
TAR1 #dTempAR1
TAR2 #dTempAR2
L #dTempAR1 //war nur testweise um zu sehen was die anzeigen
L #dTempAR2
L #Speicherbereich
SLD 3
T #SpeicherW
LAR1 P##SpeicherW
TAR2
+AR1
L W [AR1,P#0.0]
L DW#16#FF
UW
LAR1
// Schleife
L 0
T #Schleife
M4: L #Schleife
L #Position
==I
SPBN M3
L W [AR1,P#0.0]
T #Sollwert_M1
M3: +AR1 P#6.0
L #Schleife
INC 1
T #Schleife
L 12
<=I
SPB M4
LAR1 #dTempAR1
LAR2 #dTempAR2
Ab dem Kommentar Schleife funktioniert alles. Dachte eine schleife für jeden Motor dann zu machen.
Problem: PLCSim geht in Stop, weil ein Fehler drin ist, ich jedoch nicht weiß woran es happert..........
Vielleicht kann mir hierzu ja einer weiterhelfen und sagen wie es geht, oder ob überschüssiger Code drin ist (zb die Register retten), bzw wie man das ganze schöner macht.
Zuletzt bearbeitet: