Utilisation de Depictor pour visualiser les groupes d'axes
Pour ce projet, vous avez également besoin du CODESYS Depictor add-on avec une licence valide.
L'application SoftMotion se compose de quatre entraînements rotatifs configurés en groupe d'axes. Les trois premiers axes déplacent le TCP dans le plan X/Y et le quatrième axe dans le plan Z.
L'exemple montre comment vous pouvez utiliser Depictor avec la configuration cinématique Kin_Scara3_Z. Vous pouvez également personnaliser la même procédure pour d'autres configurations cinématiques.

Création du projet standard
Créez un projet standard avec le CODESYS SoftMotion Win contrôleur et le langage de programmation ST.
Ajouter un gestionnaire de bibliothèque dans le POU vue.
Ouvrez le gestionnaire de bibliothèque et ajoutez les bibliothèques
SM3_Depictor
etDepictorBase
.
Ajout et paramétrage des axes
Insérer quatre axes virtuels sous l'objet Pool d'axes généraux SoftMotion et nommez les axes Drive1...Drive4.
Paramétrer les axes Drive1, Drive2, Drive3 et Drive4 comme type d'axe fini avec des interrupteurs de fin de course logiciels de -180 degrés à 180 degrés.
Éditeur de configuration :
Pour plus d'informations, consultez : Conduite virtuelle
Configuration des groupes d'axes
Ajoutez un groupe d'axes "KinScara" sous l'application. Pour ce faire, cliquez sur
.Dans le configurateur, cliquez sur Sélectionnez la cinématique. Sélectionnez le TRAFO.Kin_Scara3_Z cinématique.
Définissez les paramètres comme suit :
dArmLength1, dArmLength2, dArmLength3: 500
dDécalageA1, dDécalageA2, dDécalageA3, dDécalageZ: 0
Commandez les axes comme suit :
A1: Drive1
A2: Drive2
A3: Drive3
Z: Drive4
Remarque : Vous pouvez faire glisser les axes directement dans le champ de saisie.
Pour plus d'informations, voir : Cinématique
Création du programme du contrôleur
Dans le
PLC_PRG
programme, déclarer des instances duMC_Power
bloc fonctionnel pour tous les variateurs. Créé unistate
variable pour le diagramme d'état.VAR Power_Drive1, Power_Drive2, Power_Drive3, Power_Drive4 : MC_Power; istate: INT; END_VAR
Définir un diagramme d'états transitions dans l'implémentation.
CASE istate OF 0: 1: 2: END_CASE
Activer tous les lecteurs en état
0
.0: Power_Drive1(Axis:=Drive1, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive2(Axis:=Drive2, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive3(Axis:=Drive3, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive4(Axis:=Drive4, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); IF Power_Drive1.Status AND Power_Drive2.Status AND Power_Drive3.Status AND Power_Drive4.Status THEN istate:=istate+1; END_IF
Lorsque les axes sont activés, activer le groupe d'axes (passer de "désactivé" à "veille").
VAR GroupEnable:MC_GroupEnable; END_VAR 1: GroupEnable(AxisGroup:=KinScara, Execute:=TRUE); IF GroupEnable.Done THEN istate:=istate+1; END_IF
Déclarez et initialisez une variable pour enregistrer la valeur de consigne en coordonnées machine. Déclarer deux instances de type
SMC_POS_REF
pour représenter le TCP en coordonnées cartésiennes et d'axe.VAR Frame: MC_COORD_REF:=(X:=-120, Y:=-25); // This variable stores the cartesian position & orientation of the TCP Pos_Cart: SMC_POS_REF; // This variable represents the position of the TCP in cartesian coordinates coordinates Pos_Axis: SMC_POS_REF := (a := axispos);// This variable represents the position of the TCP in Axis coordinates END_VAR VAR CONSTANT axispos: TRAFO.AXISPOS_REF := (a0 := 0, a1 := 100, a2:=60); END_VAR 2: Pos_Cart.c:= Frame; // To represent the TCP in cartesian coordinates;
Déclarer une instance de
MC_MoveDirectAbsolute
pour déplacer le robot SCARA aux coordonnées spécifiées.VAR MoveAbs:MC_MoveDirectAbsolute; // Moves the TCP to the defined coordinates END_VAR 2: MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Axis,CoordSystem:=SMC_COORD_SYSTEM.ACS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined Axis coordinates //MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Cart,CoordSystem:=SMC_COORD_SYSTEM.MCS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined cartesian coordinates IF MoveAbs.Done THEN MoveAbs(AxisGroup:=KinScara, Execute:=FALSE); // Waits for the next new coordinates istate:=2; END_IF
Déclarer une variable de type
SMC_GroupReadSetPosition
pour lire la valeur actuelle du robot en coordonnées cartésiennes et coordonnées d'axe.VAR Car_pos, Axis_pos :SMC_GroupReadSetPosition; //to read the current axis values END_VAR 2: Car_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.MCS, Enable:=TRUE); // to read the current position in cartesian coordinates Axis_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.ACS, Enable:=TRUE); // to read the current axis values
L'ensemble du programme PLC_PRG
Comparez votre programme et ajoutez les parties de programme manquantes.
Déclaration
PROGRAM PLC_PRG VAR Power_Drive1, Power_Drive2, Power_Drive3, Power_Drive4 :MC_Power; istate: INT; GroupEnable:MC_GroupEnable; Frame:MC_COORD_REF:=(X:=-120, Y:=-25); // This variable stores the cartesian position & orientation of the TCP Pos_Cart:SMC_POS_REF; // This variable represents the position of the TCP in cartesian coordinates coordinates Pos_Axis:SMC_POS_REF := (a := axispos);// This variable represents the position of the TCP in Axis coordinates MoveAbs:MC_MoveDirectAbsolute; // Moves the TCP to the defined coordinates (PTP) Car_pos,Axis_pos :SMC_GroupReadSetPosition; //to read the current position of the TCP in Cartesian and Axis Coordinates and display it on the visu scara_Config:trafo.Kin_Scara3_Z_Config; // To set the configuration of the SCARA_3_Z kin_Config:SMC_SetKinConfiguration; // To set the defined configuration of SCARA_3_Z to the axis group used nPeriod:DINT:=0; // SCARA_3_Z Period Xelbow:BOOL:=TRUE; END_VAR VAR CONSTANT axispos : TRAFO.AXISPOS_REF := (a0 := 0, a1 := 100, a2:=60); END_VAR
Mise en œuvre
CASE istate OF 0: Power_Drive1(Axis:=Drive1, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive2(Axis:=Drive2, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive3(Axis:=Drive3, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); Power_Drive4(Axis:=Drive4, Enable:=TRUE, bRegulatorOn:=TRUE, bDriveStart:=TRUE); IF Power_Drive1.Status AND Power_Drive2.Status AND Power_Drive3.Status AND Power_Drive4.Status THEN istate:=istate+1; END_IF 1: GroupEnable(AxisGroup:=KinScara, Execute:=TRUE); IF GroupEnable.Done THEN istate:=istate+1; END_IF 2: scara_Config(xElbowRight:=Xelbow, nPeriodA3:=nPeriod); kin_Config(AxisGroup:=KinScara,ConfigData:=scara_Config.Config, Execute:=TRUE); Pos_Cart.c:=Frame; // To represent the TCP in cartesian coordinates Car_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.MCS, Enable:=TRUE); // read the current position in cartesian coordinates Axis_pos(AxisGroup:=KinScara, CoordSystem:=SM3_Robotics.SMC_COORD_SYSTEM.ACS, Enable:=TRUE); // read the current position in Axis coordinates MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Axis,CoordSystem:=SMC_COORD_SYSTEM.ACS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined axis coordinates //MoveAbs(AxisGroup:=KinScara, Execute:=TRUE, Position:=Pos_Cart,CoordSystem:=SMC_COORD_SYSTEM.MCS, BufferMode:=MC_BUFFER_MODE.Aborting,); //move to the defined cartesian coordinates IF MoveAbs.Done THEN MoveAbs(AxisGroup:=KinScara, Execute:=FALSE); // Waits for the next new coordinates istate:=2; END_IF END_CASE
Création d'un programme Depictor
Ajoutez un nouveau POU "Depic" de type "Programme" sous l'application. Pour ce faire, cliquez sur
.Déclarer une variable de type
SM3_Depictor.SMC_R_Scara3_Z_Data
. Déclarer une variableLrSize
de genreLREAL
et initialisez la variable avec la valeur 100.VAR ScaraTrafo : SM3_Depictor.SMC_R_Scara3_Z_Data; LrSize:LREAL:=100; END_VAR
Insérez un appel au bloc fonction dans l'implémentation.
ScaraTrafo(AxisGroup:=KinScara, trf:=KinScara.trafo);
Ajoutez le POU "Depic" au Tâche principale.
Configuration de Depictor
Ajoutez un objet "Depictor" sous l'application. Pour ce faire, cliquez sur
.Double-cliquez sur l'objet.
Sélectionnez le Pose élément dans l'arbre Depictor.
Cliquez sur
.Les Boîte l'élément est ajouté sous la pose.
Sélectionnez le Dépeceur Réf. option dans les propriétés de l'élément.
Clique le
bouton.
Sélectionnez le SMC_R_Depictor_Scara3_Z objet de la
SM3_Depictor
une bibliothèque.Définissez les variables d'interface comme suit :
fb: Depic.ScaraTrafo
lrZ_: Drive1.fSetPosition
lrZmin: dix
lrZmax: -50
lrTaille: Depic.LrSize
xShowPlane: 0
Création de visualisations
Créez un écran de visualisation dans lequel les coordonnées cartésiennes et les coordonnées des axes peuvent être affichées et modifiées.

Ajoutez un objet "Visualisation" sous l'application. Pour ce faire, cliquez sur
.Ouvrez la visualisation dans l'éditeur.
Insérez un Rectangle élément de visualisation (1).
Modifiez les propriétés de l'élément.
: %s
:PLC_PRG.Car_pos.Position.c.X
Type d'entrée: VisuDialogs.Numppad
Utiliser une autre variable:
PLC_PRG.Frame.X
Insérez l'autre Boîte éléments de visualisation.
Modifiez les propriétés des éléments (2) et (3).
: %s
:PLC_PRG.Car_pos.Position.c.Y
ouPLC_PRG.Car_pos.Position.c.Z
Type d'entrée: VisuDialogs.Numppad
Utiliser une autre variable:
PLC_PRG.Frame.Y
etPLC_PRG.Frame.Z
Modifiez les propriétés des éléments (4), (5) et (6).
: %s
:PLC_PRG.Frame.A
ouPLC_PRG.Frame.B
ouPLC_PRG.Frame.C
Modifiez les propriétés des éléments (7), (8), (9) et (10).
: %s
:PLC_PRG.Axis_pos.Position.a.a0
ouPLC_PRG.Axis_pos.Position.a.a1
ouPLC_PRG.Axis_pos.Position.a.a2
ouPLC_PRG.Axis_pos.Position.a.a3
Type d'entrée: VisuDialogs.Numppad
Utiliser une autre variable:
PLC_PRG.Pos_Axis.a.a0
etPLC_PRG.Pos_Axis.a.a1
etPLC_PRG.Pos_Axis.a.a2
etPLC_PRG.Pos_Axis.a.a3
Étiquetez les éléments de visualisation avec le Étiqueter élément.
Démarrer et tester le programme
Vous pouvez modifier les valeurs des axes dans la visualisation du projet. Si vous commentez la commande de mouvement active (MoveAbs...
, ...) dans le programme PLC_PRG
et supprimez les commentaires de la deuxième commande de déplacement, vous pouvez alors modifier les coordonnées cartésiennes.
Générez le projet et téléchargez-le dans l'automate.
Ouvrez l'éditeur de l'objet Depictor dans votre projet.
Basculez vers la visualisation et modifiez les valeurs des axes ou les valeurs cartésiennes. Observez le mouvement du robot SCARA dans Depictor.