TIA Lösungsansatz für Telegramme an PC gesucht (Abarbeitung)

gerdh

Level-2
Beiträge
107
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo !

Ich suche nur nach einem Ansatz wie man etwas programmtechnisch lösen kann. Es gibts zwar eine Lösung von Kollegen, aber die gefällt mir nicht und ist zu unflexibel, weil bei einer neuene Anlage (die Anwendung an sich wird oft verwendet) man zig Anpassungen machen muss, und wenn man das Ganze nicht programmiert hat, man sich entsprechend schwer tut (mal davon abgesehen das man sich bei den Querverweisen einen Wolf sucht)
Folgendes Szenario:
Eine SPS schickt an einen PC Telegramme (über ne TCP Verbindung) und kriegt in der Regel auch ne Antwort (die muss man dann auswerten) Ausnahme hier ist ein sog. Live Telegramm (das bedarf keiner Antwort , ist nur da damit der PC bzw. dessen Anwendug weiss die Maschine "lebt".
Mir geht es jetzt darum eine Art FIFO für die Sendetelegramme (was nix weiteres ist als ein Struct) bei dem erst gesendet wird wenn die Antwort vom vorherigen Telegramm da ist (ausser natuerlich beim Alive) das mit dem Fifo ware keine Problem, aber eben mit dem verriegeln bis die Antwort da ist, ich könnte auch alles senden ohne auf Antwort zu warten, aber dann kann es sein das die Antworten durcheinander kommen (z.B. ich schicke ein Telegramm fuer ne Anfrage (da guckt der PC in ner Datenbank) und dann eines wo nur Daten zum speichern drin stehen... dann kann es sein das die Antwort fuer letzteres zuerst kommt weil der PC ja erst die Anfrage bearbeitet aber die Daten schon gesprichert hat.

Habe ihr ne Idee wie man das loesen koennte ?

Gruss gerd
 
Kommt mir irgendwie bekannt vor, darf man Fragen wo die Firma die die PC Anwendung macht herkommt ?

Dir geht es darum, dass das Live Telegramm nicht normalen Telegrammen vermischt wird oder wie ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi !

Die Firma sind wir selber :)
ja sprich es gibt Telegramme die einer antwort bedürfen bevor was anderes gesendet wird und Telegramm wo nicht drauf gewartet werden muss.
Aber wenn drauf gewartet werden muss, warte ich auf ein bestimmtes Telegramm (da steht z.B. IO oder NIO drin oder irgendwelche Daten zur weiterbearbeitung)

Gruss Gerd
 
Ich löse so etwas in einer Schrittkette. Jedes Telegramm hat eine eigene. Einmal wird halt auf die Antwort gewartet, ein anderes mal ist nach dem erfolgreichen senden Schluss.


Was macht es für einen Sinn wenn man auf ein Live-Telegramm keine Antwort bekommt ?
 
Ueber Sinn und Unsinn bei manchen Aktionen diskuttiere ich schon lange nimmer mit denen die das verbrochen haben bzw. immer noch dabei sind :)
Ich muss das quasi als "von Gott gegeben" hinnehmen
 
Moin,
Ich verwende etwas ähnliches, wenn ich mir meine Telegramme durch ein Acknowledge-Telegramm von der Gegenseite bestätigen lasse. Dann schicke ich so lange kein neues Telegramm, bis mir mein letztes sozusagen quittiert wurde. Mein Ablauf:
1. Kopiere Telegramm aus Sende-Fifo in Sende-Daten-DB
2. Stoße Sende-Auftrag an
3. das Done vom TSend setzt den Sendeauftrag zurück und setzt die Varaiable "WaitForAcknowledge" (diese blockiert ein neues Senden)
4. Die Empfangsdaten von TRcv auswerten und schauen ob das Empfangene Telegramm meiner erwarteten Quittierung entspricht.
5. Die Variable "WaitForAcknowledge" bedient gleichzeitig einen Timer um nach Zeit x ggf. das letzte Telegramm erneut zu senden (weil es wohl nicht beim Empfänger angekommen ist)
6. Erst wenn das korrekte Acknowledge-Telegramm von der Gegenseite bei mir angekommen ist, setzte ich die Variable "WaitForAcknowledge" zurück, wodurch der Ablauf bei 1. von neuem beginnt...

so mal grob erklärt.
 
Zurück
Oben