MODBUS Variable anlegen

Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie kann ich in CoDeSys (genauer SoMachine 4.3) eine MODBUS Variable deklarieren?

Ist:
M241 Steuerung mit HMISTO705 über MODBUS RS232.

Im HMI habe ich einen MODBUS-Slave Treiber nach Anleitung eingebunden => jetzt kann ich hier nur Merkerbits und Merkerworte definieren.
In SoMachine habe ich auf Seriell 1 (RJ45) den Modbus-Manager angelegt, da ich beim Modbus IO-Scanner nur IOs anlegen kann.

Die Schnittstelle steht auf beiden Seiten gleich auf:
Baud: 19200
Parität: gleich
Stopp: 1
Daten: 8

Wenn ich Variablen deklarieren will, mache ich das ja im allgemeinen so:

VAR

VAR1:BOOL;
VAR2:WORD;

END_VAR

Jetzt habe ich ja keine Zuweisung, dass diese beiden Variablen auf den MODBUS führen ... z.B.: %M0, %MW1
Wie definiere ich das? Ich habe versucht, sowohl im POU als auch in der GVL:

VAR

VAR1 AT%M0:BOOL;
VAR2 AT%MW1:WORD;

END_VAR
(Hab ich so im WWW gefunden)

Global wird das ohne Meldung übersetzt, führt aber beim hochladen auf die M241 zu einem Systemabsturz. Im POU wird das nicht mal übersetzt.
Ist meine Syntax überhaupt korrekt?

Über Eure Hilfe wäre ich sehr erfreut
icon7.png


Danke und bis bald!
Steffen
 
Hallo,

also eigentlich musst Du in SoMachine nur das HMI mit in dein SoMachine Projekt aufnehmen (ins gleiche Projekt wie die M241). Dann an der SPS Applikation eine sogenannte Symbolkonfiguration hinzufügen. In der Symbolkonfiguration die Variablen der SPS auswählen, die Du gerne im HMI bearbeiten willst. Danach aus dem LogicBuilder heraus die HMI Anwendung öffnen. Jetzt öffnet sich der VijeoDesigner und die Variablen sollten dir automatisch zur Verfügung stehen. Dann musst keine Modbus E/A Treiber mehr definieren und auch mit den Modbus Adressen hast Du keinen Ärger mehr, weil SoMachine das alles automatisch mit dem VijeoDesigner ausmacht.

Der von dir beschriebene Weg müsste auch funktionieren, ist aber umständlicher und unsicherer, weil Du dich komplett um die Konsistenz der Daten und die Adressen kümmern musst.

Was heisst denn Du bekommst einen Absturz beim Laden der SPS? Was stürzt ab, was funktioniert nicht?

Eigentlich sieht die Syntax, die Du beschreibst nicht so schlecht aus.

Grüße
Jörg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

eins fällt mir gerade doch noch auf.

Bei Var1 stimmt die Adresse nicht. Es muss heissen:

Var1 AT %MX0.0 : BOOL

Generell braucht es noch Leerzeichen zwischen "AT" und der Adresse.

Var2 AT %MW1 : WORD;
 
Hallo Jörg, erst mal Danke für Deine Antwort.

Ich setze wie beschrieben ein HMISTO705 ein. Dieses ist nicht über SoMachine programmierbar. Ich will geziehlt für einen Testaufbau die MODBUS—Verbindung haben. Leider kann ich machen was ich will, ich bekomm keinen Datenaustausch. Ich hab das Kabel nach Anleitung gemacht, hab sowohl Master als auch Slave-Treiber benutzt, hab die Adressbereiche kontrolliert (Danke für den Hinweis — hab mich bei der Bitadresse vertippt). Ich hab jetzt sogar ein weiteres HMI mit MODBUS-TCP zusätzlich angeschlossen und auch hier die ganzen Tests versucht. O.E. . Ich hab irgendein einfaches, grundsätzliches Problem. Auf der TCP-Schnittstelle hab ich den Ethernet-Manager, auf der Seriellen 1 (RJ45) den MODBUS-Manager aktiviert, da ich am HMI nur M-Adressen anlegen kann. Ein IO-Scanner bringt mir da ja nichts. Ich komm einfach nicht weiter.

Hast Du noch eine Idee?

Nochmal Danke!

Steffen
 
Hi,

also die M241 sollte grundsätzlich erstmal Modbus Slave (seriell) bzw. Modbus Server (TCP) sein.

Bei Modbus TCP muss nur der Modbus Server aktiviert sein und die IP Adresse konfiguriert sein:

TCP Server aktiv.png
IP Adresse konfigurieren nicht vergessen (schlechter Screenshot)


Bei Modbus Seriell, sollte der Modbus Manager da sein und als Slave konfiguriert sein:

Modbus Manager.png

Im HMI brauchst Du dann einen Modbus TCP Client oder Modbus Seriell Master Treiber.

HMI Treiber.jpg

Richtige IP Adresse oder Modbus Seriall Adresse der SPS einstellen und eine passende z.B. UINT Variable auf %MW1 anlegen
Viel mehr sollte es nicht sein.

Ich kann es leider gerade nicht ausprobieren, weil ich im Hotel keine SPS und HMI griffbereit habe ;)

Grüsse
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jörg,

hier ein kurzer Zwischenbericht:
Die TCP-Verbindung läuft fast. Leider habe ich noch ein Problem:

Die Wortadressen %MW0/1/2 funktionieren jetzt. Die Bitadresse %MX0.0 geht in SoMa gar nicht, erst die %MX0.1 => das ist aber ok. Problem ist, dass ich im HMI kein %MX0.1 adressieren kann. Ich kann nur %Mx angeben x=0..n. Oder %MWx:Xyy (z.B. MW0:X00).
Egal wie ich das einstlle, verschiebe, mit IEC und ohne - das bit geht nicht. In SoMa kann ich wiederum nur M0.1 als Bool anlegen. Ein MW0:X00 :Bool geht nicht. ISt da wieder meine Syntax falsch? Oder muss ich das anders deklarieren als mit :X ... ich tu mich mit der Hilfe und dem Handbuch schwer, werde aber parallel suchen und ggf. hier den neuen Stand eintragen.

Die Serielle Verbindung will einfach nicht tun. Da geht garnix. Ich versuch es weiter.
Danke für Deine Unterstützung - toll, dass es Leute wie Dich gibt!

Gruß,
Steffen
 
Hallo,

Zur Info: Meine Pinbelegung ist (M241 / STO705)

1 - 9
2 - 8
8 - 5

und am STO705 hab ich noch 3 auf 4 gebrückt. Sollte doch stimmen, oder?

Gruß,
Steffen
(der immer weiter vorwärts kommt - Dank Hilfe)
 
Zuletzt bearbeitet:
Hallo,

neuer Stand:
TCP = IO
Die Bitadressen müssen über die Worte ausgetauscht werden => %MW3:X9
ACHTUNG:
Hier fällt es jetzt sofort auf => diese Adresse ist in der M241 die Adresse %MX7.1 !!!! Es muss die Bytedrehung beachtet werden und außerdem, dass bei dieser Adressierung in der SPS nicht 16Bit sondern 8Bit - also ein Byte pro Adressse verrechnet wird (Normal ist ja ein Wort) !!!
Ein Adressieren mit den direkten Merkerbitadressen ist uns nicht gelungen. Entweder SoMa ist abgestürzt oder die Adresse wurde nicht angezeigt.

Gruß,
Steffen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

also es ist generell zu beachten, dass in der M241 die %MW Adressen den gleichen Speicherbereich nutzen wie die %MX Adressen.

Also %MW0 ist der gleicher Speicherbereich wie %MX0.0 bis %MX1.7. (Die Bits werden nochmal in Byte aufgeteilt %MX0.0...%MX0.7 und %MX1.0...%MX1.7)
siehe folgendes Bild:

Speicher M241.png

Wenn Du im HMI nur %M adressieren kannst, musst entsprechend umrechnen........ Also, wahrscheinlich entspricht %M0 im HMI der Adressen %MX0.0 in der SPS. Es sei denn die Byte sind auch noch verdreht (MSB/LSB)

Wegen dem seriellen Kabel muss ich nochmal gucken, ob ich eine Belegung finde. Wie gesagt, bin im Hotel und habe nicht alles dabei :cool:
 
Die Pinbelegung von Dir oben beschrieben passt, wenn, dann nur auf RS232. Die Standardeinstellung in der M241 ist aber RS485. Also Vorsicht hier.

Hier die Pinbelegung am RJ45 Seriell Port der M241 (SL1, die RJ45 Buchse oben auf der M241 neben den digitalen Eingängen)

RS485.png
 
Hallo Jörg,

wir haben jetzt alles versucht und zum xtein mal geprüft.
Wir bekommen es nicht zum laufen. Ich hab noch ein HMI mit RS485 da und werde das morgen noch probieren.
Wenn das dann geht, wende ich mich an höhere Stellen. Vielleicht ist das 705 tatsächlich nicht MODBUS-fähig. Habe eine Aussage bekommen, dass das nur an einer ZELION-Steuerung funktioniert, was aber von anderer Seite bereits wiederrufen wurde.
Ich bin jetzt mit meinem Latein am Ende.

Vielen Dank und bis bald.

Gruss,
Steffen
 
Zurück
Oben