Problem mit Auswertung Daten von RS232 Modul

ralfh02

Level-2
Beiträge
58
Reaktionspunkte
10
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Forumexperten ,

zum Hintergrund der ganzen Sache, ich habe im Haus 14 Rollläden die ich mit dem ILC131 steuere. Das Ganze mit HMI usw. funktioniert. Ich will allerding in einer Wohnung 4 Rollläden zusätzlich mit Fernbedienung steuern können. Dazu habe ich mir eine 8 Kanal Funkfernbedienung von Velleman K8058 zugelegt, dazu das Empfangsmodul RX433N auch von Velleman. Dieses Empfangsmodul liefert ein TTL Signal das ich mit einem Pegelwandler zu RS232 wandle. Steuerungsseitig ist am ILC131 (FW4.60, HW02) eine IB IL RS232-PRO angeschlossen. Dazu verwende ich PC-Worx 6.30.1914. Die Funktionsbausteine stammen aus der Bibliothek „Communikation_V1_10“.
Die Schnittstelle habe ich entsprechend der Funkfernbedienung mit “2400 Baud, 8 Datenbits, 1 Stoppbit, keine Parität“ parametriert. Das Ganze läuft in einem 10ms Task.
Die Fernbedienung liefert einen Datenblock von 5 Byte fortlaufend wiederholt so lange der Knopf gedrückt ist. Die Auswertung der empfangenden Daten funktioniert.
Mein Problem ist es nun die richtigen Parameter für die Kommunikation zu finden, ich habe durch langes experimentieren die Task Zeit auf 10ms gelegt und den Parameter „uiRcvLength“ auf 20, so das 4 Blöcke ankommen müssen damit ich Daten erhalte. So funktioniert das Ganze ca. 2 Tage, dann geht die CPU in Stop wegen „Feldgrenzen außerhalb gültigem Bereich“. Ignoriere ich diesen Fehler durch einfügen des entsprechenden System_Task geht die CPU durch Watchdog-Fehler in Stop. Bei anderen Parametern der Task zeit oder „uiRcvLength“ zB. auf 5 kommen diese CPU Fehler meisten sofort.
Aufgefallen ist mir das die RX-LED am IB-IL_RS232 Modul ständig leuchtet also jede Menge Datenmüll empfangen wird. Deshalb habe ich jetzt ein anderen Empfänger angeschlossen (SHR-7 von SVS Nachrichtentechnik) damit flackert die RX-LED nur noch und das Ganze läuft jetzt seit 3 Wochen ohne Probleme.
Ich würde jetzt gern verstehen wollen was hier passiert um das Ganze auch stabil zu gestalten, also wie solch eine Kommunikation korrekt parametriert wird. Vielleicht kann jemand dazu eine kurze Erklärung geben.
Am Ende kann ich natürlich auch eine 8-Kanal Relaiskarte und 8 binäre Eingänge verwenden aber das gefällt mir nicht so.
Ich bedanke mich schon im Voraus
VG Geralf
 

Anhänge

  • POE.jpg
    POE.jpg
    201,5 KB · Aufrufe: 27
Hallo Gerald,
der Laufzeitfehler "Feldgrenzen außerhalb gültigem Bereich" tritt letzten Endes auf wenn die Grenzen eines Arrays unter- bzw. überschritten werden.
Gerne passiert das durch einen dynamischen Index, hier sollte vorher via z.B. If Anweisung geprüft werden ob die Grenzen eingehalten werden.

Entweder gibt es dort noch ein Array in Deiner Applikation, welches den Fehler hervorruft oder ggf. ist ein Bug im Funktionsbaustein schuld.
--> Die von Dir verwendete Library ist bereits sehr alt, hier macht ggf. so oder so ein update Sinn. In der Youtube Playlist wird gezeigt wo du die Libraries finden und einbinden kannst.
https://www.youtube.com/watch?v=EzZBRLGoR2U&list=PLXpIBdAgtoRI1m8lgAslwy7EAWrWa_qhE
--> Die neue Library heißt "Serielle Kommunikation"

Ein Wort noch zu den Systemtasks.
Natürlich kannst du Runtime Fehler abfangen und ggf. durch ein Continue quittieren.
Wird aber das eigentliche Problem nicht beseitigt, kommt es zwangsläufig zu Folgefehlern, wie z.B. ein Task Watchdog.

Gruß
Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Frank ,
Danke für den Hinweis mit der veralteten Library , ich werde die Neuere einsetzen und beobachten ob noch Probleme auftauchen.
Die Sache mit den Systemtasks hatte ich auch nur gemacht um die Problematik evt. eingrenzen zu können. Interessant war das beim Auftreten des "Feldgrenzenfehlers" kein eigenes Array verwendet wurde.
Gruß
Geralf
 
Zuletzt bearbeitet:
Hallo Frank ,
ich habe die neue Library eingesetz und keinerlei Probleme mehr. Das Ganze funktioniert jetzt so wie es soll.
Gruß
Geralf
 
Zurück
Oben