wie Ihr wahrscheinlich gleich aus meiner Fragestellung erfahren werdet...ich bin Anfänger!!!
Ich baue einen CANBUS-Slave mit einem WAGO 750-838 auf. Dem Master des Netzwerkes sollen Informationen in Form von Bits und normierten Analowerten zur Verfügung gestellt werden. Ich bekomme vom Master Befehl ion Form von Bits mitgeteilt.
Meine Frage:
Kann der Master direkt auf mein Eingangs-/Ausgangsklemmenbereich (Wort 0 bis Wort 255) zugreifen? Wenn ja, wie macht er das?
Oder muss ich den Status der Ein-und Ausgänge in den Bereich der PVC-Variablen (Wort 257-511) spiegeln, damit er drankommt? Also, alles was er mir "schickt" ist dann für mich %Q und alles was ich ihm zur Verfügung stelle ist aus Sicht des Slaves %I?
Vielen Dank im Voraus
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
kann mir niemeand helfen? ...oder hab ich mich missverständlich ausgedrückt???
LG
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2008-04-28
Originally created by: PM
Hi,
also soweit ich weiss, ist der Eingangsbereich auch bei Wago %I und Ausgangsbereich %Q. Das ist immer aus Sicht der Steuerung, also aus Sicht des Masters. D.h. du musst deine Bits, die du am Slave ausgeben willst, auf %Q legen und die Werte vom Slave liest du über %I ein.
Wie genau der Wago Slave konfiguriert werden muss, kann ich dir leider nicht mehr sagen. Ich hab das vor längerer Zeit mal gemacht und damals habe ich mir ein oder mehrere Eingangs-PDO´s und Ausgangs-PDO´s definiert, mit welchen man dann den Eingangsbereich im Slave ausliest bzw. den Ausgangsbereich beschreibt. Aber das war auch ausführlich in der Dokumentation des Wago-Buskopplers beschrieben.
Hoffe, etwas geholfen zu haben.
Gruß, Peter
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Stimmt, im Endeffekt degradiere ich ja den 750-838 zum Slave. Daher kann ich wahrscheinlich die Bsp. aus dem Handbuch des Kopplers als Referenz nehmen. Ich schau dort mal nach... Vielen Dank
Wenn jemand noch ne andere Idee hat...nix wie her damit
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
ich hatte ein ähnliches Problem. Die Lösung war relativ einfach:
Zunächst musst du deine Variablen (%i,%Q) in das reservierte Objektverzeichnis mappen ( 0xA000++ ) indem du Ihnen die korrekte Zugriffsaddressierung verpasst. Je nach Datentyp und Adresse ergeben sich hier unterschiedliche Adressierungen.
Im nächsten Schritt musst du das PDO mapping konfigurieren, wo die oben definierten Objekte in die RX/TX PDOs eingetragen werden.
1.) PDO deaktivieren
2.) Objekt(e) in PDO mappen
3.) Anzahl der Objekte setzen
4.) Kommunikationsparameter einstellen
5.) PDO aktivieren
Nachdem alles konfiguriert wurde passiert der Rest von alleine. Aus Programmsicht brauchst du nur noch deine %I / %Q lesen schreiben.
Das ganze kann man "manuell" per SDO/PDO up und download machen, oder recht komfortabel mit einem Konfigurationsprogramm.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Habe allerdings nen paar Anfängerfragen zu deinen Ausführungen:
Was meinst du mit "Zugriffsadressierung"? Wird das in der Steuerungskonfiguration in CoDeSys eingestellt? Wie denn?
Die Geschichte mit dem mapping ist doch für mich gar nicht relevant, oder? Ich stelle doch nur die Zustände meiner Ein-/Ausgänge zur Verfügung. Der Master soll doch nur auf die ihm zur Vergügung gestellten Informationen schauen, sprich auf meinen Controller zugreifen...oder verstehe ich dich falsch?!?
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Also der 838 soll als Slave arbeiten und eine Normierung der analog Werte durchführen (Analogwerte auf %/°/RPM/..). Der Master soll direkt (ohne Vorverarbeitung) die Informationen von den DI Modulen bekommen?
Zunächst musst du ja erstmal wissen wie genau die Nutzdaten aussehen welche vom Master erwartet und gesendet werden. Dieser Prozessdatenaustausch erfolgt über die PDOs. Damit die Master oder Slaves die Daten verstehen müssen diese konfiguriert werden. Dies erfolgt durch "zusammenbauen" der einzelnen Objekte (DI/DO/AI/AO/PFC Variablen) zu den PDOs.
Wenn die DI Klemmen vom Slave direkt an den Master gehen sollen (Koppler Funktion) dann kann man die "DI Objekte" direkt in den vom Master erwarteten PDOs mappen. Hier musst du nicht mal 1 Zeile Codesys schreiben!, das ist alles nur eine Konfigurationssache.
Bei den Analogwerten musst du leider den Umweg über codesys gehen. Hierbei werden die analog Werte (Spannung/Strom) im Programm normiert und dann wieder in den "reservierten Bereich" vom Objektverzeichnis geschrieben wo sie dann wieder in die PDOs gemappt werden können.
Mit der der korrekten Zugriffsaddressierung meinte ich die Auswahl der geeigneten Datenbreite und die dazugehörige Adressierung. Schau mal in die Doku "Zugriffsadressierung der PFC-Ausgangsvariablen".
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
entschuldige die verspätete Antwort...hänge gerade in Norwegen fest und habe nur spontan Möglichkeiten ins Netz zu kommen.
Richtig, so ist die Aufgabenstellung. Also dann verstehe ich es so:
die DI/DO werden direkt vom Master ausgelesen
Zitat:
Konfigurationssache
** Wie und wo muss ich konfigurieren?**
Die AI (AO sind hier nicht relevant) und eine handvoll PFC-Variablen müssen "vorbereitet" werden...das heißt, ich schreibe sie in den reservierten Bereich. Der reservierte Bereich fängt dann ab Byte 512 an, richtig?
Aus Sicht des Masters sind das alles Eingangsvariablen, also auch die **DI und die DO ** von mir (vom Slave)?
Muss mich entschuldigen, dass ich nochmal so blöde Fragen stelle, aber ich hatte mit dem Thema noch nie etwas am Hut.
Lieben Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Habe mir eben die a112600e.pdf "Using the Profile401_1 library for
data exchange between WAGO CANopen devices" von Wago angeschaut. Dort werden die FBs EXCEPTION_HANDLER aus der cia405.lib und CAN_Device_401 aus der profile401_1.lib verwendet.
Hat jemand damit Erfahrung?
Ist das auf meinen Fall anzuwenden?
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
CAN_Device_401 ist eine FB für den Master, um (mehrere) Slaves einzubinden.
Wenn du z.B. den Master programmierst und möchtest auf die I/O von (mehreren) Kopplern zugreifen dann brauchst du nur angeben, um welchen Node es sich handelt und welche I/Os er hat und ob du auch gleich das Node Guarding dazu konfiguriert haben möchtest.
CAN_Device_401 konfiguriert die Koppler dann automatisch und macht gleich nebenbei das PDO mapping. CAN_Device_401 nutzt dabei die SDOwrite / read cia405.lib. Weiterhin nimmt dir CAN_Device_401 gleich die NMT Konfiguration ab (NMT_addnode, NMT_guarding,... ). Über den EXCEPTION_HANDLER kannst du dann eine benutzerspezifische Ausnahmebehandlung machen.
Für deinen Anwendungsfall ist die FB "weniger" zu gebrauchen. Weil du ja den Slave programmierst und nicht den Master?
Normalerweise müsste derjenige, der den Master programmiert auch die Konfiguration deines "Slaves" (Geräteprofil DS-401) übernehmen. Ist dies nicht der Fall müsstest du wissen was der Master erwartet und kannst deinen Slave daraufhin konfigurieren
Die "Konfiguration" erfolgt mit Hilfe von SDO up/downloads durch Einträge im Objektverzeichnis. Du kannst dies mit einer anwenderfreundlicher CanOpen Software machen oder im Notfall tut es auch ein CAN send/rec Programm, oder du kannst dies den Master überlassen (wie es z.B. die CAN_Device_401 tut)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
google mal nach "canwizard", dort gibt es eine DEMO version. Leider ist hier die PDO Mapping Geschichte eher "bescheiden" gelösst. Dafür kann man sehr schön den manuell SDO operationen durchführen.
Ein gutes Beispiel für eine einfache "send/rec " Konfiguration findest du in der WAGO manual 307 : "3.1.6.5 Anwendungsspezifisches Mapping" Statt den DI/DOs musst du nur die Objekte der PFCs verwenden.
z.B. Wago mit NodeID 1
BI_TEST -> %IB512 // BI_TEST wird über das Objekt A4C0 Index 1 angesprochen
Du möchtest dann BI_TEST in RX-PDO1 (0x1601/1) mappen:
0x601 : 23 01 16 01 08 01 C0 A4
|
-> Ist identisch wie SDO Upload auf 0x1601 Index 1 mit den Daten
0xA4C0 01 08
A4C0: Objekt
01: Index
08: Datenbreite
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
wie Ihr wahrscheinlich gleich aus meiner Fragestellung erfahren werdet...ich bin Anfänger!!!
Ich baue einen CANBUS-Slave mit einem WAGO 750-838 auf. Dem Master des Netzwerkes sollen Informationen in Form von Bits und normierten Analowerten zur Verfügung gestellt werden. Ich bekomme vom Master Befehl ion Form von Bits mitgeteilt.
Meine Frage:
Kann der Master direkt auf mein Eingangs-/Ausgangsklemmenbereich (Wort 0 bis Wort 255) zugreifen? Wenn ja, wie macht er das?
Oder muss ich den Status der Ein-und Ausgänge in den Bereich der PVC-Variablen (Wort 257-511) spiegeln, damit er drankommt? Also, alles was er mir "schickt" ist dann für mich %Q und alles was ich ihm zur Verfügung stelle ist aus Sicht des Slaves %I?
Vielen Dank im Voraus
Gruß
Hallo,
kann mir niemeand helfen? ...oder hab ich mich missverständlich ausgedrückt???
LG
Originally created by: PM
Hi,
also soweit ich weiss, ist der Eingangsbereich auch bei Wago %I und Ausgangsbereich %Q. Das ist immer aus Sicht der Steuerung, also aus Sicht des Masters. D.h. du musst deine Bits, die du am Slave ausgeben willst, auf %Q legen und die Werte vom Slave liest du über %I ein.
Wie genau der Wago Slave konfiguriert werden muss, kann ich dir leider nicht mehr sagen. Ich hab das vor längerer Zeit mal gemacht und damals habe ich mir ein oder mehrere Eingangs-PDO´s und Ausgangs-PDO´s definiert, mit welchen man dann den Eingangsbereich im Slave ausliest bzw. den Ausgangsbereich beschreibt. Aber das war auch ausführlich in der Dokumentation des Wago-Buskopplers beschrieben.
Hoffe, etwas geholfen zu haben.
Gruß, Peter
Hallo PM,
vielen Dank für deine Antwort.
Stimmt, im Endeffekt degradiere ich ja den 750-838 zum Slave. Daher kann ich wahrscheinlich die Bsp. aus dem Handbuch des Kopplers als Referenz nehmen. Ich schau dort mal nach... Vielen Dank
Wenn jemand noch ne andere Idee hat...nix wie her damit
Gruß
Hallo,
ich hatte ein ähnliches Problem. Die Lösung war relativ einfach:
Zunächst musst du deine Variablen (%i,%Q) in das reservierte Objektverzeichnis mappen ( 0xA000++ ) indem du Ihnen die korrekte Zugriffsaddressierung verpasst. Je nach Datentyp und Adresse ergeben sich hier unterschiedliche Adressierungen.
Im nächsten Schritt musst du das PDO mapping konfigurieren, wo die oben definierten Objekte in die RX/TX PDOs eingetragen werden.
1.) PDO deaktivieren
2.) Objekt(e) in PDO mappen
3.) Anzahl der Objekte setzen
4.) Kommunikationsparameter einstellen
5.) PDO aktivieren
Nachdem alles konfiguriert wurde passiert der Rest von alleine. Aus Programmsicht brauchst du nur noch deine %I / %Q lesen schreiben.
Das ganze kann man "manuell" per SDO/PDO up und download machen, oder recht komfortabel mit einem Konfigurationsprogramm.
Hallo GNU0815,
danke für deine Antwort.
Habe allerdings nen paar Anfängerfragen zu deinen Ausführungen:
Was meinst du mit "Zugriffsadressierung"? Wird das in der Steuerungskonfiguration in CoDeSys eingestellt? Wie denn?
Die Geschichte mit dem mapping ist doch für mich gar nicht relevant, oder? Ich stelle doch nur die Zustände meiner Ein-/Ausgänge zur Verfügung. Der Master soll doch nur auf die ihm zur Vergügung gestellten Informationen schauen, sprich auf meinen Controller zugreifen...oder verstehe ich dich falsch?!?
Gruß
Hallo,
Kurze Frage zur Aufgabenstellung:
Also der 838 soll als Slave arbeiten und eine Normierung der analog Werte durchführen (Analogwerte auf %/°/RPM/..). Der Master soll direkt (ohne Vorverarbeitung) die Informationen von den DI Modulen bekommen?
Zunächst musst du ja erstmal wissen wie genau die Nutzdaten aussehen welche vom Master erwartet und gesendet werden. Dieser Prozessdatenaustausch erfolgt über die PDOs. Damit die Master oder Slaves die Daten verstehen müssen diese konfiguriert werden. Dies erfolgt durch "zusammenbauen" der einzelnen Objekte (DI/DO/AI/AO/PFC Variablen) zu den PDOs.
Wenn die DI Klemmen vom Slave direkt an den Master gehen sollen (Koppler Funktion) dann kann man die "DI Objekte" direkt in den vom Master erwarteten PDOs mappen. Hier musst du nicht mal 1 Zeile Codesys schreiben!, das ist alles nur eine Konfigurationssache.
Bei den Analogwerten musst du leider den Umweg über codesys gehen. Hierbei werden die analog Werte (Spannung/Strom) im Programm normiert und dann wieder in den "reservierten Bereich" vom Objektverzeichnis geschrieben wo sie dann wieder in die PDOs gemappt werden können.
Mit der der korrekten Zugriffsaddressierung meinte ich die Auswahl der geeigneten Datenbreite und die dazugehörige Adressierung. Schau mal in die Doku "Zugriffsadressierung der PFC-Ausgangsvariablen".
Hallo Gnu0815,
entschuldige die verspätete Antwort...hänge gerade in Norwegen fest und habe nur spontan Möglichkeiten ins Netz zu kommen.
Richtig, so ist die Aufgabenstellung. Also dann verstehe ich es so:
die DI/DO werden direkt vom Master ausgelesen
Die AI (AO sind hier nicht relevant) und eine handvoll PFC-Variablen müssen "vorbereitet" werden...das heißt, ich schreibe sie in den reservierten Bereich. Der reservierte Bereich fängt dann ab Byte 512 an, richtig?
Aus Sicht des Masters sind das alles Eingangsvariablen, also auch die **DI und die DO ** von mir (vom Slave)?
Muss mich entschuldigen, dass ich nochmal so blöde Fragen stelle, aber ich hatte mit dem Thema noch nie etwas am Hut.
Lieben Gruß
Da fällt mir noch etwas ein:
Habe mir eben die a112600e.pdf "Using the Profile401_1 library for
data exchange between WAGO CANopen devices" von Wago angeschaut. Dort werden die FBs EXCEPTION_HANDLER aus der cia405.lib und CAN_Device_401 aus der profile401_1.lib verwendet.
Hat jemand damit Erfahrung?
Ist das auf meinen Fall anzuwenden?
Gruß
Hallo,
CAN_Device_401 ist eine FB für den Master, um (mehrere) Slaves einzubinden.
Wenn du z.B. den Master programmierst und möchtest auf die I/O von (mehreren) Kopplern zugreifen dann brauchst du nur angeben, um welchen Node es sich handelt und welche I/Os er hat und ob du auch gleich das Node Guarding dazu konfiguriert haben möchtest.
CAN_Device_401 konfiguriert die Koppler dann automatisch und macht gleich nebenbei das PDO mapping. CAN_Device_401 nutzt dabei die SDOwrite / read cia405.lib. Weiterhin nimmt dir CAN_Device_401 gleich die NMT Konfiguration ab (NMT_addnode, NMT_guarding,... ). Über den EXCEPTION_HANDLER kannst du dann eine benutzerspezifische Ausnahmebehandlung machen.
Für deinen Anwendungsfall ist die FB "weniger" zu gebrauchen. Weil du ja den Slave programmierst und nicht den Master?
Normalerweise müsste derjenige, der den Master programmiert auch die Konfiguration deines "Slaves" (Geräteprofil DS-401) übernehmen. Ist dies nicht der Fall müsstest du wissen was der Master erwartet und kannst deinen Slave daraufhin konfigurieren
Die "Konfiguration" erfolgt mit Hilfe von SDO up/downloads durch Einträge im Objektverzeichnis. Du kannst dies mit einer anwenderfreundlicher CanOpen Software machen oder im Notfall tut es auch ein CAN send/rec Programm, oder du kannst dies den Master überlassen (wie es z.B. die CAN_Device_401 tut)
Schönen guten Morgen
I'm back in Germany...
Vielen Dank für deine Antwort Gnu0815.
Werde mich heute informieren, ob die "Master-Seite" alles konfiguriert, oder ob ich als Slave irgendetwas einstellen muss...
Aber im Vorfeld würde ich gern noch 1 Frage loswerden:
Hast du eine Empfehlung für die oder gibt es evtl. Beispiele für das
Lieben Gruß
Leidi
Hallo,
google mal nach "canwizard", dort gibt es eine DEMO version. Leider ist hier die PDO Mapping Geschichte eher "bescheiden" gelösst. Dafür kann man sehr schön den manuell SDO operationen durchführen.
Ein gutes Beispiel für eine einfache "send/rec " Konfiguration findest du in der WAGO manual 307 : "3.1.6.5 Anwendungsspezifisches Mapping" Statt den DI/DOs musst du nur die Objekte der PFCs verwenden.
z.B. Wago mit NodeID 1
BI_TEST -> %IB512 // BI_TEST wird über das Objekt A4C0 Index 1 angesprochen
Du möchtest dann BI_TEST in RX-PDO1 (0x1601/1) mappen:
0x601 : 23 01 16 01 08 01 C0 A4
|
-> Ist identisch wie SDO Upload auf 0x1601 Index 1 mit den Daten
0xA4C0 01 08
A4C0: Objekt
01: Index
08: Datenbreite