e!COCKPIT Hilfe Modbus Bsp.

it-elektro

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

ich habe ein Beispiel zur Modbuskommunikation gefunden.

Grundsätzlich habe ich das Beispiel zum Abruf von Werten aus einem Modebusteilnehmer zum Laufen gebracht.

Da ich aber kein Experte bei der Programmierung in ST bin hätte ich ein paar Verständnisfragen und eine Frage zur idealen Umsetzung.

Die Deklaration des Arrays "aMbData : ARRAY [1..JOBCOUNT] OF POINTER TO WORD;" verstehe ich nicht ganz.
Was bringt hier die Pointerdeklaration?

Beim ersten Lesen schreibt man Daten in die Variablen aMbData[1] := ADR(wRegisterUnit1).
Wozu kann man diese Daten verwenden?

Wie würdet ihr die empfangenen Daten am Besten verarbeiten?
Ich dachte mir, ich würde die Empfangsdaten eben in ein mehrdimensionales Array schreiben. (Array [Job, Daten 0..124])

Geht dies nur mit einer For-Anweisung, oder kann man dies intelligenter kopieren?

Vielen Dank
 
Zuletzt bearbeitet:
Auf die Frage, wie man die Daten am Besten verarbeitet, kann ich dir mit den aktuellen Daten nicht groß weiterhelfen,
da dies m.E. stark vom Einzelfall abhängt, was und wieviel Daten das sind, die du verarbeiten möchtest.

Hätte da aber noch zwei andere Anmerkungen:
- es heißt Modbus, nicht Modebus!
- Warum verwendest du eCockpit? Das ist eine der schlechtesten Software, die vermutlich je existiert hat!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo strgalt,
Danke für den Hinweis zum Mod(e)bus. Hier hat die Autokorrektur zugeschlagen.

Was wäre den ihr Vorschlag bzgl. e!COCKPIT?
Die Konfiguration und Programmierung eines Wago Controllers klappt damit aber meiner Meinung nach ganz gut.
 
Hallo
e!Cockpit wurde von Wago abgekündigt. Eine alternative wäre Codesys 3.5. Ob dies möglich ist hängt allerdings vom Controller ab.

ich habe ein Beispiel zur Modbuskommunikation gefunden.
Wo? In der Doku zu den Bibliotheken in e!Cockpit sind Beispiele enthalten. (WagoAppPLCModbus)

Die Deklaration des Arrays "aMbData : ARRAY [1..JOBCOUNT] OF POINTER TO WORD;"
Dies mag zwar funktionieren, allerdings würde ich auf Pointer wenn immer es geht verzichten. Pointer können extreme Probleme bereiten.

Beim ersten Lesen schreibt man Daten in die Variablen aMbData[1] := ADR(wRegisterUnit1).
?? Dazu müsstest du gesamten Code posten

Wie würdet ihr die empfangenen Daten am Besten verarbeiten?
Ich dachte mir, ich würde die Empfangsdaten eben in ein mehrdimensionales Array schreiben. (Array [Job, Daten 0..124])
Hierzu müsstest du ein paar Aussagen zur Datenmenge machen.
Eine For Schleife ist mit Sicherheit die schlechteste Lösung.
 
Zurück
Oben