Categories: Linux

ADAM-6051 Counter zurücksetzen mit C++

In den letzten beiden Stunden habe ich mich wieder mal ein wenig mit unserer ADAM-6051Testmaschine gespielt, Ziel war einmal die Zähler Werte auszulesen und den Zähler wieder auf 0 zu setzen.

Die evaluierungs Version des Modbus Treibers habe ich mir zum Testen organisiert (30-Tage Testversion gibts zum Downloaden).

Das Auslesen der Werte ging ohne große Probleme und nach wenigen Minuten!
Allerdings den Zählerwert dann wieder auf 0 setzen war eine etwas härtere Nuß…

Nach eine Funktion in der Art „resetCounter“ oder „resetRegisters“ habe ich vergeblich gesucht bzw. mit allem was irgendwie in der Art vielversprechend geklungen hat, hat es halt nicht funktoniert.

Nach langem Suchen und Probieren habe ich mit der Funktion „writeCoil“ das Passende gefunden! Allerdings hatte ich erst Erfolg nachdem ich per Zufall mit verschiedenen Funktionen die Register bzw. Coils von 1 bis 100 mit dem Wert 1 versorgt und anschließend quergecheckt habe ob denn die Werte auch auf 0 stehen.

Bei der Funktion „writeCoil“ hatte ich dann Erfolg und anschließend ging es daran heraus zu finden welche Nummer denn die passende ist.

Langer Rede kurzer Sinn die Zuordnung ist wie folgt:

DI-0 == 34
DI-1 == 38
DI-2 == 42
DI-3 == 46
DI-4 == 50
DI-5 == 54

Der Funktionsaufruf lautete dann wie folgt:

mbusProtocol.writeCoil(1, 34, 1);

Und schon wird DI-0 auf 0 gesetzt.

Wer sich jetzt fragt wozu das Ganze? -> Maschinen-/Betriebsdatenerfassung!

Das ADAM-6051 Modul bekommt an den 6 Anschlüssen von verschiedenen Sensoren die an der Maschine befestigt sind entsprechende Signale und zählt einfach mit. Die Register DI-6 bis DI-11 arbeiten nicht als Counter sonder als Frequenz Anzeige – liefern also die Stk/Sekunde.

Ein Steuerrechner liest diese Werte permanent vom ADAM’s Modul aus und schreibt sie in eine lokale MySQL Datenbank. Am Steuerrechner kann via Webinterface ein Auftrag an-/abgemeldet und der aktuelle Auftragsstand abgelesen werden.

Sobald ein Auftrag beendet wird, wird dieser dann an unseren Datenbank Server übertragen. Dadurch kann die ganze Erfassung auch unabhängig vom restlichen Netzwerk laufen. Lediglich die Auftragsdetails werden dann nicht oder nur unvollständig angezeigt – aber die braucht man in dem Fall nicht zwingend zum Produzieren.

Zusätzlich werden dann noch Störungen automatisch erkannt und protokolliert, die Rüstzeiten erfaßt und entsprechend die jeweilige Ursache mit protokolliert. Und noch ein paar Kleinigkeiten, aber Details dazu die würden den Rahmen hier wirklich sprengen 🙂

Das Foto zeigt übrigens meine Teststellung – herzlichen Dank noch einmal an unsere Betriebselektriker, funktioniert perfekt das Ding!!!

Manfred

Recent Posts

VM – ZFS Partition online vergrößern

Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…

1 Jahr ago

Samba Password History für einen User löschen

Meine Suche bei Google hatte mal wieder keinen vernünftigen Treffer gelandet, das Problem - ich…

1 Jahr ago

HP Eine Firma von der ich nicht mal geschenkte Drucker nehmen würde!!!

Ich muss mal eben etwas Druck ablassen, ein Kunde von mir setzt einen Drucker von…

2 Jahren ago

IRMC Console Redirection ohne Lizenz

Wer beim Server bestellen vergessen hat die erweiterte IRMC Lizenz zu ordern, der steht vor…

2 Jahren ago

WOL im BIOS aktivieren reicht nicht immer

Ich nutze seit langer Zeit ein System für meine Backups welches in der Nacht von…

2 Jahren ago

Apache Guacamole mit TOPT – funktioniert nicht

Es scheint wohl eine noch nicht so häufig genutzte Kombination zu sein - Apache Guacamole…

2 Jahren ago