Einfügen eines neuen MultiBelt-Equipment-Moduls

Überblick

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

Die Anleitung bezieht sich auf das Projekt: PD_Demoproject_MultiBeltModule_V2.0.4.0.project (oder höher) und das PD_Demoproject_Template_Full_Demo_V2.0.13.0.project (oder höher).

Anforderungen:

PD_Demoproject_Template_Full_Demo_V2.0.13.0.project als Vorlage, Firmwareversion der Steuerung: 1.35.1.9 (oder höher).

  • Notwendige Bibliotheken einbinden

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

  • sowie die der Technologiebausteine PD_MultiBelt 1.1.5.0 (oder höher) ein.

  • Bereiten Sie die Konfiguration der Steuerung 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 Touchprobe erfolgt. Siehe auch Beispiel einer Aktion Init_MultiBeltModule

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

    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_StartDelayStation1. Die Bezeichnung des logischen Gebers für die Entladestation ist LE_Master.

  • Variablendeklaration

    Folgende Variablen müssen im Deklarationsteil des Knoten 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;
  • Konstante 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.

  • FB_MultiBeltModuleController und FB_MultiBeltModule aufrufen

    fbMultiBeltModuleCtrl und müssen in der Action SubModules des Knotens aufgerufen werden. fbMultiBeltModule Den Controller vor dem Modul aufrufen.

  • Den Controller und das Modul wie in der obigen Grafik verschalten.

  • Im Knoten des Moduls eine Aktion mit dem Namen Init_MultiBeltModule einfügen und im Schritt InitModule_Action aufrufen.

    Ein Beispiele für diese Aktion befindet sich im Abschnitt Beispiel einer Aktion Init_MultiBeltModule.

  • Die Tabellenbefehle in der Aktion Init_CmdTables des Knoten anpassen.

    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.

  • Rufen Sie die Funktion MTBM.FC_UpdateAddInterfaceStruct in der Aktion UpdateStructs des Knotens auf. Sie können sich am Beispiel FC_UpdateExampleLeafModuleAddInterfaceStruct orientieren.

   MTBM.FC_UpdateAddInterfaceStruct(
      i_pdwSubModuleAddInterfaces:= ADR(adwSubModuleAddInterfaces),
      i_udiSubModuleConstant:= c_udiMultiBelt,
      iq_stMultiBeltModuleItf:= stMultiBeltItf,
      q_etDiag=> etDiag,
      q_etDiagExt=> etDiagExt);
  • Fügen sie noch folgende persistenten Variablen im Ordner GlobaleVariable/RestoreAxisPosition 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;
  • Erstellen Sie eine Aktion mit dem Namen Init_StartSimulation im SR_CharlyModule.

  • Erstellen Sie die zwei logischen Geber LE_SimStation1 und LE_SimStation2.

  • Rufen Sie dann LE_SimStation1 und LE_SimStation2 in der Aktion InitModule_Action auf.

  • Rufen Sie die Start-Simulation in der Aktion Logic_Action auf.

Integration in die Vorlagenvisualisierung

  • Integrieren Sie MTBM.FB_MultiBeltModuleVisController

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

   vpq_xDisplaySetJogTargetButton: BOOL;
   vpiq_fbMultiBeltVisController: MTBM.FB_ModuleVisController;
  • Fü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();
  • Alle Visualisierungen aus dem Ordner Visualization/MultiBeltModule (Vis_MultiBeltModule, Vis_MultiBeltModule_StationFeedback, Vis_MultiBeltModule_StationParameter, VIS_MultibeltModule_Train, Vis_MultiBeltModule_Simulation sowie die Vis_MultiBeltModule_Service) aus dem Demoprojekt kopieren und in das aktuelle Projekt übernehmen.

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

Integration in Diagnostics

  • Erstellen Sie eine Instanz des Funktionsbausteins FB_MultiBeltDiagSource im Deklarationsteil des Programms „SR_Diagnostics“.

   fbMultiBeltModuleDiagSource: MTBM.FB_MultiBeltDiagSource;
  • Rufen Sie im Programmteil von „SR_Diagnostics“ die Instanz der Diagnosequelle auf.