-> Hier kostenlos registrieren
Hallo Forum ,
ich sitze seit einiger Zeit an einem FB. Bei der Erstellung des Bausteins sind mir einige Dinge aufgefallen die ich noch nicht richtig verstanden habe .
Kurze Erklärung des Bausteins:
Bei uns in der Firma werden an den Montagelinien Kameras über Ethernet angesteuert. Ich bin dafür zuständig diese Systeme in die Montagelinien ein zu bauen. Da sich verschiedene Programmteile wiederholen , kam mir der Einfall einen FB dafür zu schreiben. Im FB verwende ich je nach Steuerungstyp oder CP AG_Send/AG_Receive Bausteine. Einige In Parameter und Out Parameter.
Nun meine Frage :
An meinem FB gibt es einen In Parameter den ich für einen Anypointer verwende.
1.Frage warum kann ich nicht direkt meinen In Parameter im Anypointer verwenden . Sondern muss das DBW aus meinem Instanz DB nehmen ? Anstatt direkt meinen In Parameter in den Any Pointer ein zu setzen. Unten DIW 6 .....
LAR2 P##EMPFANGSBEREICH_2
L W#16#1002 //SYNTAX ID UND DATENTYP BYTE
T LW [AR2,P#0.0]
L DIW 6 // DB NUMMER GELESEN AUS INSTANZ_DB
T LW [AR2,P#4.0]
L 74 //LÄNGE COPY-BEREICH
T LW [AR2,P#2.0]
L 74 //ANFANG ZIELDATENBEREICH
SLD 3
OD DW#16#85000000 //SPEICHERBEREICH 85hex -> DI FESTLEGEN
T LD [AR2,P#6.0]
2.Frage wann kann ich direkt in den Stat Bereich meines FB Programmieren und wann muss ich den Instanz DB nehmen .
Z.B.
u M0.0
= DIX10.0
u M0.0
= #Kamera IO
Das ist mir noch nicht so ganz klar geworden . Gibt es Regeln dafür ? Habe schon versucht bei Siemens Erklärungen dafür zu finden. Ist mir aber nicht gelungen.
Beispiel In Parameter Programmnummer von Kamera muss ich aus DIW6 entnehmen anstatt aus dem In Parameter. Sonst funktioniert mein Baustein nicht.
Andererseits habe ich Verbindungs ID und Laddr auch als In Parameter definiert. Diese muss ich am AG_Send FC direkt parametrieren da kann ich nicht DIW nehmen.
Das würde ich gern wissen warum dies so ist. Ich hoffe das es mir gelungen ist mein Problem verständlich zu beschreiben.
ich sitze seit einiger Zeit an einem FB. Bei der Erstellung des Bausteins sind mir einige Dinge aufgefallen die ich noch nicht richtig verstanden habe .
Kurze Erklärung des Bausteins:
Bei uns in der Firma werden an den Montagelinien Kameras über Ethernet angesteuert. Ich bin dafür zuständig diese Systeme in die Montagelinien ein zu bauen. Da sich verschiedene Programmteile wiederholen , kam mir der Einfall einen FB dafür zu schreiben. Im FB verwende ich je nach Steuerungstyp oder CP AG_Send/AG_Receive Bausteine. Einige In Parameter und Out Parameter.
Nun meine Frage :
An meinem FB gibt es einen In Parameter den ich für einen Anypointer verwende.
1.Frage warum kann ich nicht direkt meinen In Parameter im Anypointer verwenden . Sondern muss das DBW aus meinem Instanz DB nehmen ? Anstatt direkt meinen In Parameter in den Any Pointer ein zu setzen. Unten DIW 6 .....
LAR2 P##EMPFANGSBEREICH_2
L W#16#1002 //SYNTAX ID UND DATENTYP BYTE
T LW [AR2,P#0.0]
L DIW 6 // DB NUMMER GELESEN AUS INSTANZ_DB
T LW [AR2,P#4.0]
L 74 //LÄNGE COPY-BEREICH
T LW [AR2,P#2.0]
L 74 //ANFANG ZIELDATENBEREICH
SLD 3
OD DW#16#85000000 //SPEICHERBEREICH 85hex -> DI FESTLEGEN
T LD [AR2,P#6.0]
2.Frage wann kann ich direkt in den Stat Bereich meines FB Programmieren und wann muss ich den Instanz DB nehmen .
Z.B.
u M0.0
= DIX10.0
u M0.0
= #Kamera IO
Das ist mir noch nicht so ganz klar geworden . Gibt es Regeln dafür ? Habe schon versucht bei Siemens Erklärungen dafür zu finden. Ist mir aber nicht gelungen.
Beispiel In Parameter Programmnummer von Kamera muss ich aus DIW6 entnehmen anstatt aus dem In Parameter. Sonst funktioniert mein Baustein nicht.
Andererseits habe ich Verbindungs ID und Laddr auch als In Parameter definiert. Diese muss ich am AG_Send FC direkt parametrieren da kann ich nicht DIW nehmen.
Das würde ich gern wissen warum dies so ist. Ich hoffe das es mir gelungen ist mein Problem verständlich zu beschreiben.