Einfügen eines neuen MultiBelt-Equipment-Moduls

Überblick

In diesem Kapitel wird erläutert, wie ein MultiBelt-Equipment-Modul in eine PacDrive-Standard­vorlage integriert wird.

Die Anleitung bezieht sich auf die folgenden Projekte: PD_Demoproject_MultiBeltMo­dule_V2.0.4.0.project (oder höher) und PD_Demoproject_Template_Full_Demo_V2.0.13.0.project (oder höher).

Anforderung:

PD_Demoproject_Template_Full_Demo_V2.0.13.0.project als Vorlage, Firmeware-Version des Controllers: 1.35.1.9 (oder höher).

oNotwendige Bibliotheken einbinden

Binden Sie die Bibliotheken des Equipment-Moduls PD_MultiBeltModule 1.0.3.0 (oder höher)

osowie die der Technologiebausteine PD_MultiBelt 1.1.5.0 (oder höher) ein. Alle weiteren benötigten Bibliotheken sind bereits enthalten.

oBereiten Sie die PLC-Konfiguration vor.

Definieren Sie die benötigten Antriebe und logischen Geber für den MultiBelt. Welche Elemente benötigt werden, hängt von der mechanischen Gestaltung des MultiBelt ab. Für jeden Zug muss eine Achse und für jede Indexed Station muss ein logischer Geber angelegt werden, wenn der Start über einen TP erfolgt. Siehe auch "Beispiel einer Init_MultiBeltModule-Aktion"

In folgendem Beispiel wird ein MultiBelt mit drei Stationen und vier Zügen eingebunden. Die Bezeichnung der Objekte erfolgt nach den Namenskonventionen der PD-Vorlage.

Im MultiBelt-Demoprojekt ist die Bezeichnung für den Achsen der Züge DRV_Train1 bis DRV_Train4. Die Bezeichnung des logischen Gebers für die Beladestation ist LE_StartDelay­Station1. Die Bezeichnung des logischen Gebers für die Entladestation ist LE_Master.

oVariablendeklaration

Folgende Variablen müssen im Deklarationsteil des Knotens angelegt werden, in dem sich das MultiBeltModule befinden soll. Im Demoprojekt befindet sich das Modul in SR_CharlyModule.

// MultiBelt Variables
   stMultiBeltItf : MTBM.ST_ModuleInterface;
   fbMultiBeltModule : MTBM.FB_MultiBeltModule;
   fbMultiBeltModuleCtrl : MTBM.FB_MultiBeltModuleController;

// Start Simulation
   fbSimStation1 : MTBM.FB_StartSimulation;
   fbSimStation2 : MTBM.FB_StartSimulation;
   stSimStation1 : MTBM.ST_StartSimulationParameter;
   stSimStation2 : MTBM.ST_StartSimulationParameter;
   xStartSimStation1 : BOOL;
   xNotEquidistandStation1 : BOOL;
   xNotEquidistandGroupsStation1 : BOOL;
   xNotRandomStation1 : BOOL;
   xNorRandomGroupsStation1 : BOOL;
   xStartSimStation2 : BOOL;
   xNotEquidistandStation2 : BOOL;
   xNotEquidistandGroupsStation2 : BOOL;
   xNotRandomStation2 : BOOL;
   xNorRandomGroupsStation2 : BOOL;
   rtrigStation1 : R_TRIG;
   rtrigStation2 : R_TRIG;

oKonstante anlegen

Die Konstante c_udiNumberOfSubModules wird im Deklarationsteil des Knotens um eins erhöht (3->4).

Es wird eine Konstante c_udiMultiBelt: UDINT:= 4; erstellt.

oAufruf von FB_MultiBeltModuleController und FB_MultiBeltModule

fbMultiBeltModuleCtrl und fbMultiBeltModule müssen in der SubModules-Aktion des Knotens aufgerufen werden. Es ist wichtig, dass der Controller vor dem Modul aufgerufen wird.

G-SE-0064898.1.gif-high.gif

 

 

oVerbinden Sie den Controller und das Modul wie in der obigen Abbildung gezeigt.

oFügen Sie im Knoten des Moduls eine Aktion mit dem Namen Init_MultiBeltModule ein und rufen Sie diese im Schritt InitModule_Action auf.

Ein Beispiel für diese Aktion finden Sie im Abschnitt Beispiel einer Init_MultiBeltModule-Aktion.

oPassen Sie die Tabellenbefehle in der Init_CmdTables-Aktion des Knotens an.

Verwenden Sie dafür die Befehle aus dem ENUM MTBM.ET_Cmd. Ein Beispiel für eine Tabelle befindet sich im Abschnitt Beispiel einer Cmd-Tabelle.

oRufen Sie die Funktion MTBM.FC_UpdateAddInterfaceStruct in der UpdateStructs-Aktion des Knotens auf. Sie können sich an dem Beispiel FC_UpdateExampleLeafModuleAddIn­terfaceStruct orientieren.

   MTBM.FC_UpdateAddInterfaceStruct(
      i_pdwSubModuleAddInterfaces:= ADR(adwSubModuleAddInterfaces),
      i_udiSubModuleConstant:= c_udiMultiBelt,
      iq_stMultiBeltModuleItf:= stMultiBeltItf,
      q_etDiag=> etDiag,
      q_etDiagExt=> etDiagExt);

oFügen sie noch folgende persistenten Variablen im Ordner GlobaleVariable/RestoreAxisPo­sition ein:

   lrLoadPosRetainStation1: LREAL;

   lrLoadPosRetainStation2: LREAL;

   lrLoadPosRetainStation3: LREAL;

   lrLoadPosRetainStation4: LREAL;

   lrLoadPosRetainStation5: LREAL;

   lrLoadPosRetainStation6: LREAL;

   lrLoadPosRetainStation7: LREAL;

   lrLoadPosRetainStation8: LREAL;

   astRestoreTrain: ARRAY[1..MTB.Gc_uiMaxNumberOfBelts] OF PDL.ST_HomeSetPos;

oErstellen Sie eine Aktion mit dem Namen Init_StartSimulation im SR_CharlyModule.

G-SE-0064901.1.gif-high.gif

 

 

oErstellen Sie die zwei logischen Geber LE_SimStation1 und LE_SimStation2.

G-SE-0064902.1.gif-high.gif

 

 

oRufen Sie dann LE_SimStation1 und LE_SimStation2 in der Aktion InitModule_Action auf.

G-SE-0064903.1.gif-high.gif

 

 

oRufen Sie die Start-Simulation in der Aktion Logic_Action auf.

G-SE-0064904.1.gif-high.gif

 

 

Integration in die Vorlagenvisualisierung

oIntegration von MTBM.FB_MultiBeltModuleVisController

Fügen Sie die folgende Zeile im Deklarationsteil von SR_VisControl() ein:

   vpq_xDisplaySetJogTargetButton: BOOL;
   vpiq_fbMultiBeltVisController: MTBM.FB_ModuleVisController;

oFügen Sie den folgenden Code in der Aktion SR_VisControl.ModuleVisController ein:

   vpiq_fbMultiBeltVisController(
      i_xEnable:= vpq_xDoEnable,
      i_pstMachineStandardItf:= ADR(SR_MainMachine.stMachineInterface),
      i_pstCurrentStandardItf:= pstCurrent,
      i_dwCurrentAddItf:= dwCurrentAddInterface,
      i_xUpdateData:= xUpdateForOtherFBs,
      i_udiCurrentJogTarget:= G_udiManualModuleSelect,
      iq_stExceptionList:= G_stExceptionList,
      iq_stLogDataList:= G_stLogDataList,
      q_udiSetAsCurrentModule=> udiSetAsCurrentModule,
      q_udiSetAsJogTarget=> udiSetAsJogTarget);

   SetCurrentModule();

oAlle Visualisierungen aus dem Ordner Visualization/MultiBeltModule (Vis_MultiBeltModule, Vis_MultiBeltModule_StationFeedback, Vis_MultiBeltModule_StationParameter, VIS_Multibelt­Module_Train, Vis_MultiBeltModule_Simulation sowie die Vis_MultiBeltModule_Service) aus dem Demoprojekt kopieren in das aktuelle Projekt übernehmen.

oFalls nicht bereits vorhanden, den Frame FR_OtherModuleTypes aus dem Ordner Visualization/FramesProject des Demoprojekts kopieren und in das aktuelle Projekt übernehmen.

Integration in Diagnostics

oErstellen Sie eine Instanz des Funktionsbausteins FB_MultiBeltDiagSource im Deklarati­onsteil des Programms "SR_Diagnostics".

   fbMultiBeltModuleDiagSource: MTBM.FB_MultiBeltDiagSource;

oRufen Sie im Programmteil von "SR_Diagnostics" die Instanz der Diagnosequelle auf.

G-SE-0064899.1.gif-high.gif