Ankündigung

Einklappen
Keine Ankündigung bisher.

PML-MACRO (PMLMAC) via BATCH im TTY-Mode aufrufen INKLUSIVE "Übergabeparametern"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Problem] PML-MACRO (PMLMAC) via BATCH im TTY-Mode aufrufen INKLUSIVE "Übergabeparametern"

    Hallo zusammen,

    ich möchte ein Makro via Batch im TTY-Mode starten... allerdings inklusive Verwendung von "Übergabeparametern".

    Im Grunde funktioniert das (bei Start via Command) perfekt:

    Code:
    $m/<Pfad/Dateiname Makro> Wert1 Wert2 Wert3
    So hat man innerhalb des Makros (via "$1", "$2" und "$3") die Werte der Übergabeparameter ("Wert1", "Wert2" und "Wert3") zur Verfügung!


    Wenn ich das Ganze allerdings an den "TTY-Start" dran hänge...

    Code:
    <PFAD>\pdms.bat TTY XXX <USER>/<PASSWORD> /<MDB>  $m/<Pfad/Dateiname Makro> Wert1 Wert2 Wert3
    ... dann habe ich die Übergabeparameter ("Wert1", "Wert2" und "Wert3") nicht zur Verfügung.

    Kennt jemand eine Möglichkeit bzw. hat jemand eine andere Idee / einen Trick parat?



  • #2
    Hi,

    ich komme weder mit der "Alten" noch mit der "Neuen" Schreibweise weiter:
    Code:
    Pfad\pdms.bat -proj=SAM -user=SYSTEM -pass=XXXXXX -mdb=/SAMPLE -macro=$M/C:\Temp\test\pmlmactest.pmlmac $1 $2 $3
    Bringt auch nix, am Ende wird immer Abgeschnitten ob TTY oder nicht ist dabei egal.

    Was soll genau passieren, soll das .BAT aus PDMS gestartet werden durch ein Makro?

    LG Herbert
    Geht net, gibt's net!
    [Entfessler Start]
    Ois wos I do verzapf, is mei eigana Bledsinn und spieglt net die Meinung der Bude wo I hakl (g'haklt hob oder hakl'n werd) wida.
    [Entfessler Ende]

    Kommentar


    • #3
      Wenn es aus PDMS gestartet werden soll habe ich mal folgenden "Trick" angewandt:
      PDMSMakroStart.bat
      --> dort wird fix "C:\Temp\tempmacro.mac" aufgerufen.

      "tempmacro.mac" ist vom PML Makro einfach erstellt/überschrieben worden.

      Inhallt also z.B.:
      Code:
      DESIGN
      !!MeinMarkoMit(|Genau|,|Den|,|Parametern|)
      $P Geht doch, auch wenn mit Krücke
      SAVEWORK
      QUIT FINISH

      Hilft Dir das?
      Geht net, gibt's net!
      [Entfessler Start]
      Ois wos I do verzapf, is mei eigana Bledsinn und spieglt net die Meinung der Bude wo I hakl (g'haklt hob oder hakl'n werd) wida.
      [Entfessler Ende]

      Kommentar


      • #4
        Hi Herbert.

        Das Makro soll eben nicht aus PDMS, sondern via Windows-Aufgabensteuerung (nach Zeitplan) gestartet werden.

        Weiterhin soll es so flexibel sein und so viele "Schalter und Weichen" haben (die eben mit den "Übergabeparametern" gefüttert werden), dass es
        ... im entsprechenden Projekt , mit entsprechendem USER, in entsprechender MDB (bis hierher kein Problem)...
        ... aber eben auch mit verschiedenen Optionen gestartet werden kann. (Die Optionen sollen nur beim Aufruf übergeben werden, sonst brauche ich wieder ein Sammelsurium an Dateien...)

        Danke einstweilen für deine Mühe, die "Neue Schreibweise" kannte ich bisher noch gar nicht...

        Ob mir dein "Marko mit Krücke" weiterhilft ... muss ich noch ein wenig drüber nachdenken, könnte eine Option sein!

        Kommentar


        • #5
          Hallo,
          wie sieht es mit einer Eingabedatei aus? Dann muss halt dein Macro die Werte aus einer Datei rausholen, die du vorher mit Windows per Programm erstellt hast.
          Wenn dein Script (woher es auch immer kommt) die Werte schon hat, dann kann man diese ja in eine Datei schreiben (C:\Temp\Input.txt)
          und im Macro liest Du sie wieder aus

          grüßen
          Helmut


          mitn "M" geht's manchmal leichter, aber Winkelbemaßung geht a net

          Kommentar


          • #6
            Hm,

            bin mir nicht sicher, was Du da so übergeben willst... Wenn Du einen Scheduled Task einrichtest, gehe ich davon aus, dass der die Werte schon fix hat oder?
            Wenn Du nun unterschiedliche Makros starten willst mit dem "selben" Code, würde ich für jede Option eine Krücke bauen:
            "starteallemakros.mac"
            "machdraftupdate.mac"
            "machdesignreport.mac"
            Diese rufen dann die "richtigen" Makro(s) auf.
            Welches *.mac nun geladen wird, definierst du in dem Batch, den der Task aufruft, mit einer einfachen IF Abfrage.

            Also "schedTask.bat PROJ USER PASS MDB MACROOPTION"
            Code:
            IF "%5" == "ALLE"
            Starte PDMS mit alle Makro
            goto :EXIT
            IF "%5" == "NURDRAFT"
            Starte PDMS mit Draft Makro
            goto :EXIT
            Alles was "eleganter" sein soll musst Du wohl oder übel über C# machen.

            LG Herbert
            Geht net, gibt's net!
            [Entfessler Start]
            Ois wos I do verzapf, is mei eigana Bledsinn und spieglt net die Meinung der Bude wo I hakl (g'haklt hob oder hakl'n werd) wida.
            [Entfessler Ende]

            Kommentar


            • #7
              Hallo Herbert,
              Hallo Helmut,

              danke für eure Ideen. Indirekt haben sie mich jetzt zur folgenden "Krücke" gebracht:

              Ich starte ein "Hilfs-Makro" via BATCH (TTY oder Graphics Mode ist hier egal).

              Das "Hilfs-Makro" wechselt dann ins Modul DESIGN und startet via "$m" (mehrfach) das eigentliche Makro - inklusive Übergabeparametern. So funktioniert es. Zwar nicht so "elegant" wie ich ursprünglich wollte, aber es ist ok.

              Ich wünsche schöne Feiertage und einen guten Rutsch nach 2015!

              Kommentar


              • #8
                hmm kann leider nicht funktionieren mit einer Variable weil PDMS das blöd handled im Login Prozess.
                Erstmal unterscheidet er beim starten im ob du TTY Modus startest und danach ob du ein Modul start oder ein Makro angefügt hast
                Dementsprechend setzt er die Flag und springt im Login Prozess in die jeweilige Ecke der Schleife.

                Also
                Code:
                <PFAD>\pdms.bat TTY XXX <USER>/<PASSWORD> /<MDB> $m/<Pfad/Dateiname Makro>
                oder
                
                <PFAD>\pdms.bat TTY XXX <USER>/<PASSWORD> /<MDB>  MODUL (DESIGN,MONITOR,etc)
                Willst du jetzt ein Makro ausführen fehlen im im Code die Variablen dafür weil er nach dem "$m/<Pfad/Dateiname Makro" nichts mehr erwartet.
                Würde nur funktionieren wenn du im pdmsui die login file (C:\AVEVA\Plant\PDMS12.1.SP4\pdmsui\mon\admin\logi n) erweitern würdest damit er weitere variablen mit nehmen soll im falle einen
                Makro starts.


                Eigentlich auch logisch weil du beim pdms start schon ja variablen mit gibts also (TTY XXX <USER>/<PASSWORD> /<MDB> usw) die verschachtelt er sich danach ja nochmal und startet darauf hin alles weitere. daher kannes nicht funktionieren ohne Anpassung der login file. Aufwand ist jetzt gering um es zum laufen zu bringen aber ich würde bei nem hilfsmakro bleiben das ist auf dauer einfacher und sicherer.
                Wolltest du es doch anpassen würde ich ne explizite Flag setzten und dann alles abarbeiten also z.b.
                Code:
                <PFAD>\pdms.bat TTY XXX <USER>/<PASSWORD> /<MDB> [B]OWNSTART[/B]
                jetzt in der login file in der if abfrage checken ob die Flag gesetzt ist und dann die if schleife erweitern und alles weitere mit abhandeln.


                Anfang der Login File
                Code:
                Initiate PDMS login
                Arguments: 1 - Project
                2 - Username/Password
                3 - MDB
                4 - Module
                Global Arguments:
                Returns:
                $)
                
                $:debug$:
                
                $d1=
                $d2=
                $d3=
                $d4=
                $d5=
                
                -- Initialise arguments
                !project = |$1|
                !user = |$2|
                !mdb = |$3|
                [B][COLOR=#FF0000]!module = |$4|[/COLOR][/B]
                !loadMethod = |$5|
                !module = |$4| genau hier übergibt er den Wert /<MDB> $m/<Pfad/Dateiname Makro> aus der start.bat daher funktioniert auch kein '' oder sonstiges weil
                er dann den pml Fehler bekommt im weiteren Verlauf des Codes.
                Zuletzt geändert von Christian; 09.01.2015, 12:48.

                Kommentar


                • #9
                  Hi,

                  stimmt in ..PDMSUI\mon\admin im File LOGIN kann man "basteln".
                  Zeile 166 - wird das Makro executiert (im TTY mode).

                  Ich würde aber davon abraten "System" Files von PDMS oder E3D zu manipulieren.
                  Das gibt über kurz oder lang Ärger. Wer kontrolliert schon bei jedem Update, ob sich in den Files was geändert hat...

                  LG Herbert
                  Geht net, gibt's net!
                  [Entfessler Start]
                  Ois wos I do verzapf, is mei eigana Bledsinn und spieglt net die Meinung der Bude wo I hakl (g'haklt hob oder hakl'n werd) wida.
                  [Entfessler Ende]

                  Kommentar

                  Lädt...
                  X