Ich mache ein Studienarbeit über den CAN Bus, aber leider bin ich mit Codesys ein Neuling.
Ich habe folgendes Problem: ich soll ein Motor mit Codesys steuern. Ich soll verschiedene CAN Botschaften zum Motor senden, um diesen zu steuern (natürlich steht der Motor in keine Bibliothek)
Diese CAN Botschaften sehen so aus: 2F4 05 11 20 10 00 00 (zum Beispiel). Einige von diesen Botschaften beschreiben den Motorzustand und den anderen sind Befehle zur Motorsteuerung.
Wie soll ich mit Codesys tun, damit der Motor diese Botschaften bekommt, und gut interpretiert?
Vielen Dank für ihre Hilfe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich denke Du solltest Dich zuerst mit dem CAN-Bus vertraut machen und Dir dann mit der Can-Lib einen Treiber-Bautein für den Motor (FU!?) bauen. Was fertiges wirst Du wohl nicht finden
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich frage mich, was ein Motor mit so einer Botschaft anfangen soll?:?:
So wie ich das sehe, hatt dieser Motor(sehr wahrscheinlich ein Servo-Motor) eine Steuerung. Dieser Steuerung kannst Du solche Botschaften übermitteln. Diese Steuerung ermittelt dann aus der Botschaft, die Drehrichtung, den Verfahrweg, Geschwindikeit, Start- und Endposition etc.
Das übermitteln der Botschaft, geht vielleicht am einfachsten über einen Seriell(RS232) Baustein. Das kannst Du dann bestimmt mit Codesys programmieren.
Mit freundlichen Grüssen! Pitsch
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ich vermute mal, der Motor hat einen integrierten Regler mit CAN-Controller (z.B. M-Drive oder IMS).
Es gibt prinzipiell 2 Möglichkeiten, die auch kombiniert werden können.
Kommunikation per SDO (ServiceDataObject) und PDO (Process DataObject).
SDO's werden einzeln 'von Hand' versendet, per CanOpenSendSDO (FB) aus der 3S_CanOpenManager.lib oder einer CanLib deines Steuerungsherstellers.
PDO's werden vom CanMaster zyklisch übertragen und werden über die Steuerungskonfiguration, bzw. ein EDS(ElectronicDataSheet)-File erzeugt und versendet/empfangen.
In der Regel werden SDO's benutzt um den Motor zu konfigurieren. Also z.B. um Rampen, Ströme usw. einzustellen. PDO's übetragen dann die zyklischen Daten, wie Controllwort,SollPos / Statuswort,IstPos.
Das mal nur fürs erste. Kannst dich ja mal zu dem Thema irgendwo einlesen, denn das ist jemandem der sich gar nicht auskennt nicht in ein paar Sätzen erklärt...
Falls du noch Fragen hast, trotzdem Fragen. Auf meine Antworten musst du aber evtl. ein wenig länger warten, ich bin grade auf der anderen Seite... (-6h)
Gruss
Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Vielen Dank alle. Ich hab´schon einige Sachen besser verstanden.
Ihr seid auch vollig richtig: mein Motor ist ein Servomotor mit CAN Schnittstelle ausgerüstet (auch mit Regler, und ich vermute mal mit CAN Controller ausgerüstet).
Ich habe die Zustandbotschaften, und die Ansteuerbotschaften zur Verfügung.
Zum Beispiel, eine typische Ansteuerbotschaft lautet:
110 0100 YYYY DDDD1 DDDD2
mit YYYY die Sollgröße
0000 der Sollwert in Inkrementen
DDDD1 DDDD2 Sollinkremente 16 Bit 2er Komplement Darstellung, High Byte zuerst, wenn Regler aktiviert.
0001 Regelparameter
DDDD1 0
DDDD2 Bitweise Kodierung Regelbefehle
000X XXXX Regler ein
011X XXXX Motor Bremse wird von EST gesendet (wird bei SE n. benötigt)
XXXX XXXY SE ein/aus
Y=1 SE ein
Y=0 SE aus, Motor frei
000X XXYX
Y=0 Regleralgorythmus 1 aktiv (nicht mehr unterstützt)
Y=1 Regleralgorythmus 2 aktiv (wird von SE nicht ausgewertet)
0002...FFFF wird nicht benutzt.
Ich denke, ich werde diese Botschaft, wie du sagst: "von Hand" senden per CANopenSDO. Das soll reichen...mal sehen beim Test.
Ich denke ich brauche nicht die Daten zyklisch zusenden. Was denkt ihr davon, bin ich falsch? Oder soll ich besser mit PDO´s handeln?
Nochmals vielen Dank für die Erklärung.
Gruß
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
Ich mache ein Studienarbeit über den CAN Bus, aber leider bin ich mit Codesys ein Neuling.
Ich habe folgendes Problem: ich soll ein Motor mit Codesys steuern. Ich soll verschiedene CAN Botschaften zum Motor senden, um diesen zu steuern (natürlich steht der Motor in keine Bibliothek)
Diese CAN Botschaften sehen so aus: 2F4 05 11 20 10 00 00 (zum Beispiel). Einige von diesen Botschaften beschreiben den Motorzustand und den anderen sind Befehle zur Motorsteuerung.
Wie soll ich mit Codesys tun, damit der Motor diese Botschaften bekommt, und gut interpretiert?
Vielen Dank für ihre Hilfe
Ich denke Du solltest Dich zuerst mit dem CAN-Bus vertraut machen und Dir dann mit der Can-Lib einen Treiber-Bautein für den Motor (FU!?) bauen. Was fertiges wirst Du wohl nicht finden
Vielen Dank für deine Antwort. "was fertiges" möchte ich aber nicht finden. Ich dachte nur, kann man das Senden von Botschaften programmieren.
Ich denke mit Funktion Block kann ich ein bestimmtes Strom, zum beispiel zu Motor, senden (das weiss ich machen mit Funktion Block).
Aber ich möchte kein Strom sondern ein bestimmtes Botschaft zu Motor senden. Denkst du, ich kann das auch mit Funktion Block machen?
oder kann ich ein Programm bauen wie:
%QX0.0='110 0100 001 001 0000' (wenn %QX0.0 die Adresse von Motor ist, und 110 0100 001 001 0000 mein Botschaft)
Könnte das auch funktionnieren?
Hallo
Ich frage mich, was ein Motor mit so einer Botschaft anfangen soll?:?:
So wie ich das sehe, hatt dieser Motor(sehr wahrscheinlich ein Servo-Motor) eine Steuerung. Dieser Steuerung kannst Du solche Botschaften übermitteln. Diese Steuerung ermittelt dann aus der Botschaft, die Drehrichtung, den Verfahrweg, Geschwindikeit, Start- und Endposition etc.
Das übermitteln der Botschaft, geht vielleicht am einfachsten über einen Seriell(RS232) Baustein. Das kannst Du dann bestimmt mit Codesys programmieren.
Mit freundlichen Grüssen! Pitsch
Moin
Ich vermute mal, der Motor hat einen integrierten Regler mit CAN-Controller (z.B. M-Drive oder IMS).
Es gibt prinzipiell 2 Möglichkeiten, die auch kombiniert werden können.
Kommunikation per SDO (ServiceDataObject) und PDO (Process DataObject).
SDO's werden einzeln 'von Hand' versendet, per CanOpenSendSDO (FB) aus der 3S_CanOpenManager.lib oder einer CanLib deines Steuerungsherstellers.
PDO's werden vom CanMaster zyklisch übertragen und werden über die Steuerungskonfiguration, bzw. ein EDS(ElectronicDataSheet)-File erzeugt und versendet/empfangen.
In der Regel werden SDO's benutzt um den Motor zu konfigurieren. Also z.B. um Rampen, Ströme usw. einzustellen. PDO's übetragen dann die zyklischen Daten, wie Controllwort,SollPos / Statuswort,IstPos.
Das mal nur fürs erste. Kannst dich ja mal zu dem Thema irgendwo einlesen, denn das ist jemandem der sich gar nicht auskennt nicht in ein paar Sätzen erklärt...
Falls du noch Fragen hast, trotzdem Fragen. Auf meine Antworten musst du aber evtl. ein wenig länger warten, ich bin grade auf der anderen Seite... (-6h)
Gruss
Erik
Vielen Dank alle. Ich hab´schon einige Sachen besser verstanden.
Ihr seid auch vollig richtig: mein Motor ist ein Servomotor mit CAN Schnittstelle ausgerüstet (auch mit Regler, und ich vermute mal mit CAN Controller ausgerüstet).
Ich habe die Zustandbotschaften, und die Ansteuerbotschaften zur Verfügung.
Zum Beispiel, eine typische Ansteuerbotschaft lautet:
110 0100 YYYY DDDD1 DDDD2
mit YYYY die Sollgröße
0000 der Sollwert in Inkrementen
DDDD1 DDDD2 Sollinkremente 16 Bit 2er Komplement Darstellung, High Byte zuerst, wenn Regler aktiviert.
0001 Regelparameter
DDDD1 0
DDDD2 Bitweise Kodierung Regelbefehle
000X XXXX Regler ein
011X XXXX Motor Bremse wird von EST gesendet (wird bei SE n. benötigt)
XXXX XXXY SE ein/aus
Y=1 SE ein
Y=0 SE aus, Motor frei
000X XXYX
Y=0 Regleralgorythmus 1 aktiv (nicht mehr unterstützt)
Y=1 Regleralgorythmus 2 aktiv (wird von SE nicht ausgewertet)
0002...FFFF wird nicht benutzt.
Ich denke, ich werde diese Botschaft, wie du sagst: "von Hand" senden per CANopenSDO. Das soll reichen...mal sehen beim Test.
Ich denke ich brauche nicht die Daten zyklisch zusenden. Was denkt ihr davon, bin ich falsch? Oder soll ich besser mit PDO´s handeln?
Nochmals vielen Dank für die Erklärung.
Gruß