Beckhoff CX1010 und IPS. Problem mit Modbus Server

Hallo,

ich habe mein Haus soweit fertig komplett mit Beckhoff und mehreren BK9000 Buskopplern. Jetzt ahbe ich mir IPS und die Modbus TCP Erweiterung geholt, allerdings bekomme ich die nicht installiert. Ich finde auch bei Beckhoff nirgends Anleitungen. Hat da evtl jemand einen Tip für mich??

Mfg M.Plum

Da war ich mal wieder zu schnell. Also der Modbus Server läuft jetzt. Finde aber die Adressen nicht. Habe mehrere probiert. Vielleicht hat da einer nen Tip. Versuche es aber auch weiter

Die Adresse müssten im Handbuch zu dem Beckhoff Modbus/TCP Server sein. Darauf hat IPS keinen Einfluss.

paresy

Beckhoff Information System - German

das ist der Link zu dem Mapping der Adressen.

Um Also jetzt die digitalen ausgänge auszulesen 0xF031 muss ich dann also bei der variable nur lesen anklicken und dann die Adresse 61489.
Stimmt das soweit? Oder klappt das so gar nicht und man muss das mit einem script auslesen?
Gruss Marco

Hallo,

ich mache ziemlich die selbe Sache, und bei mir funktioniert es auch nicht. Habe eine CX1000 und Modbus TCP CE Server.

Ich kann ab der Adresse 0 (in IPS eingestellt) Eingangsdoppelwörter von der SPS lesen. (Bei mir liegen auf den unteren Adressen zwei doppelwörter da ich eine Busklemme gesteckt habe) Die Sache stimmt jedoch zwischen SPS und IPS nicht zusammen. Ich kann auf der SPS den Wert ändern, und der wert in IPS ändert sich auch. Es ist also ein funktionierender lesebetrieb vorhanden. Nur die Werte stimmen nicht. Mein erster gedanke war MSB und LSB tauschen und so weiter…

Hat jedoch nichts gebracht. Was besonders seltsam ist:

ein DW kriegt einen Wert rein. wenn ich nun zwei W auf den Adressbereich des DW lege haben beide W den Wert 0.

toll, ich bin ja echt ein alter Hacker…

Hinter den DW- Adressen der Busklemme liegen dann Bits von normalen Eingängen. Da kriege ich noch gar nichts rein. perfekt…

Die möglichkeit einzelne Modus- Serveradressen aus einem Programm aus zu beschreiben habe ich nocht garnicht verwendet, kommt aber in den nächsten Wochen vieleicht wenn das so weiter geht.

Das einzige was ich also momentan dir voraus bin ist das ich bereits Werte lesen kann. Ich habe einfach bei 0x0 angefangen zu lesen. ( Toll, jetzt habe ich lebendige Werte die keinen Sinn ergeben…)

Sollte ich was rausfinden werde ich es dich wissen lassen. Ich hoffe umgekehrt auch.

mfg stefan

Ich bin die letzten Tage leider nicht zum testen gekommen. Wenn ich Infos habe werde ich mich natürlich melden.
Was für Werte änderst du denn in der SPS das sich bei IPS in Adresse 0 was tut?? Merker??

Gruss Marco

Hallo,
Ich habe eine dali klemme gesteckt, und die empfangsregister dieser karte werden anscheinend an den start des modbusbereiches gesetzt. Ich kann also am programmierlaptop mit der beckhoffsoftware unter dem prozessabbild die werte dieses empfangsregisters live ansehen. Und wenn sich dort etwas ändert, ändert sich auch der wert in ips. Wenn der wert auf 0x00 springt, macht er das auch bei ips. Bei ips lese ich einfach ab adresse 0 ein. Seltsam ist jedoch folgendes: die register auf dem ads-server haben haben nicht die selbe größe wie bei ips. Anscheinend werden anstelle eines wortes nur dw übertragen?? Kann das sein?? Die dali klemme hat zwei register, eines ist ein w, das andere ein dw. Bei ips kommt es mir jedoch so vor als wären beide ein dw.

Und das bereits beschriebene problem mit msb-lsb habe ich natürlich auch noch. Die register sind irgendwie verdreht.

Was besonders toll ist: hinter den registern liegen einfache eingangsbits von inputklemmen. Nicht ums verrecken schaffe ich da was nach ips zu bekommen. Wenn ich in ips den vermeintlich rictigen bereich auswähle und dann das bit (Lichtschalter) umlege sehe ic im ips rein gar nichts.

Am wochenende kann ich wkieder en bischen spielen, dann kann ich dir mal einen screenshot von beckhoff und ips reinstellen.

Mfg stefan

Servus,

habs jetzt so einigermaßen hingekriegt.

Die Eingänge/ Ausgänge der SPS werden automatisch auf den Modbusserver gemappt. Und jetzt kommts:

nur die Ein/ Ausgänge werden am Server angelegt die einem Prozessabbild eines Programmes das in der SPS läuft zugewiesen sind. Wenn der Engang also nicht in einem Programm verarbeitet wird , wird er auch nicht auf den Modbusserver gemappt!!
Also:

Das was du im Twincat System manager siehst was unter SPS-Konfiguration/Programmname/Prozessabbild wird auf den Modbusserver gemappt, der Rest nicht.!!!
Die Variablen werden ab der Adresse 0 am Server abgelegt.

Wenn du das von IPS auslesen willst => einfach davon lesen, die Ein und Ausgänge liegen eh auch verschiedenen Bereichen. So einfach gehts, wenn man weiß wie!!!

2ter Punkt => variablen mit dem Programm der SPS austauschen.

Dazu musst du bei den globalen Variablen die Arrays wie von Beckhoff gefordert anlegen. Anscheinend kapiert das der Modbusserver das da Arrays mit dem gewünschten name liegen und mappt die einfach. Aus IPS kann man dann einfach drauf schreiben ab der Adresse 32768. Das geht gut mit binären Ein / und Ausgängen.

3ter Punkt:
Register mit dem SPS Programm austauschen.
Da die dinger ja laut Beckhoff doku auf den selben Adressen liegen wie die Binären kapiere ich echt nicht wie ich die Auslesen soll. Aber schließlich sollte ja auch noch was zum rausfinden für dich übrig bleiben…

hmm ich komme da irgendwie nicht weiter.
Also wenn ich unterm dem Systemmanager gucke unter SPS Konfiguration dann sehe ich da die adressen und dann zähle ich die einfach durch oder wie?

Dann habe ich bei globalen adressen die namen der variablen(also das array) eiingefügt. Aber wenn ich jetzt in IPS Adresse lesen und schreiben auf 32768 lege und ich dann auf dem testcenter mal „an“ klicke reagiert IPS nicht mehr? Hab ich vielleicht was verkehrt eingerichtet?

Bin aber nich weiter am testen

Edit1:
Also ich habe in IPS ein Modbus Device hinzugefügt und da bei der adresse dann die 32768 eingestellt. Und auf nur lesen geklickt. Dann habe ich im SPS programm ein Programm geschrieben der mir den Wert MB_output_coil[0] auf 1 setzt. Aber in IPS sehe ich keien änderung.
Wenn ich lesen und schreibe mache und ich dann ten testbutton EIN drücke kommt nach 1-2minuten ie Fehlermeldung: Zeitüberschreitung beim warten auf antwort.

Edit2:
Ich glaub ich bin zu blöd. Ich bekomme da keine Verbindung. Den Modbusserver muss man ja nur auf die CX kopieren und da starten, oder? Wenn ich ja in IPS bin sagt er ja Socket geöffnet. Wenn ich ne andere Adresse angebe findet er den Modbus server ja nicht, also muss der ja laufen, oder?
Breche für heute erstmal wieder ab.

Gruss marco

Hast du evtl ICQ oder skype oder so, dann kann man vielleicht mal chatten oder telefonieren, dann kömmen wir da bestimmt weiter

Also heute hab ich mal den bk9000 mit der ks2000 Software eine feste IP gegeben. Da ist mir aufgefallen ich kann nur auf den bk9000 zugreifen(Ping) wenn die cx1000 in stop ist. Wenn das Programm lauft kann ich nicht zugreifen. Kann es sein das der bk9000 zu sehr damit beschäftigt ist Daten auszutauschen mit der cx, das man mit Ping oder dem Webbrowser nicht zugreifen kann? Hast du auch einen bk9000? Oder nur die cx? Nicht das das Problem ist? Also das die Adressen nicht gemapped werden? Was hast du denn noch im systemmanager eingestellt? Die cx kann ich im übrigen erreichen mit Ping und Web browser wenn sie lauft.

Vielleicht hast fu ja noch nen Tip für mich.

Gruß Marco

Also ich hab jetzt nochmal weiter getestet. Allerdings hab ich das Problem das ich mit IPS an keine Daten ran komme. Ich hab einen Modus TCP tester, da kann ich Signale auslesen und die ändern sich auch wenn Eingänge oder ausgänge geschaltet werden. Also muss das Problem ja an der IPS konfiguration liegen.

1.Ich habe eine neue Instanz Angelegt.
2. bei datentyp Bit ausgewählt
3. nur Lesearesse und Adresse ist 96(da hab ich mit dem testprogramm eine 1)
4. Timer aktiviert 100ms
5. übernehmen und OK

Übergeordnete Instanz ist Modbus RTU/TCP
Modus ist Modbus TCP und Geräte ID ist 1

Client Socket ist die IP Adresse der CX1000
Socket ist geöffnet.

Hat da noch einer einen Tip für mich?

Gruss Marco

Hallo,

ich habe die selbe konfiguration in IPS wie du, also kann da nicht so viel falsch sein.

Ich würde dir folgende vorgehensweise vorschlagen:

Mach ein Testprogramm mit nur einem DI. Dan tarte das Programm auf der SPS. Der Modbusserver wird dann von den E/A Bits nur mit dem einen Eingang beschrieben. (Alle anderen Ein und Ausgänge werden nicht gemappt, weil sie nicht im Programm sind.) Der hat dann die Adresse 0. Somit ist in IPS „nur Lesen“ auf Adresse 0 einzustellen.

Dann kannst du auf der SPS mit dem System Manager den Eingang zwischen 0 und 1 forcen und kannst somit das Bit in IPS beobachten.

Wenn das nicht funktioniert hast du ein Problem weiter unten, bei der Modbusübertragung.

Aber warum geht denn dann dieses testprogramm wo ich den Modbus TCP mit auslesen und testen kann. Da zeigt er mir ja an welche Adresse was ist. Also wenn ich einen Ausgang setze sehe ich in dem Modbus testprogramm das der gesetzt ist. Nur halt in IPS nicht. Ich muss aber keine scripte dafür erstellen, sondern einfach bei Instanz hinzufügen dann auf nur lesen und die dementsprechende Adresse, oder.

Edit:
Also ich kann Analogwerte von Eingangsklemmen lesen, aber warum verdammt bekomme ich keine Digitalen Signale.

Habe auch oft den Fehler: Socket fehler # 10048 Die Adresse ist bereits in gerbauch.

Edit2:
So ich bin jetzt auch weiter, und zwar kann ich Digitale Ausgänge jetzt auch auslesen, allerdings nur wenn ich NICHT angeklickt habe „NUR LESEN“. Dann wird mir der Wert angezeigt

Edit3:
Also digitale EIN/ausgäbge und Analoge Eingänge habb ich jetzt verstanden, nur mit den Merkern komme ich nicht weiter. Welche Adresse hast du das genau genommen=

Hallo,

bei den Merkern habe ich so gemacht:

  1. im Programm bei den globelen Variablen die Arrays so wie bei Beckhoff beschrieben angelegt. Also

mb_input_coils : ARRAY [0…255] of Bool;

das für alle 4 Arrays gemacht.

  1. das Array vom SPS Programm aus beschrieben, gelesen usw…

  2. in IPS genauso wie das einlesen der E/A Bytes nur eben mit Adressversatz von 32768 ( siehe Beckhoff Tabelle, E/A Bytes sind ab adresse 0. Merkerdinger ab Adresse 0x8000)

Hallo,

Vielen dank nochmal. Hab’s jetzt soweit am Rennen. Bin gerade merker am programmieren damit ich alles über IPS und über die normalen Schalter schalten kann. Und den Status hole ich mir dann direkt über die Ausgänge.

Gibts eigentlich eine Möglichkeit auch die digitalen Eingänge einzulesen? Es werden ja bei lesen die digitalen Coils gelesen und bei schreiben die merker. Aber wie kann man die Eingänge lesen? Nur mit einem Script? Da gibt es ja den Befehl.

Gruß marco

Hallo zusammen!

Ich habe eine Beckhoff CX1020 mit Modbus TCP und schaffe es leider nicht, einen Merker (merker1 at %mx0.0) mit iPS zu lesen. Einen Ausgang (% qx0.0) kann ich lesen. Ziel ist es den Status des Merkers auszulesen und zu schreiben um in der SPS Ausgänge zu schalten.

Den Merker über die Adresse 12288 auszulesen, wie in mehreren Beschreibungen (WAGO) angegeben, gelingt mir leider auch nicht.

Wäre über ein kleines Howto mit Bezeichnungen bei den Globalen Variablen in der Beckhoff SPS super dankbar!

Gruß Stefan

Schon mal 2 Beiträge über deinen geguckt?

Hallo Astro9481

Habe ich gelesen ja. Ich bekomme es nur einfach nicht hin.

Die Vier Arrays bei den globalen Variablen sind doch diese

mb_Input_Coils : ARRAY [0…255] OF BOOL;
mb_Output_Coils : ARRAY [0…255] OF BOOL;
mb_Input_Registers : ARRAY [0…255] OF WORD;
mb_Output_Registers : ARRAY [0…255] OF WORD;
oder?

zu Punkt 2 verstehe ich nicht ganz: das Array vom SPS Programm aus beschrieben, gelesen usw…

Denke mal Bennenung der Merker wie z.B.: ipsMerkerFlur AT %MX0.0: BOOL;?

zu Punkt 3 lese ich immer von 12288 hab da fast alles ausprobiert 12289, 45056, 32768, 32769 kann den Merker einfach nicht lesen.

Sehe jetzt eine Veränderung in IPS

Einstellung IPS 1Bit Adresse 0
Einstellung IPS 16Bit Adresse 12288

wenn ich jetzt schreiben möchte kommt eine Fehlermeldung Diese Variable ist „Nur-Lesen“ makiert… Sie müssen die entsprechenden PHP Funktionen verwenden. Wie lauten denn diese??

Hi,

ich verwende auch eine Beckhoff Steuerung und habe die Kommunikation zu IPS
mit ModBus TCP/IP laufen.
Einen Bitweisen Merkerzugriff habe ich auch nicht hinbekommen.
Aber wenn du es über Wörter machst dann gehts.

Ich habe mir dazu in den Globalen Variablen der SPS Merkerwörter angelegt

MerkerWort0 AT%MW0 :WORD; (>>Mod-Busadresse 12288)
MerkerWort2 AT%MW2 :WORD; (>>Mod-Busadresse 12289)
MerkerWort4 AT%MW4 :WORD; (>>Mod-Busadresse 12290)

und dazu dann die ganzen noch mal BIT weise angelegt

(* Input *)

M_IPS_Aussen_Licht_Fassade_Haustuer AT%MX0.0 :BOOL; (>>Mod-Busadresse 12288 Bit 00)
M_IPS_Aussen_Licht_Fassade_Stellplatz AT%MX0.1 :BOOL; (>>Mod-Busadresse 12288 Bit 01)
M_IPS_Aussen_Licht_Fassade_Terrasse AT%MX0.2 :BOOL; (>>Mod-Busadresse 12288 Bit 02)
M_IPS_Aussen_Licht_Fassade_Hausnummer AT%MX0.3 :BOOL; (>>Mod-Busadresse 12288 Bit 03)
M_IPS_Aussen_Licht_Zwingerweg AT%MX0.4 :BOOL; (>>Mod-Busadresse 12288 Bit 04)
M_IPS_Aussen_Licht_Hundezwinger AT%MX0.5 :BOOL; (>>Mod-Busadresse 12288 Bit 05)
M_IPS_Aussen_Effektbeleuchtung_Gartenteich AT%MX0.6 :BOOL; (>>Mod-Busadresse 12288 Bit 06)
M_IPS_Aussen_Effektbeleuchtung_Eingangsber AT%MX0.7 :BOOL; (>>Mod-Busadresse 12288 Bit 07)
M_IPS_Aussen_Effektbeleuchtung_RGB_Streifen AT%MX0.8 :BOOL; (>>Mod-Busadresse 12288 Bit 08)
M_IPS_Aussen_Effektbeleuchtung_Weihnachten AT%MX0.9 :BOOL; (>>Mod-Busadresse 12288 Bit 09)
M_IPS_Aussen_Steckdose_Pavillion AT%MX0.10 :BOOL; (>>Mod-Busadresse 12288 Bit 10)
M_IPS_Aussen_Steckdose_Hundezwinger AT%MX0.11 :BOOL; (>>Mod-Busadresse 12288 Bit 11)
M_IPS_Aussen_Steckdose_Kellerdach_Brunn AT%MX0.12 :BOOL; (>>Mod-Busadresse 12288 Bit 12)
M_IPS_Aussen_Steckdose_Kellerdach AT%MX0.13 :BOOL; (>>Mod-Busadresse 12288 Bit 13)
M_IPS_Aussen_Steckdose_Parkplatz_oben AT%MX0.14 :BOOL; (>>Mod-Busadresse 12288 Bit 14)
M_IPS_Aussen_Steckdose_Parkplatz_unten AT%MX0.15 :BOOL; (>>Mod-Busadresse 12288 Bit 15)

In IPS lasse ich mir passend dazu per eigenem Script ein WORD als ModbusIntanz anlegen an der ein ARRAY aus Bits hängt die bei änderung in das Word gepackt werden.(hört sich schlimmer an als es ist)

Wenn du möchtest kann ich Dir passend dazu einen Beleuchtungsbaustein für Beckhoff und die Erstellscripte mit Unterlagen
geben, musst dich nur selber ein wenig durchwuseln da ich zur Zeit gut ausgelastet bin.

Bei Bedarf einfach mal ne PN schreiben.

MfG Jens