prozessabbild

prinz1978

Level-2
Beiträge
149
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo

brauche wieder einmal:confused: hilfe wie lade ich prozessabbild in ein datenbaustein rein ?? ich kämpe noch immer mit trysim an die simatic rum :( eine verbindung habe ich bereits hinbekommen aber wie schreibe ich das programm um ??einige user haben schon etwas geschrieben aber was das genau beteutet ??


im ersten NW
CALL "BLKMOV"
SRCBLK :="trysim>sps".E
RET_VAL:=#ti_retval
DSTBLK :=P#E 0.0 BYTE 256
NOP 0

und im letzten nw
CALL SFC20 // Block Move
SRCBLK := P#A 0.0 BYTE 256
RET_VAL := MW 100 // irgend ein INT
DSTBLK := P#DB2.DBX 0.0 BYTE 256
 
Zuletzt bearbeitet:
hallo

brauche wieder einmal:confused: hilfe wie lade ich prozessabbild in ein datenbaustein rein ?? ich kämpe noch immer mit trysim an die simatic rum :( eine verbindung habe ich bereits hinbekommen aber wie schreibe ich das programm um ??einige user haben schon etwas geschrieben aber was das genau beteutet ??


im ersten NW
CALL "BLKMOV"
SRCBLK :="trysim>sps".E
RET_VAL:=#ti_retval
DSTBLK :=P#E 0.0 BYTE 256
NOP 0

und im letzten nw
CALL SFC20 // Block Move
SRCBLK := P#A 0.0 BYTE 256
RET_VAL := MW 100 // irgend ein INT
DSTBLK := P#DB2.DBX 0.0 BYTE 256


Jetz mal zum Verständnis, du möchtest das Prozessabbild der Ein- und Ausgänge in einen DB schreiben korrekt ??????

Was passiert den bei dem geposteten Code, gibt´s Fehlermeldungen oder irgendein blödsinn im DB ???????

Ich bin jetzt nicht so Trysim bewandert, deshalb, was bedeutet "trysim>sps".E
 
wie trysim arbeitet kann ich dir nicht sagen. habe noch nie damit gearbeitet.

grundsätzlich funktioniert es ja so...
:start
prozessabbild der eingänge wird eingelesen
ob1 wird bearbeitet.
prozessabbild der ausgänge wird geschrieben
goto start

die netzwerke müssen im ob1 aufgerufen werden.

SRCBLK :="trysim>sps".E
ich denke mal, das dies der db ist, in den trysim die daten der simulierten eingänge schreibt.

hier wird also der von trysim geschriebene db in die eingänge geschrieben.
die sps behandelt alle bits gleich. egal ob es ein eingang ausgang oder merker ist. für die ist es im prinzip nur eine speicherstelle.
d.h. wenn du im ob1, ganz am anfang einen eingang setzt (wie du das auch ganz normal mit a und m machst) dann ist dieser e für den rest des zuklus gesetzt und wird erst wieder überschrieben, wenn vor dem ob1-aufruf das pae eingelesen (welches die speicherzellen der eingänge neu beschreibt) wird.

im letzen netzwerk werden die ausgänge in db transferiert, den trysim für die ausgänge benutzt.
 
hallo könntest du mir bitte einen ansatz posten für mein problem datenbausteine habe ich bereits angelegt global aber wie geht es weiter ??

mfg
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Na Gut, ich glaub ich hatte da grad nen Verständnisproblem

CALL SFC20 // Block Move
SRCBLK := P#A 0.0 BYTE 256
RET_VAL := MW 100 // irgend ein INT
DSTBLK := P#DB2.DBX 0.0 BYTE 256

Also wenn ich mir jetzt mal den Teil hier anschaue, müsste der so Funktionieren.
Erläuterung:
SRCBLK := P#A 0.0 BYTE 256 === Der zu kopierende Bereich, der Any-pointer zeigt auf die Ausgangsbyts 0 - 255

RET_VAL := MW 100 === Rückgabewert der SFC, gibt ggf. Fehlermeldung aus wenn ihm irgendwas nicht passt


DSTBLK := P#DB2.DBX 0.0 BYTE 256 === Zielbereich, wo die Daten gespeichert werden sollen, in dem Fall zeigt der ANY-Pointer auf den DB2 und dort widerrum auf die Bytes 0 - 255


Der Baustein kopiert also den Zustand der Ausgänge 0.0 bis 255.7
in den Datenbaustein DB 2.


(ich hoffe ich hab jetzt keinen Fehler gemacht :rolleyes: )
 
ich habe das mal so geschrieben aber irgendwie funkt das nicht ???

ersten nw

CALL "BLKMOV"
SRCBLK :="Trysim_eingänge" = datenbaustein global strukt array
RET_VAL:=MW200
DSTBLK :=P#E 0.0 BYTE 2 = da ich nur eine karte habe mit 16 bits
NOP 0
 
und im letzten nw im ob1

CALL "BLKMOV"
SRCBLK :=P#A 4.0 BYTE 2 = meine ausgangskarte adr mit 4 lange 16 bit
RET_VAL:=MW400
DSTBLK :=P#DB6.DBX0.0 BYTE 2 = datenbaustein strukt array
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich habe das mal so geschrieben aber irgendwie funkt das nicht ???

ersten nw

CALL "BLKMOV"
SRCBLK :="Trysim_eingänge" = datenbaustein global strukt array
RET_VAL:=MW200
DSTBLK :=P#E 0.0 BYTE 2 = da ich nur eine karte habe mit 16 bits
NOP 0


Schreib mal bei SRCBLK auch mal so einen ANY-Pointer ran, wie er z.b. bei DSTBLK dran steht
der könnte dan zum beispiel P#DB2.DBX0.0 Byte 2 lauten.


Wenn nicht funktioniert, poste mal die Zahl die bei RET_VAL steht
 
ich glaube jetzt hat es geklappt so habe ich s gemacht .man könnte so wie du es geschrieben hast statt p#e0.0 Byte auch z.b p#db6.dbx0.0 Byte 2 schreiben. danke für deine mühe;)

CALL "BLKMOV"
SRCBLK :=P#E 0.0 BYTE 2
RET_VAL:=MW200
DSTBLK :=P#DB5.DBX0.0 BYTE 2
NOP 0


mfg
 
Zurück
Oben