Forum: Mikrocontroller und Digitale Elektronik digitales Signal in Rs232 Botschaft umwandeln


von Tommy (Gast)


Lesenswert?

Hallo Kollegen,

folgendes Problem versuche ich gerade mit günstigsten Mitteln zu lösen, 
da es für die freiwillige Feuerwehr gedacht ist.

Zur Verfügung steht mir ein Relaiskontakt welcher schließt wenn ein 
Alarm ausgelöst wird.

Ich habe eine Software die auf der RS232 Schnittstelle "schüffelt" und 
auf eine 8Bit Nachricht mit einer "1" wartet (00000001). Sobald diese 
rein kommt, wird der  Alarm per Netzwerk an die Kollegen weiter 
geleitet.

Demzufolge besteht jetzt die Herausforderung darin, aus dem 
Relaiskontakt eine sinnvolle RS232 Botschaft zu generieren.

Wie bereits geschrieben, ist das finanzielle Budget beschränkt. Außerdem 
bin ich in der Programmierung von µC nicht besonders fit.

Hat jemand eine günstige Idee, wie ich das Problem lösen kann?

Vielen Dank schon mal im voraus!

Gruß Tommy

von 6a66 (Gast)


Lesenswert?

Tommy schrieb:
> Hat jemand eine günstige Idee, wie ich das Problem lösen kann?

Das kann jedes billigste uC Board mit RS232 (Arniduo :), STM32 DISCOS, 
und tausend andere). RS232 initilisieren, Port abfragen, Text senden.
Überlege aber bitte auch, ob das Thema wirklich so trivial ist: Was, 
wenn auf dem uC durch EMV das Bit am Port tatäschlich mal 1 wird obwohl 
das Relais nicht geschaltet hat, was wenn die textmessage gestört wird, 
der Text 0x01 gesendet wird aber 0x00 beim Emfpänger ankommt, ...). Hier 
sind Sicherungsmaßnahmen gefragt (saubere Entprellung am Eingang, HW und 
SW, Doppelte Übertragungen, Parity oder Checksumme, ...). Mag sein dass 
das nicht sicherheitrelevant ist, ungewollte Einsätze oder nicht 
gerufene Kollegen danken es Dir.

rgds

von Tommy (Gast)


Lesenswert?

Vielen Dank für deine Antwort :)

Darüber habe ich durchaus auch schon nachgedacht, eine kleine 
Vorbeschaltung wäre nicht das Problem um das Relais zu entprellen.
Diese Software ist nur dafür gedacht, dass die Kollegen angeben können 
in welcher Zeit sie da sein können (5min, 10min, usw.). Der eigentliche 
Alarm kommt über den extra Piepser.

Zu deiner Lösung:
Das habe ich mir bereits gedacht, dass man das Problem nur damit lösen 
kann. Es fehlen dabei eben nur fundierte Kenntnisse in der µC 
Programmierung.
Ich denke das ist mit einem erheblichen Zeitaufwand verbunden eh ich 
oder mein Kollege soetwas zustande gebracht haben. :)

Daher würde ich meine Frage noch um den Punkt "schnell zu realisieren" 
erweitern.

Eine Idee die wir noch hatten war, einen digitalen Input der RS232 
Schnittstelle zu nutzen (RI, DTS, etc.), ein Script am Rechner schreiben 
welche auf einem virtuellen COM Port dann die Nachricht an die Software 
weiter leitet. Sicher keine elegante Lösung, aber wäre noch ein 
Lösungsansatz.
Das Programmierproblem besteht natürlich weiterhin :)

Gruß Tommy

von 6a66 (Gast)


Lesenswert?

Tommy schrieb:
> Sicher keine elegante Lösung, aber wäre noch ein
> Lösungsansatz.

Sicher. Ein Ansatz. Der Rechner muss die ganze Zeit laufen, die SW-muss 
programmiert werden.
Andere Ansätze: CPDL mit nachfolgendem RS232 Treiber, EEPROM mit Zähler 
als Statemachine, NE555 als Oszillator mit genau der Baudrate der 
startet wenn das Signal 1 wird und dann 0x55 oder 0xaa permanent sendet 
(hat dann aber kein CR/LF), ...

Ideen gibt es viele. Du sprichst aber nicht davon welche Umgebung Du 
hast und was Du realisieren kannst.

rgds

von Captain Albern (Gast)


Lesenswert?

Wenn das Relais länger geschaltet ist als ein paar ms, evtl. dauerhaft 
während des Alarms und die Sache wirklich nicht sicherheitskritisch, 
könnte man den Controller auch direkt vom Relais schalten lassen und er 
sendet einfach immer die gleiche Botschaft solange er an ist. Dann 
bräuchte man nur noch eine Batterie oder ein Netzteil.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Tommy schrieb:
> Hat jemand eine günstige Idee, wie ich das Problem lösen kann?
Das Bitmuster, das erzeugt werden muss, ist zwar einfach, aber trotzdem 
recht aufwändig zu erzeugen, wenn man es dirkret aufbauen möchte:
1
+10V               _   _____________
2
                  | | |             |
3
                  | | |             |
4
-10V   ___________| |_|             |______
5
                   S 0 1 2 3 4 5 6 7 S
6
                   t                 t
7
                   a                 o
8
                   r                 p
9
                   t

Tommy schrieb:
> Ich habe eine Software die auf der RS232 Schnittstelle "schüffelt" und
> auf eine 8Bit Nachricht mit einer "1" wartet (00000001).
Könntest du die Software nach einer 80hex = 10000000bin oder nach F0hex 
schnüffeln lassen?
Dann wäre das Bitmuster viel einfacher und ein einziges Monoflop reicht 
aus:
1
80hex:
2
3
+10V               _______________
4
                  |               |
5
                  |               |
6
-10V   ___________|               |________
7
                   S 0 1 2 3 4 5 6 7 S
8
                   t                 t
9
                   a                 o
10
                   r                 p
11
                   t
12
F0hex:
13
+10V               _________
14
                  |         |
15
                  |         |
16
-10V   ___________|         |______________

6a66 schrieb:
> Andere Ansätze: CPDL
Ich glaube, dass es für einen Anfänger einfacher ist, einen kleinen uC 
zum Laufen zu bekommen, als einen Zustandsautomaten auf einem CPLD... 
;-)

: Bearbeitet durch Moderator
von Einer K. (Gast)


Lesenswert?

Tommy schrieb:
> ... welche auf einem virtuellen COM Port ....

Also war die vorherige Festlegung auf RS232C nur eine Nebelkerze, welche 
die Sicht auf das Problem verstellen wollte....


Ein Arduino Nano kann das geschaltet Relais erkennen.
Käbelchen werden dazu nötig sein.

Der Nano verhält sich über USB so am PC als hätte er RS232C 
implementiert.

Es ist kein Problem, das Relais in Software zu entprellen.

Es ist kein Problem, für den Nano, den String 000001 an den PC zu 
senden.


Kosten des Projektes: unter 4 Euro
Zeitaufwand, incl. erwerben rudimentärer Programmierkenntnisse, ca 1 
Monat

von Tommy (Gast)


Lesenswert?

Captain Albern schrieb:
> einfach immer die gleiche Botschaft solange er an ist

Das ist noch ein Punkt den ich nicht erwähnt habe.

1. zu dieser Funktion in der Software gibt es keine Dokumentation und 
den Entwickler erreichen wir nicht. Daher sind unsere Informationen 
dahingehend etwas begrenzt. Was wir bisher wissen ist, wenn wir mit 
einem anderen Rechner eine 00000001 schicken, reagiert die SW  mit einem 
Alarm. Wenn wir aber 11111111 schicken, schickt es 8 Alarme raus :) Also 
es darf defintiv nur eine 1 sein.

6a66 schrieb:
> Du sprichst aber nicht davon welche Umgebung Du
> hast und was Du realisieren kannst.

Ich bin zwar Elektroniker, aber die Schaltungsentwicklung ist bei mir 
(leider) schon eine Weile her, wodurch ich auf dem Gebiet nicht mehr 
ganz fit bin.
Zur Verfügung steht auf jeden Fall ein PC/Server auf dem die 
Alarmierungs-Software 24/7 läuft.
Auf Arbeit stehen mir auch Lötkolben, etc. zur Verfügung, aber bei mir 
fehlt es an Zeit mich ausgiebig mit dem Thema zu beschäftigen. Daher war 
meine Hoffung, dass eventuell jemand von Euch ein ähnliches Problem 
hatte/eine kaufbare Lösung kennt oder dergleichen.

Vielen Dank erstmal für Eure Unterstützung!

PS: Unser Programmierer auf Arbeit hat mir gerade eine Lösung angeboten 
die er auch zügig umsetzen könnte.
COM1 mittels kleiner Software das RI Signal überwachen. Wenn RI Signal 
kommt, auf COM1 die Botschaft 000000001 raussenden. Die COM1 dann 
Hardwaremäßig mit gekreuztem Kabel mit COM2 Verbinden und in der 
Alarmierungssoftware COM2 überwachen.

Könnte funktionieren :)

von Tommy (Gast)


Lesenswert?

Lothar M. schrieb:
> Könntest du die Software nach einer 80hex = 10000000bin oder nach F0hex
> schnüffeln lassen?

Leider haben wir keinerlei Einstellungsmöglichkeiten in der Software. 
Das einzige was wir auswählen können ist den COM Port.
Als Kommentar steht in der Software "zum Anschluss einen binären Relais 
(sendet 1'en wenn Alarm ausgelöst wird)."

Für den Kommentar hat der Programmierer eigentlich eine Ohrfeige 
verdient :)

durch probieren haben wir schlussendlich herausgefunden, das er nur auf 
pro Alarm auf 00000001 reagiert.

von 6a66 (Gast)


Lesenswert?

Lothar M. schrieb:
>> Andere Ansätze: CPDL
> Ich glaube, dass es für einen Anfänger einfacher ist, einen kleinen uC
> zum Laufen zu bekommen, als einen Zustandsautomaten auf einem CPLD...
> ;-)

Hallo Lothar,

RICHTIG.

Tommy schrieb:
> Ich bin zwar Elektroniker, aber die Schaltungsentwicklung ist bei mir
> (leider) schon eine Weile her, wodurch ich auf dem Gebiet nicht mehr
> ganz fit bin.
> Zur Verfügung steht auf jeden Fall ein PC/Server auf dem die
> Alarmierungs-Software 24/7 läuft.
> Auf Arbeit stehen mir auch Lötkolben, etc. zur Verfügung, aber bei mir
> fehlt es an Zeit mich ausgiebig mit dem Thema zu beschäftigen. Daher war
> meine Hoffung, dass eventuell jemand von Euch ein ähnliches Problem
> hatte/eine kaufbare Lösung kennt oder dergleichen.

Aaaaaaaaarrrgh :(
Wenig Schaltungskenntnisse, keine Programmmierkenntnisse. Keine Zeit. 
Das Thema hatten wir gerade in eiem anderen Thread.

Tommy schrieb:
> PS: Unser Programmierer auf Arbeit hat mir gerade eine Lösung angeboten
> die er auch zügig umsetzen könnte.
> COM1 mittels kleiner Software das RI Signal überwachen. Wenn RI Signal
> kommt, auf COM1 die Botschaft 000000001 raussenden. Die COM1 dann
> Hardwaremäßig mit gekreuztem Kabel mit COM2 Verbinden und in der
> Alarmierungssoftware COM2 überwachen.

Machen.

rgds

von Georg (Gast)


Lesenswert?

Tommy schrieb:
> Demzufolge besteht jetzt die Herausforderung darin, aus dem
> Relaiskontakt eine sinnvolle RS232 Botschaft zu generieren.

Das gibt es fertig, nennt sich Störmelder, z.B.

https://www.welotec.com/de/sms-email-stoermelder-mt-021

Georg

von Minetti (Gast)


Lesenswert?

Sonst:

Habt ihr ne (Fach-)Hochschule in der Nähe? Mal bei nem Prof 
durchklingeln und Fragen, ob er nicht Studenten hat, die noch ne 
Semesteraufgabe suchen.

von Tommy (Gast)


Lesenswert?

6a66 schrieb:
> Aaaaaaaaarrrgh :(
> Wenig Schaltungskenntnisse, keine Programmmierkenntnisse. Keine Zeit.
> Das Thema hatten wir gerade in eiem anderen Thread.

Ja, in der heutigen Zeit leider ein viel zu brisantes und unterschätztes 
Problem.

6a66 schrieb:
> Machen.

Alles klar!! :)

Georg schrieb:
> Das gibt es fertig, nennt sich Störmelder, z.B.

Ich vermute, das übersteigt das Budget was sich im unteren zweistelligen 
Bereich befinden soll.

@alle:
vielen Dank erstmal für Eure Hilfe, wir werden das Thema mit den zwei 
Rs232 Schnittstellen in Angriff nehmen. Sollte das so nicht 
funktionieren, würde ich mich noch mal melden!

Gruß Tommy

von M. K. (sylaina)


Lesenswert?

6a66 schrieb:
> nicht
> gerufene Kollegen danken es Dir

Unwahrscheinlich wenn sie nie erfahren, dass es nur der Beschaltung zu 
verdanken war, dass es keinen Fehlalarm gab ;)

von 6a66 (Gast)


Lesenswert?

M. K. schrieb:
> Unwahrscheinlich wenn sie nie erfahren, dass es nur der Beschaltung zu
> verdanken war, dass es keinen Fehlalarm gab ;)

Nein, umgekehrt. Aus der 0x00 wird um 02:30 in der Nacht durch einen 
Störimpuls des benachbarten Löschkühlschranks eine 0x01 und die Kollegen 
freuen sich darüber dass sie geweckt wurden .... oder was auch immer.

rgds

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.