Langer String nur lesen

Antworten
Bedo
Beiträge: 9
Registriert: Dienstag 14. Oktober 2008, 15:27

Langer String nur lesen

Beitrag von Bedo » Montag 30. Mai 2011, 22:12

Hallo an alle,

kann mir jemand bitte einen Tip geben, wie ich einen langen String über RS232 einlesen kann. Die Steuerung sendet von sich aus einen String mit einer eingestellten Periode. Im Hypertherminal kommt es wie folgt an:

Code: Alles auswählen

      YORK SYSTEM 1 UPDATE    
 c1994 YORK INTERNATIONAL CORP.
 VERSION A.02F.03.500.02

 
 HEUTE IST DI  11:45AM  04/26/11
 SYSTEM BETRIEB - AUTO ENTKRISTALLISATION

 
 KAELTETRAEGER AUSTRITTSTEMP =   5.9 C
 KAELTETRAEGER EINTRITTSTEMP =   7.9 C
 KUEHLWASSERAUSTRITTSTEMP    =  32.9 C
 KUEHLWASSEREINTRITTSTEMP    =  27.4 C
 KAELTEMITTELTEMPERATUR      =   5.8 C
 KONZENTRIERTE LOESUNG TEMP  =  92.7 C
 DAMPF EINTRITTSTEMPERATUR   = 133.7 C
 KAELTEM TEMP AUSTR VERFLUESS=  35.7 C
 AUTO ENTKRISTALLISATION TEMP=  89.7 C
 DRUCK AUSTREIBER MANTELRAUM =  5.17 kPaA
 DAMPF EINTRITTSDRUCK        = 149.44 kPaA
 
 KAELTETR AUSTRITT SOLLWERT  =   5.0 C
 MAX KUEHLWASSER EINTR TEMP  =  34.0 C
 FERN TEMP SOLLWERT BEREICH  =  11.1 C
 
 BETRIEBSART DER EINHEIT = FERN
 MAX ZULAESSIGE LEISTUNG = 100%
 DAMPFVENTIL OEFFNUNG    =  47%
 FERN LASTBEGRNZUNGR 100
 TI2 BEG =11:52AM INT=  .1 H    .1 H NOCH
 BETR STUNDEN=62889; START ZAEHLER =29143
 
 VERBRAUCHSBEGRENZ DAUER =  15 MIN
 VERBRAUCHSBEGRENZ BEGINN=  20%
 VERBRAUCHSBEGRENZ ENDE  = 100%
 GEGENWAERTIGE VERBR BEGR  = 100%
 VERBRAUCHSBEGR NOCH DAUER =   0 MIN
 
 KAELTETRAEGERPUMPE   - EIN    KAELTEMITTELPUMPE    - EIN
 KUEHLWASSERPUMPE     - EIN    ENTLUEFTUNGSPUMPE    - EIN
 LOESUNGSPUMPE        - EIN
 
 MAGNETVENTIL MOTORKUEHLMITTEL  - GESCHLOSSN
 MV NIVEAU KAELTEM ENTLASTUNG   - GESCHLOSSN
 MAGNETV KAELTEM STABILISIERUNG - GESCHLOSSN
 KAELTEMITTEL NIVEAUSCHALTER    - GESCHLOSSN
 
 RELAIS SICHERH ABSCHALT- AUS    7 TAGE ZAHL ENTLUEFT=     2
 RELAIS BETRIEBSM ABSCH - AUS    ENTLUEFT GES ZAHL   =   397
 RELAIS VORALARM        - AUS    RELAIS FERN BETR BER   - EIN
 
 SO  BEGIN = 00:00AM, ENDE = 00:00AM
 MO  BEGIN = 00:00AM, ENDE = 00:00AM
 DI  BEGIN = 00:00AM, ENDE = 00:00AM
 MI  BEGIN = 00:00AM, ENDE = 00:00AM
 DO  BEGIN = 00:00AM, ENDE = 00:00AM
 FR  BEGIN = 00:00AM, ENDE = 00:00AM
 SA  BEGIN = 00:00AM, ENDE = 00:00AM
 HOL BEGIN = 00:00AM, ENDE = 00:00AM
 SO MO DI MI DO FR SA FEIERTAG MARKIERT *
 

Vielen Dank im Voraus.

Viele Grüße Bedo

KAKTUS
Beiträge: 645
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Langer String nur lesen

Beitrag von KAKTUS » Dienstag 31. Mai 2011, 11:34

Bitte mal testen:

Hab ich ohne zu prüfen in 5 Minuten zusammengeflickt.
Dateianhänge
Lange Strings.prj
(4.72 KiB) 402-mal heruntergeladen
stachlige Grüße, Kaktus

Bedo
Beiträge: 9
Registriert: Dienstag 14. Oktober 2008, 15:27

Re: Langer String nur lesen

Beitrag von Bedo » Dienstag 31. Mai 2011, 19:38

Hallo Kaktus,

vielen Dank für Deine Mühe. Ich komme erst in den nächsten 2-3 Wochen nochmal an so eine Anlage. Dann werde ich es testen und bis dahin mir Deine Schaltung durch den Kopf gehen lassen. Ich werde Dir dann das Ergebnis mitteilen.
Bedenken habe ich, ob der gesamte String eingelesen wird, dies wird automatisch und periodisch von der Anlagensteuerung ohne Synchronzeichen gemacht. Aber ich werde es erst mal testen.

Grüße Bedo

KAKTUS
Beiträge: 645
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Langer String nur lesen

Beitrag von KAKTUS » Dienstag 31. Mai 2011, 22:10

Es muss kein "gesamter String" eingelesen werden.
Hinter jeder Zeile die gesendet wird, ist zumindest ein CR für eine neue Zeile. Es wird immer nur eine Zeile mit "$COM" eingelesen. Dann wird die Zeile mit "$PART" bei einem "=" zerlegt in zwei Teile.
Nun vergleiche ich den vorderen Teil mit dem Text der in $CNST , also in einem String Speicher steht.
Das macht der Vergleicher "CMP". Wenn Vergleich positiv, dann alles nach dem "=" Richtung "$Display" durchgelasen.
Wenn ungleich hält "$Hold" den letzten gültigen Wert fest.

Nimm doch mal statt Hyperterminal das Hterm Programm
viewtopic.php?f=21&t=2629
Mach mal eine Aufzeichnung wie im Bild mit Ascii und Hex.

Die Daten mit PLE aufzuzeichnen sollte kein Problem sein, wenn man mein Beispiel verstanden hat.
stachlige Grüße, Kaktus

KAKTUS
Beiträge: 645
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Langer String nur lesen

Beitrag von KAKTUS » Sonntag 24. Juli 2011, 16:08

Gibts was neues?
stachlige Grüße, Kaktus

Bedo
Beiträge: 9
Registriert: Dienstag 14. Oktober 2008, 15:27

Re: Langer String nur lesen

Beitrag von Bedo » Samstag 29. Oktober 2011, 16:42

Hallo Kaktus und all die anderen,
endlich war ich wieder an der Anlage.
Leider funktionierte es nicht so wie ich wollte. Das Bauteil String einlesen kann auch in deinem Beispiel das Hex-Zeichen 0A nicht als Synchronzeichen interpretieren. Beim = Zeichen oder C funktioniert es. Nur eben das 0A nicht. Ich hätte den String halt gerne zeilenweise ausgewertet, dann wird alles einfacher. Das mit dem $Hold ist eine gute Idee und ich werde sie in der Auswertung einsetzen.
Bin erst in 2 Wochen wieder an der Anlage, kann es jetzt aber auch zu Hause testen.
Anbei noch mal ein Ausdruck mit Hterm.

Viele Grüße und noch vielen Dank für die Hilfe.

Betriebsdaten TI2.zip
(926 Bytes) 271-mal heruntergeladen

KAKTUS
Beiträge: 645
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Langer String nur lesen

Beitrag von KAKTUS » Sonntag 30. Oktober 2011, 23:24

Deine Antwort
Zeiträume sind ein bisschen sehr lang.
HEX DEC
LF 0A 10 \n

CR 0D 13 \r

Hast du den COM Baustein schon mal auf DEC 10 umgestellt?

Das sollte doch gehen????

Wenn deine Antwort jetzt wieder 5 Monate dauert bin ich raus, das ist mir zu doof.
stachlige Grüße, Kaktus

compander
Beiträge: 657
Registriert: Dienstag 14. Oktober 2008, 17:06
Wohnort: Markt Schwaben

Re: Langer String nur lesen

Beitrag von compander » Montag 31. Oktober 2011, 22:02

Hallo Freunde.

Heute möchte allgemein zu dem Betreff Stellung nehmen.
Welcher vereinzelt auch für andere Themen gilt.

Ich empfinde es als suboptimal, daß ein Autor ein Thema eröffnet, und dabei seine aktuelle ".prj" nicht vorstellt.
Diese gilt es ja i.d.R. zu optimieren. Und Hilfe dafür wird ja i.d.R. auch angeboten.

Statt desen wird hier ein hübsches H-Term Listing geboten, mit welchem Niemand etwas anfangen kann. Da nicht reproduzierbar.

Ich kann mit dem zweiten Beispiel des Autors "Betriebsdaten TI2.zip", welches sich bei mir als eine Textdatei offenbart, nichts anfangen.
Und ich kann diese nicht einmal ansatzweise in Bezug zu PLE bringen.

Frage an Bedo: wozu ist das Thema denn überhaupt gut? Wenn Du z.B. auf den Lösungsvorschlag von Kaktus nicht direkt eingehst.
Ich kann nur Bedenken registrieren. Keine in der Praxis erfahrene Gegenargumente !
Nix für ungut !

Herzlichen Gruß von C :shock: mpander.

abacom
Site Admin
Beiträge: 3415
Registriert: Dienstag 23. September 2008, 10:54
Kontaktdaten:

Re: Langer String nur lesen

Beitrag von abacom » Dienstag 1. November 2011, 13:56

Trennzeichen (Sync) = $0A = 10dez. verwenden! Taktung verändert.
Lange Strings.prj
(4.71 KiB) 262-mal heruntergeladen
ABACOM support

Bedo
Beiträge: 9
Registriert: Dienstag 14. Oktober 2008, 15:27

Re: Langer String nur lesen

Beitrag von Bedo » Mittwoch 2. November 2011, 23:38

Hallo an alle

@Kaktus:
Erst mal Entschuldigung dass es bei mir so lange dauert. In meinem Beruf haben wir Sommersaison (Kältetechnik) und erst im Winter mehr Zeit. Das Projekt an dem ich hier arbeite ist nicht so dringend und wurde deshalb nach hinten verschoben.

Das mit dem $0A war ein Fehler meinerseits. Ich hatte mit HTerm und VSPE eine Serielle Schnittstelle simuliert und in HTerm ASC statt HEX gesendet. Da kam dann natürlich kein $0A vor. Komischerweise hat es an der Anlage aber auch nicht funktioniert. Voraussichtlich nächste Woche werde ich wieder dort sein und es Testen.
Dann habe ich festgestellt, dass das erste Zeichen im String ein $00 ist und damit von PL beim Vergleichen nicht gelesen wird. Deshalb habe ich es mit der Funktion $DEL gelöscht.
Die $HOLD-Funktion verutschte mir immer eine Zeile, deshalb habe ich mit einem Monoflop nach dem $CMP nur einen Puls zum $HOLD geschickt und das Ganze mit DLY1 am CK-Eingang von $CR1 langsamer gemacht.

Anbei den geänderterten Projektvorschlag von KAKTUS. Diese Version ist nur der Grundstein. Es sollen später die meisten Werte angezeigt und teilweise aufgezeichnet werden.

Vielen Dank nochmal an KAKTUS und Abacom, dadurch habe ich viel über das Serielle Protokoll gelernt und kann es in Zukunft besser anwenden.

Und nun zu compander,

ich weiß nicht ob ich darüber überhaupt ein Wort verlieren soll.
Aber ich mach es mal um mich abzureagieren.
Pkt. 1: Ich hatte nach einem Tip gefragt wie mann ein solch lange String einlesen kann, da ich mit verschiedenen Ansätzen meinerseits nicht weiter kam. Mein Projekt hatte ich genannt: Steuerung sendet langen String der ausgewertet werden soll.
Pkt. 2: Das man Hyperterminal-Ausdruck nichts anfangen kann habe ich nicht gewusst. Hätte ich es gewusst, wäre ich bestimmt so in der Materie, dass ich die Frage wahrscheinlich gar nicht gestellt hätte.
Pkt. 3: Die 2. Datei kann man mit einem HEX-Editor anschauen und die Steuerzeichen auswerten. Das hat mir bei der zeilenweisen Auswertung sehr geholfen. Ich wüsste nicht wie man sonst Dateien auswerten soll, wenn man nicht weiss was drinnen steht.
Pkt. 4: Der Lösungsvorschlag von KAKTUS wurde schon vor deinem Komentar dankbar angenommen. Er hat mir im Gegensatz zu dir geholfen.

Ich denke, in diesem Forum können Themen angesprochen werden, die nur für einen selbst wichtig sind. Oder gibt es da einen Filter der nur Themen die viele interessieren durchlässt?
Ein guter Fachmann hilft auch denen die es nicht so gut können. Eigenbrödler nützen der Allgemeinheit nur wenig.


Viele Grüße Bedo
Dateianhänge
Lange Strings 3.prj
(5.16 KiB) 267-mal heruntergeladen

KAKTUS
Beiträge: 645
Registriert: Samstag 18. Oktober 2008, 21:12

Re: Langer String nur lesen

Beitrag von KAKTUS » Donnerstag 3. November 2011, 00:05

@bedo

Schaut so gut aus ! Richtig , am Anfang wird NUL gesendet, was du mit $DEL ausfilterst.

Das müßte eigentlich so gehen.

Viel Erfolg !
stachlige Grüße, Kaktus

Bedo
Beiträge: 9
Registriert: Dienstag 14. Oktober 2008, 15:27

Re: Langer String nur lesen

Beitrag von Bedo » Samstag 26. November 2011, 17:30

Hallo an alle,

hier mein fast fertiges Projekt und es läuft auch vor Ort. Da es lebt wird es auch weiter ständig erweitert.
Vielen Dank nochmal für eure Hilfe.

Grüße
Bedo
Dateianhänge
Absorber-Logger Heisswasser.prj
(46.35 KiB) 248-mal heruntergeladen

Antworten

Zurück zu „Thema RS232“