Twincat3 Umwandlung von DEZ zu ASCII

aameno

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe ein Projekt, und zwar ich muss die Waage Mttler-Toledo über die Karte EL6002 durch den Anschluss RS232 verbinden und die Schnittstelle mit der SPS-Einheit finden. Das hat geklappt, jedoch bekomme ich das Gewicht als Dezimalwert zurück. Kann mir jemand damit helfen, ich soll den wer von Dez zu ASCII umwandeln.

Der wert ist in 22 Buffer gespeichert.



Im Anhang sind Bilder von der Rückgabe und der Code.
Screenshot 2024-04-16 105256.pngScreenshot 2024-04-16 105844.png
 
Also Du mußt den eigentlichen Wert aus 22 Einzelwerten zusammenbauen? --> Wie sollen die denn den Endwert bilden?
Oder Du suchst nur eine Funktion, um einen Wert (z.B. Data In 0) in einen String umzuwandeln? --> USINT_TO_STRING mal probiert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Deine BeispielDaten sind leider nicht sehr "ergiebig".
10 : 0Ah - LF (Line Feed, ZeilenSchaltung)
13 : 0dh - CR (Carriage Return, WagenRücklauf)
32 : 20h - Leerzeichen
73 : 49h - 'I' (gross i)
83 : 53h - 'S'

10 gefolgt von 13 : das sind die "TrennZeichen" zwischen zwei DatenZeilen.
Die Daten '83 32 73' wiederholen sich immer wieder und sind die 3 Zeichen 'S I'.
Ziffern tauchen in dem Beispiel nicht auf (das wären 48 = 30h = '0' ... 57 = 39h = '9').
 
Jede Zahl hat ein ASCII-Wert wie in der Tabele. Siehe Anhang

Es soll am Ende Das Gewicht in mg rauskommenScreenshot 2024-04-16 112828.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist das Ergebnis deiner Schnittstellendaten ... Base64
Bis "Base64" einverstanden, aber was kommt danach? :unsure:
N? Stickstoff?
Cl? Chlor?
Mg? Magnesium?
S? Schwefel?
TIA?
Wo ist der Zusammehang mit den BeispielDaten aus #1?
Meinst Du mit Base64, dass je ASCII-Zeichen nur 6 Bit statt 7 oder 8 belegt werden?
 
Zuletzt bearbeitet:
Den Sprung von '83 32 73 13 10 83 32 73 13 10 83 32 73 13 10 83 32 73 13 10 83 32'
nach 'UyBJDQpTIEkNClMgSQ0KUyBJDQpTIA==' kann ich (noch) nicht nachvollziehen.
 
Aaach sooo. Base64 ist gar nicht mehr Bestandteil Deines Beitrags und ich muss gar nicht verstehen, was dahinter steckt.

Vielleicht meldet sich aameno mal wieder zum Thema, damit wir weiterspekulieren können, was gemeint ist.
In den BeispielDaten sehe ich jedenfalls keine ASCII-Ziffern und weiss auch nicht, wie man aus den gezeigten ASCII-Daten auf eine Anzahl von MilliGramm schliessen soll.
Nicht einmal eine '0' als "Platzhalter" für eine Zahl ist zu sehen.
 
Um das ganze mal etwas aufzulösen...

Die Daten die du mit der I/O Klemme austauschst haben erst mal gar nichts mit deiner Kommunikation zu tun (erst mal). Das sind die Daten die in die Datenstruktur für die Kommunikation mit dem Beckhoff-System und der Klemme liegen. Die Daten der RS-232 werden zwar in der Klemme gelesen, müssen dann aber in den EtherCAT gepackt werden und in die Steuerung kommen. Und umgekehrt natürlich auch. Dafür gibt es eine Zwischenschicht und das sind dann eben die Variablen die du uns in deinem Ausschnitt gezeigt hast. Darum sind die Variablen die du uns hier gezeigt hast, allen Spekulationen zum trotz auch nicht aussagekräftig.

TF6340 | TwinCAT 3 Serial Communication

Interessanter währe was in dem Datenbereich der bei dir hinter dem Zeiger auf "abyReceiveBuffer" steht. Normalerweise liefern solche Wagen immer einen String als Antwort auf ein Telegramm das ebenfalls aus einem String besteht. Liegt bei dir im "strCommand" und wird in den "abysendBuffer" rüberkopiert.

Grüße

Markus
 
Zurück
Oben