RS232 zwischenspeichern und bei Signal ausgeben?

Gast #1670105
Lesenswert?
• ▲
▼
Hallo,

ich habe eine Verpackungsmaschine, die im Durchschnitt etwa alle 3 
Minuten ein 20 Byte langes Auftrragsdatenpaket von einem Server per 
RS232 erhält. Die Maschine benötigt zur ausführung ca. eine Minute, in 
dieser Zeit werden Daten verworfen. Ich möchte diese nun mit einer 
Schaltung zwischenspeichern und bei einen High-Puls auf einer 
Steuerleitung an die Maschine Weiterleiten. Normalerweise wird dieser 
vom Server ausgewertet, aber wir verwenden eine andere Software die das 
nicht kann, weiteres habe ich keinen Zugriff auf den Server, es kommt 
also nur eine Hardwarelösung in Frage. Es sollten etwa 10 Datenpakete 
gespeichert werden können, also 200 Byte. Falls mehr möglich ist, so 
wäre das natürlich kein Problem.
Die Baudrate ist beidseitig 300, 8 Bits und 1 Stopbit.
Wie könnte ich das am Besten realisieren? Reicht dafür ein Ram, oder 
muss da ein AVR her?
#1670143
Lesenswert?
• ▲
▼
Rolf schrieb:

> Die Baudrate ist beidseitig 300, 8 Bits und 1 Stopbit.
> Wie könnte ich das am Besten realisieren? Reicht dafür ein Ram, oder
> muss da ein AVR her?

Ein RAM alleine kann keine seriellen Daten verarbeiten. Also muss ein 
kleiner Controller her, z.B. ein AVR. Die 200 Byte passen leicht in 
dessen internen RAM.

Musst du noch jemand finden, der dir das realisiert. Kostet beim Profi 
ein paar 100 Euro.

Grüß, Peter
Gast #1670218
Lesenswert?
• ▲
▼
Die Hardware kann ich selbst, die Software zum Großteil auch.

Mein Lösungsansatz:

Der AVR empfängt die Daten und speichert sie der Reihe nach im RAM.
Sobald die Steuerleitung der Maschine auf high geht, wird ein externer 
Interrupt ausgelöst und der erste Wert per UARt ausgegeben. Nur muss ja 
dann der gesamte RAM um 10 Byte nach verne verschoben werden, hier endet 
aber mein Wissen, daher wäre ein Pseudocode hilfreich.
#1670387
Lesenswert?
• ▲
▼
@  Rolf (Gast)

>Daten empfangen und in den FIFO schreiben

Ja

>Bei Steuerleitung = 1 über Interrupt den Letzten Wert ausgeben.

Naja, ich denke nicht, dass man hier wirklich einen Interrupt 
braucht. So schnarchlangsam wie das alles läuft ;-)

Ausserdem ist es besser, dein Signal von der Maschine solide zu 
entprellen, gerade im Industrieumfeld.

Alles in allem brauchst du nur einen ATtiny2313, einen MAX232 und einen 
Quarz, 1 MHz ist mehr als genug.

MFG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.