Datenbank mit TRCV Datenbaustein

Boegge

Level-1
Beiträge
57
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute

Ich möchte über den TRCV_C und dem eingang Data die dort empfangenen daten in einem Datenbaustein speichern.
Allerdings speichert der immer das letzte bit. Baustein TRCV_V.JPG

wie kann ich die komplette bitlänge abspeichern?

Danke schon mal...
 
Wie ist "Datenbaustein_2".data deklariert? Wieviele Bytes sendet der Kommunikationspartner? Was ist das für eine Verbindung?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Datenbaustein_2.Data ist ein array [0..99] of char (größe erstmal zu testzwecken groß gewählt)
der Kommunikationspartner senden im moment 1 Byte, später sollen es 3 Byte sein.
Die verbindung ist über Ethernet eine TCP Verbindung.
 
Ich schätze, der TRCV_C interpretiert das "Datenbaustein_2".data[0] als 1 Char und nicht als Startadresse eines 100 Byte großen Bereichs. Dann wird wohl auch nur jeweils 1 Byte/Char in "Datenbaustein_2".data[0] empfangen werden (was so auch in RCVD_LEN stehen sollte) und jedes Folge-Byte überschreibt das zuvor empfangene Byte und Du siehst nur das zuletzt empfangene.

Schreibe mal "Datenbaustein_2".data an den DATA-Eingang. Und am LEN-Eingang muß möglicherweise die erwartete Telegrammlänge angegeben werden, wenn sie von der Pufferlänge abweicht.

Harald
 
Können die eckigen klammern bei hinter .data nicht weg lassen und wenn in den [] Klammern nichts angegeben wird erscheint die Fehlermeldung " Syntaxfehler bei ]."

Bei LEN haben wir im moment 1 stehen.

Gibt es vielleicht einen anderen Datentyp der das Byte aufteilt und pro Bit abspeichert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst wirklich "Bit"? Ich denke, es wird nicht möglich sein, einzelne Bits zu empfangen.
Warum willst Du aus den empfangenen Daten einzelne Bits speichern? Was willst Du eigentlich tun?

Eckige Klammern weglassen geht nicht? :confused:
Tut mir leid, da kann ich nicht weiter helfen. Vielleicht kennt sich ja jemand mit dem TIA aus.

Harald
 
Hey PN/DP

Klammern weglassen funktioniert doch. Fehler meinerseits :oops:.

Ich verschicke mit dem Programm "Hercules" in HEX "a1b2c3" also 3 Byte an die SPS.
Die ließt das ein und speichert es in den Datenbaustein.
Von dort lese ich es wieder aus und gebe es zurück an den PC. Hier nochmal ein Bild vom Zustand
inkl. Beobachtungstabelle und Programm.
Warum wird im Sende-Baustein.Data[0] nur das letzte Byte gespeichert und in den anderen beiden die "20"?
Und warum bekommt das Herkules-Programm nur den Befehl "{A1}{20}{20}{C3}{20}{20}" zurück?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Darf ich mich ausnahmsweise mal selbst zitieren:
Ich schätze, der TRCV_C interpretiert das "Datenbaustein_2".data[0] als 1 Char und nicht als Startadresse eines 100 Byte großen Bereichs. Dann wird wohl auch nur jeweils 1 Byte/Char in "Datenbaustein_2".data[0] empfangen werden (was so auch in RCVD_LEN stehen sollte) und jedes Folge-Byte überschreibt das zuvor empfangene Byte und Du siehst nur das zuletzt empfangene.
- Test: hänge mal einen Zähler an den RCVD.DONE-Ausgang - der sollte je Herkules-Telegramm 3x weiterzählen
- schreibe an LEN die gewünschte Zeichenanzahl: 3 (oder 0)

Harald
 
Guten Morgen

Es hat funktioniert! LEN auf 3 gesetzt und er speichert alle 3 Byte einzeln in den DB.
Unser Fehler lag wohl darin das wir LEN auf 0 gesetzt haben und er dadurch nur 1 Byte abspeichern konnte.

Vielen Dank für deine Hilfe PN/DP! :s12:
 
Zurück
Oben