Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: hat Jemand ein step7 code um Keyence zu steuern ?

  1. #1
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    ich benutze Keyence MD-X1500 mit step 7 (profinet).
    ich habe ein Problem mit Programmeinstellung, wenn ich ein neues Programm in Marking Builder 3 erstelle, markiere ich diese Programm ohne Problem.
    jetzt ich möchte 31 Zeichnen markiere, ich weiss nicht wie kann ich dieses zeichnen zum keyence senden und markieren.
    auch wenn ich markiere etwas kriege ich beim 2D-code-leser NG. das bedeutet es ist nicht erkannt.
    hat Jemand ein step7 code um Keyence zu steuern ?
    vielen dank Im Voraus
    LG Samir
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren Gelöst: hat Jemand ein step7 code um Keyence zu steuern ?  

  2. "Hallo,

    ich habe mir ein SCL-Programm erstellt um den MDX über ProfiNet zu steuern, ein Layout umzuwählen und auch um eigene Beschriftungstexte zu übertragen. Das könnte ich morgen veröffentlichen.
    Ob du dann damit klar kommst ist dann noch eine ander Sache ...

    M.E. hast du noch ein elementares Verständnis-Problem mit dem Laser (bzw. mit der Beschrifterei generell).
    Du mußt mit dem Marking-Builder eine Layout-Datei erstellen (oder mehrere wenn du unterschiedliche Beschriftungs-Aufgaben hast).
    In diese Layout-Datei kann die SPS dann Daten eintragen bzw. sie zum Beschriften hernehmen.
    Selbstverständlich muß diese Datei im Laser verbleiben. Über die Kommunikation mit dem Laser wählst du an, welche Layout-Datei verwendet werden soll.
    Außerdem wählst du über die Kommunikation auch an, in welchen der Blocks in deiner Layout-Datei dein neuer Text geschrieben werden soll.
    Ob der Text dann im Klartext oder als Data-Matrix-Code ausgedruckt wird bestimmt dein Layout.

    Nur davon, dass du anwählst, dass die Beschriftung als DMC-Code ausgegeben werden soll, ist der Code an sich noch nicht rücklesbar. Dafür müssen zunächst die Laser-Einstellungen passen (das machst du dann wieder im Layout - bei DMC gibt es da so einiges einzustellen). Ist dies nun gegeben (der Code wäre also subjektiv super lesbar) müßtest du für die eingebaute Kamera (ich verwende die nicht) auch noch eine passende Beleuchtung einbauen - ansonsten sieht deine Kamera möglicherweise nur "schwarzen Adler auf schwarzem Hintergrund".
    Ich habe, was diese Punkte angeht, ganz gute Erfahrung mit dem für uns zuständigen Keyence-Vertriebler gemacht - vielleicht probierst du das auch mal.

    Gruß
    Larry"


  3. #2
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    noch dazu...paar Programme die mit Marking Builder 3 erstellt, bleibt immer noch in internspeicher von Keyence, ich nicht alle Löschen...immer ein Programm muss da bleiben,
    und wenn ich mit step 7 irgendwelche Programm markieren, wird automatich das Programm markiert, welche von Marking Builder 3 erstellt.

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hallo,

    ich habe mir ein SCL-Programm erstellt um den MDX über ProfiNet zu steuern, ein Layout umzuwählen und auch um eigene Beschriftungstexte zu übertragen. Das könnte ich morgen veröffentlichen.
    Ob du dann damit klar kommst ist dann noch eine ander Sache ...

    M.E. hast du noch ein elementares Verständnis-Problem mit dem Laser (bzw. mit der Beschrifterei generell).
    Du mußt mit dem Marking-Builder eine Layout-Datei erstellen (oder mehrere wenn du unterschiedliche Beschriftungs-Aufgaben hast).
    In diese Layout-Datei kann die SPS dann Daten eintragen bzw. sie zum Beschriften hernehmen.
    Selbstverständlich muß diese Datei im Laser verbleiben. Über die Kommunikation mit dem Laser wählst du an, welche Layout-Datei verwendet werden soll.
    Außerdem wählst du über die Kommunikation auch an, in welchen der Blocks in deiner Layout-Datei dein neuer Text geschrieben werden soll.
    Ob der Text dann im Klartext oder als Data-Matrix-Code ausgedruckt wird bestimmt dein Layout.

    Nur davon, dass du anwählst, dass die Beschriftung als DMC-Code ausgegeben werden soll, ist der Code an sich noch nicht rücklesbar. Dafür müssen zunächst die Laser-Einstellungen passen (das machst du dann wieder im Layout - bei DMC gibt es da so einiges einzustellen). Ist dies nun gegeben (der Code wäre also subjektiv super lesbar) müßtest du für die eingebaute Kamera (ich verwende die nicht) auch noch eine passende Beleuchtung einbauen - ansonsten sieht deine Kamera möglicherweise nur "schwarzen Adler auf schwarzem Hintergrund".
    Ich habe, was diese Punkte angeht, ganz gute Erfahrung mit dem für uns zuständigen Keyence-Vertriebler gemacht - vielleicht probierst du das auch mal.

    Gruß
    Larry

  5. #4
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    vielen Dank Larry für deine Hilfe, ich bin Anfänger, dafür habe ich viele Sache nicht verstanden, und bitte dir um erklären.
    zum Info ich muss jedes mal neue 31 Zeichnen als DMC markieren.

    wie Kann ich mit dem Marking-Builder eine Layout-Datei erstellen?

    wie kann ich In diese Layout-Datei die SPS dann Daten eintragen?

    wie kann ich Über die Kommunikation mit dem Laser welche Layout-Datei verwendet werden auswählen?

    wie kann ich über die Kommunikation , in welchen der Blocks in Layout-Datei neuer Text geschrieben werden auswählen?

    Wie kann ich Laser-Einstellungen passen, um DMC code lesbar zu sein? ich habe externe Beleuchtung verwendet aber immer nur Schwarz

    Kannst du mit Bilder erklären? dann wird das sehr hilfreich
    vielen Dank im Voraus
    LG Samir

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Zitat Zitat von samir85 Beitrag anzeigen
    vielen Dank Larry für deine Hilfe, ich bin Anfänger, dafür habe ich viele Sache nicht verstanden, und bitte dir um erklären.
    zum Info ich muss jedes mal neue 31 Zeichnen als DMC markieren.
    ... ich kann dir einges erklären - einiges andere aber auch nicht.
    In jedem Fall solltest du parallel noch Fa. Keyence bemühen - die sind normalerweise sehr hilfreich ...!

    Zitat Zitat von samir85 Beitrag anzeigen
    wie Kann ich mit dem Marking-Builder eine Layout-Datei erstellen?
    Das mußt du schon gemacht haben denn du sagst ja, dass du mit dem Marking Builder schon etwas beschriftet hast.

    Zitat Zitat von samir85 Beitrag anzeigen
    wie kann ich In diese Layout-Datei die SPS dann Daten eintragen?
    Jede auf dem Laser gespeicherte Layout-Datei hat eine Index-Nummer - diese kannst du über die SPS ansprechen/anwählen ...

    Zitat Zitat von samir85 Beitrag anzeigen
    wie kann ich Über die Kommunikation mit dem Laser welche Layout-Datei verwendet werden auswählen?
    genau wie eine Frage weiter oben ...

    Zitat Zitat von samir85 Beitrag anzeigen
    wie kann ich über die Kommunikation , in welchen der Blocks in Layout-Datei neuer Text geschrieben werden auswählen?
    Wenn du einen Text (ich weiß jetzt im Augenblich nicht genau, wie Keyence das nennt) zum Laser schreiben willst so mußt du dafür die Block-Nummer angeben, in die er geschrieben werden soll. Die Block-Formatierung bestimmt dann, wie der Text ausgegeben wird - zum Beispiel auch als DMC ...

    Zitat Zitat von samir85 Beitrag anzeigen
    Wie kann ich Laser-Einstellungen passen, um DMC code lesbar zu sein? ich habe externe Beleuchtung verwendet aber immer nur Schwarz
    Dafür mußt du probieren - das hängt sehr von deinem Werkstoff ab aus den du schreiben willst. Die Schlüssel-Parameter sind hier aber Laser-Leistung und Schreibgeschwindigkeit. Irgendwann kann man dann auch noch mit der Frequenz spielen. Auch hierbei könnte der Keyence-Vertriebler dir behilflich sein ...

    Gruß
    Larry

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Keyence hat ein Primitiv-Beispiel erstellt. Ich weiß nicht mehr ob ich das extra von deren Homepage habe oder ob das bei den gsdml-Dateien dabei war oder ob ich mit das habe schicken lassen.

    Man braucht nicht wirklich viel, aber was man auf jeden Fall tun sollte, das Handbuch für die Profinetkommunikation lesen und sich darin die Belegung der Profinet-IN-OUT-Daten ansehen.
    Ich hab mit mit diesen Daten einen IN- und eine OUT- Datentyp erstellt. Den kann man dann direkt auf den E- bzw. A-Bereich legen, in der Symbolik.
    Ab da kann man dann schön symbolisch arbeiten direkt mit den A/A-Daten arbeiten, ein Umkopieren in Datenbereiche ist bei der 1500-er hier gar nicht zwingend nötig.

    Es gibt zum Programmwechsel und zum Ändern eines Strings jeweils ein Bit als Befehl. Vorher muß man die jeweils benötigten Daten (Programmnummer, Blocknummer, String) in den dafür vorgesehenen Datenbereich kopieren.

    Jedes Bit hat eine Requestbit, das anzeigt, das der Befehl ausgeführt wurde. Dieses Requestbit muß wiederum mit einem weiteren Bit "Clear Request" gelöscht werden, erst danach kann man die geünschte Funktion erneut starten.

    Eine einfache Kommunikation mit Programmwechsel, Stringänderung und StartTrigger hab ich in 6 oder 8 mini-Netzwerken realisiert, da hab ich mal auf einen eignen Baustein verzichtet.

    PS Larry: aber interessieren würde mich dein Baustein natürlich, schätze, der ist etwas universeller, als meine faule Minimallösung
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  8. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Eigentlich wollte ich hier gerade den Code meines Bausteins einstellen - leider ist der viiiiel zu lang für die Forums-Software (ca. 40000 Zeichen). Ich werde also erstmal etwas den Code zerstückeln und dann etwas später posten ...

    Gruß
    Larry

  9. #8
    Registriert seit
    18.11.2015
    Beiträge
    42
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    vielen Dank Ralle und Larry

  10. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard

    Hier mal der Code ...
    Teil 1 :
    Code:
    FUNCTION_BLOCK FB313 
    TITLE   = 'UP Steuern Keyence-Laser MDX' 
    AUTHOR  : 'Larry'
    VERSION : '0.3'   //   17.12.2015
    KNOW_HOW_PROTECT
    //    Baustein-Parameter
    VAR_INPUT
       Steuer_Befehle          : BOOL ; 
       _CMD_Laser_beschriften  : BOOL ;       // CMD : Laser Start Beschriftung
       _CMD_Set_Layout         : BOOL ;       // CMD : Layout-Anwahl an den Laser übergeben
       _CMD_Set_Beschriftung   : BOOL ;       // CMD : Beschriftungstext in den Beschriftungsblock des Lasers übergeben
       _CMD_Set_DateTime       : BOOL ;       // CMD : Datum und Uhrzeit der SPS an den Laser übergeben  
       _CMD_Quit               : BOOL ;       // CMD : Quittierung Fehler etc.
       Daten                   : BOOL ; 
       _Layout_Index           : INT := 0   ; // Index-Nummer der Layout-Datei
       _Beschriftungs_Text     : STRING[100] := 'Test RM' ; // Inhalt der Beschriftung (falls verwendet)
       _Beschriftungs_Block    : INT := -1  ; // Block-Nummer für den Beschriftungs-Text  (-1 : keinen Text übetragen)
       _SPS_Datum              : DATE ;       // System-Datum der SPS
       _SPS_Uhrzeit            : TOD ;        // System-Uhrzeit der SPS
       Koppeladressen_E        : BOOL ; 
       _PerE_MachineStatus     : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Machine Status"
       _PerE_FunctionStatus    : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Function Status"
       _PerE_CompletionStatus  : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Completion Status"
       _PerE_Operate_Parameter : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Operate Parameters"
       Koppeladressen_A        : BOOL ; 
       _PerA_Generel_Req       : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Generel Request"
       _PerA_Function_Req      : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Function Request"
       _PerA_CompletionClr_Req : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Completion Clear Request"
       _PerA_Req_Parameter     : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Request Parameter"
       _PerA_Req_Data          : INT ;        // 1. Perepherie-Adresse des Laser-Koppelbereichs "Request Data"
       Laser_RM                : BOOL ; 
       _RM_PN_Slave_OK         : BOOL ;       // der ProfiNet-Slave des Lasers ist OK
    END_VAR
    VAR_IN_OUT
      Init                     : BOOL := false ; // Baustein initialisieren
    END_VAR
    VAR_OUTPUT
       Meldungen               : BOOL ;
       _Einschalten_laeuft     : BOOL ;   // MSG : Einschalten / Hochfahren des Lasers ist gestartet
       _Laser_eingeschaltet    : BOOL ;   // MSG : der Laser ist eingeschaltet
       _Laser_Emission_OK      : BOOL ;   // MSG : die Strahlquelle ist bereit
       _Markieren_laeuft       : BOOL ;   // MSG : Beschriftung läuft
       _Markieren_fertig       : BOOL ;   // MSG : Beschriftung beendet
       
       _Layout_geladen         : BOOL ;   // MSG : Layout-Datei vom Laser geladen
       _Beschriftung_geladen   : BOOL ;   // MSG : Beschriftungs-Text vom Laser geladen
       _DateTime_geladen       : BOOL ;   // MSG : Datum und Uhrzeit vom Laser geladen
       
       _Laser_Fehler           : BOOL ;   // MSG : Laser-Fehler
    END_VAR
    
    CONST
       // Schrittketten Enum's
       enum_SK_bereit           := 0 ;
       enum_SK_beendet          := 999 ;
       
       enum_Prg_none            := 0 ;
       enum_Prg_setLayout       := 1 ;  
       enum_Prg_setBeschriftung := 2 ;  
       enum_Prg_setDateTime     := 3 ; 
       enum_Prg_Aktivierung     := 10 ; 
       enum_Prg_Beschriftung    := 11 ;
       
    END_CONST
    
    VAR
        
    // Koppelbereiche Laser
       Read_Data : STRUCT    
          MachineStatus : STRUCT
             Ready   : BOOL ;    // - 
             Error   : BOOL ;    // -    
             Warning  : BOOL ;    // -    
             Notice   : BOOL ;    // -    
             Shutter  : BOOL ;    // -
             Start_Up  : BOOL ;    // -
             x06   : BOOL ;    // -
             x07   : BOOL ;    // - 
                                 
             Laser_Emit  : BOOL ;    // -
             Shutter_Control : BOOL ;    // -                      
             Remote_Interlock : BOOL ;    // -                      
             Contacter  : BOOL ;    // -   
             x14   : BOOL ;    // -
             x15   : BOOL ;    // - 
             x16   : BOOL ;    // -
             x17   : BOOL ;    // - 
                        
             Busy   : BOOL ;    // -                      
             Print_Busy   : BOOL ;    // -                      
             Guide_Print_Busy : BOOL ;    // -                      
             Change_Busy  : BOOL ;    // -                      
             Lock_Busy  : BOOL ;    // -                      
             Edit_Busy   : BOOL ;    // -                      
             Code_Reader_Busy : BOOL ;    // -                      
             x27   : BOOL ;    // -
            
             x30   : BOOL ;    // - 
             x31   : BOOL ;    // - 
             x32   : BOOL ;    // - 
             x33   : BOOL ;    // - 
             x34   : BOOL ;    // - 
             x35   : BOOL ;    // - 
             x36   : BOOL ;    // - 
             x37   : BOOL ;    // - 
          END_STRUCT ;
        
          FunctionStatus : STRUCT
             Trigger_Lock_iState : BOOL ;    // - 
             OperationMode_iState : BOOL ;    // -    
             Laser_Control_iState : BOOL ;    // -    
             Date_hold_iState  : BOOL ;    // -    
             x04   : BOOL ;    // -
             x05   : BOOL ;    // -
             x06    : BOOL ;    // -
             x07   : BOOL ;    // - 
                                 
             Date_hold_attached : BOOL ;    // -
             Counter_End1  : BOOL ;    // -                      
             Counter_End2  : BOOL ;    // -                      
             Counter_End3  : BOOL ;    // -                      
             Counter_End4  : BOOL ;    // -                      
             DMC_CodeResult_IO  : BOOL ;    // -                      
             DMC_CodeResult_NIO : BOOL ;    // -                      
             x17   : BOOL ;    // - 
            
             x20   : BOOL ;    // - 
             x21   : BOOL ;    // - 
             x22   : BOOL ;    // - 
             x23   : BOOL ;    // - 
             x24   : BOOL ;    // - 
             x25   : BOOL ;    // - 
             x26   : BOOL ;    // - 
             x27   : BOOL ;    // - 
            
             x30   : BOOL ;    // - 
             x31   : BOOL ;    // - 
             x32   : BOOL ;    // - 
             x33   : BOOL ;    // - 
             x34    : BOOL ;    // - 
             x35   : BOOL ;    // - 
             x36   : BOOL ;    // - 
             x37   : BOOL ;    // - 
          END_STRUCT ;
        
          CompletionStatus : STRUCT
             Print_Complete   : BOOL ;    // - 
             Guide_Print_Complete  : BOOL ;    // -    
             Print_Stop_Complete  : BOOL ;    // -    
             Error_Clear_Complete  : BOOL ;    // -    
             Code_Read_Complete  : BOOL ;    // -
             x05    : BOOL ;    // -
             x06    : BOOL ;    // -
             x07    : BOOL ;    // - 
                                 
             Edit_Complete   : BOOL ;    // -
             x11    : BOOL ;    // -
             x12    : BOOL ;    // -
             x13    : BOOL ;    // - 
             x14    : BOOL ;    // -
             x15    : BOOL ;    // -
             x16    : BOOL ;    // - 
             x17    : BOOL ;    // - 
            
             Prg_Chg_Complete  : BOOL ;    // -                      
             Rank_Chg_Complete  : BOOL ;    // -                      
             CounterNr_Chg_Complete  : BOOL ;    // -                      
             CounterVal_Chg_Complete : BOOL ;    // -                      
             Count_Up_Complete  : BOOL ;    // -                      
             Count_Dn_Complete  : BOOL ;    // -                      
             Counter_Reset_Complete  : BOOL ;    // -                      
             x27    : BOOL ;    // - 
            
             x30    : BOOL ;    // -
             x31    : BOOL ;    // -
             x32    : BOOL ;    // -
             x33    : BOOL ;    // - 
             x34    : BOOL ;    // -
             x35    : BOOL ;    // -
             x36    : BOOL ;    // - 
             x37    : BOOL ;    // - 
             CharStr_ReadReq_Complete : BOOL ;    // -                      
             CharStr_Print_Complete  : BOOL ;    // -                      
             CharStr_Change_Complete : BOOL ;    // -                      
             x43    : BOOL ;    // - 
             x44    : BOOL ;    // -
             x45    : BOOL ;    // -
             x46    : BOOL ;    // - 
             x47    : BOOL ;    // - 
            
             x50    : BOOL ;    // -
             x51    : BOOL ;    // -
             x52    : BOOL ;    // -
             x53    : BOOL ;    // - 
             x54    : BOOL ;    // -
             x55    : BOOL ;    // -
             x56    : BOOL ;    // - 
             x57    : BOOL ;    // - 
            
             x60    : BOOL ;    // -
             x61    : BOOL ;    // -
             x62    : BOOL ;    // -
             x63    : BOOL ;    // - 
             x64    : BOOL ;    // -
             x65    : BOOL ;    // -
             x66    : BOOL ;    // - 
             x67    : BOOL ;    // - 
             Command_Req_Complete  : BOOL ;    // -
             x71    : BOOL ;    // -
             x72    : BOOL ;    // -
             x73    : BOOL ;    // - 
             x74    : BOOL ;    // -
             x75    : BOOL ;    // -
             x76     : BOOL ;    // - 
             x77    : BOOL ;    // - 
          END_STRUCT ;
          Operate_Parameters : STRUCT
             akt_Programm_Nr : INT ;    // -    
             Zaehler_Nr  : INT ;    // -  
             Zahlerwert  : INT ;    // -  
             Rank_Nr  : INT ;    // -  
          END_STRUCT ;
       END_STRUCT ;
        
       at_Read_Data AT Read_Data : STRUCT    
          MachineStatus  : DWORD ; 
          FunctionStatus  : DWORD ; 
          CompletionStatus  : ARRAY [1..2] OF DWORD ;  
          Operate_Parameters : ARRAY [1..2] OF DWORD ;   
       END_STRUCT ;
        
       Write_Data : STRUCT     
          Generel_Request : STRUCT
             Print   : BOOL ;    // - 
             Guide_Print  : BOOL ;    // -    
             Print_Stop  : BOOL ;    // -    
             Error_Clear  : BOOL ;    // -    
             Code_Read  : BOOL ;    // -
             x05   : BOOL ;    // -
             x06   : BOOL ;    // -
             x07   : BOOL ;    // - 
            
             x10   : BOOL ;    // -
             x11   : BOOL ;    // -
             x12   : BOOL ;    // -
             x13   : BOOL ;    // - 
             x14   : BOOL ;    // -
             x15   : BOOL ;    // -
             x16   : BOOL ;    // - 
             x17   : BOOL ;    // - 
                                 
             Prg_ChangeReq  : BOOL ;    // -
             Rank_ChangeReq  : BOOL ;    // -                      
             Counter_Nr_ChangeReq : BOOL ;    // -                      
             Counter_Val_ChangeReq : BOOL ;    // -                      
             Count_Up_Req  : BOOL ;    // -                      
             Count_Dn_Req  : BOOL ;    // -                      
             Counter_Reset_Req  : BOOL ;    // -                      
             x27   : BOOL ;    // - 
            
             x30   : BOOL ;    // -
             x31   : BOOL ;    // -
             x32   : BOOL ;    // -
             x33   : BOOL ;    // - 
             x34   : BOOL ;    // -
             x35   : BOOL ;    // -
             x36   : BOOL ;    // - 
             x37   : BOOL ;    // - 
            
             x40   : BOOL ;    // -
             x41   : BOOL ;    // -
             x42   : BOOL ;    // -
             x43   : BOOL ;    // - 
             x44   : BOOL ;    // -
             x45   : BOOL ;    // -
             x46   : BOOL ;    // - 
             x47   : BOOL ;    // - 
            
             CharString_Read_Req : BOOL ;    // -                      
             CharString_Print_Req : BOOL ;    // -                      
             CharString_Change_Req : BOOL ;    // -                      
             x53   : BOOL ;    // - 
             x54   : BOOL ;    // -
             x55   : BOOL ;    // -
             x56   : BOOL ;    // - 
             x57   : BOOL ;    // - 
            
             x60   : BOOL ;    // -
             x61   : BOOL ;    // -
             x62   : BOOL ;    // -
             x63   : BOOL ;    // - 
             x64   : BOOL ;    // -
             x65   : BOOL ;    // -
             x66   : BOOL ;    // - 
             x67   : BOOL ;    // - 
            
             Command_Req   : BOOL ;    // -                      
             x71   : BOOL ;    // -                      
             x72   : BOOL ;    // -                      
             x73   : BOOL ;    // - 
             x74   : BOOL ;    // -
             x75   : BOOL ;    // -
             x76   : BOOL ;    // - 
             x77   : BOOL ;    // - 
          END_STRUCT ;
        
          Function_Request : STRUCT
             Trigger_Lock_Req : BOOL ;    // - 
             Machine_Dis_Req : BOOL ;    // -    
             Laser_Control_Req : BOOL ;    // -    
             Date_hold_Req  : BOOL ;    // -    
             x04   : BOOL ;    // -
             x05   : BOOL ;    // -
             x06   : BOOL ;    // -
             x07   : BOOL ;    // - 
                                 
             x10   : BOOL ;    // -
             x11   : BOOL ;    // -                      
             x12   : BOOL ;    // -                      
             x13   : BOOL ;    // -                      
             x14   : BOOL ;    // -                      
             x15   : BOOL ;    // -                      
             x16    : BOOL ;    // -                      
             x17   : BOOL ;    // - 
            
             x20   : BOOL ;    // - 
             x21   : BOOL ;    // - 
             x22   : BOOL ;    // - 
             x23   : BOOL ;    // - 
             x24   : BOOL ;    // - 
             x25   : BOOL ;    // - 
             x26   : BOOL ;    // - 
             x27   : BOOL ;    // - 
            
             x30   : BOOL ;    // - 
             x31   : BOOL ;    // - 
             x32   : BOOL ;    // - 
             x33   : BOOL ;    // - 
             x34   : BOOL ;    // - 
             x35   : BOOL ;    // - 
             x36   : BOOL ;    // - 
             x37   : BOOL ;    // - 
          END_STRUCT ;
        
          CompletionClr_Request : STRUCT
             Print_Complete   : BOOL ;    // - 
             Guide_Print_Complete  : BOOL ;    // -    
             Print_Stop_Complete  : BOOL ;    // -    
             Error_Clear_Complete  : BOOL ;    // -    
             Code_Read_Complete  : BOOL ;    // -
             x05    : BOOL ;    // -
             x06    : BOOL ;    // -
             x07    : BOOL ;    // - 
                                 
             Edit_Complete   : BOOL ;    // -
             Time_Update   : BOOL ;    // -
             x12    : BOOL ;    // -
             x13    : BOOL ;    // - 
             x14    : BOOL ;    // -
             x15    : BOOL ;    // -
             x16    : BOOL ;    // - 
             x17    : BOOL ;    // - 
            
             Prg_Chg_Complete  : BOOL ;    // -                      
             Rank_Chg_Complete  : BOOL ;    // -                      
             CounterNr_Chg_Complete  : BOOL ;    // -                      
             CounterVal_Chg_Complete : BOOL ;    // -                      
             Count_Up_Complete  : BOOL ;    // -                      
             Count_Dn_Complete  : BOOL ;    // -                      
             Counter_Reset_Complete  : BOOL ;    // -                      
             x27    : BOOL ;    // - 
            
             x30    : BOOL ;    // -
             x31    : BOOL ;    // -
             x32    : BOOL ;    // -
             x33    : BOOL ;    // - 
             x34    : BOOL ;    // -
             x35    : BOOL ;    // -
             x36    : BOOL ;    // - 
             x37    : BOOL ;    // - 
             CharStr_ReadReq_Complete : BOOL ;    // -                      
             CharStr_PrintReq_Complet : BOOL ;    // -                      
             CharStr_ChgReq_Complete : BOOL ;    // -                      
             x43    : BOOL ;    // - 
             x44    : BOOL ;    // -
             x45    : BOOL ;    // -
             x46    : BOOL ;    // - 
             x47    : BOOL ;    // - 
            
             x50    : BOOL ;    // -
             x51    : BOOL ;    // -
             x52    : BOOL ;    // -
             x53    : BOOL ;    // - 
             x54    : BOOL ;    // -
             x55    : BOOL ;    // -
             x56    : BOOL ;    // - 
             x57    : BOOL ;    // - 
            
             x60    : BOOL ;    // -
             x61    : BOOL ;    // -
             x62    : BOOL ;    // -
             x63    : BOOL ;    // - 
             x64    : BOOL ;    // -
             x65    : BOOL ;    // -
             x66    : BOOL ;    // - 
             x67    : BOOL ;    // - 
             Command_Req_Complete  : BOOL ;    // -
             x71    : BOOL ;    // -
             x72    : BOOL ;    // -
             x73    : BOOL ;    // - 
             x74    : BOOL ;    // -
             x75    : BOOL ;    // -
             x76    : BOOL ;    // - 
             x77    : BOOL ;    // - 
          END_STRUCT ;
     
          Parameter_Nr : DINT ; 
          
          Parameter_Data : STRUCT
             Size                        : INT ;    
             Inhalt                      : ARRAY [0..127] OF BYTE ;   
          END_STRUCT ;
       END_STRUCT ;
        
       at_Write_Data AT Write_Data : STRUCT     
          Generel_Request        : ARRAY [1..2] OF DWORD ;  
          Function_Request       : DWORD ; 
          CompletionClr_Request  : ARRAY [1..2] OF DWORD ;  
          Parameter_Nr           : DWORD ;    
          Parameter_Data         : ARRAY [0..64] OF WORD ;   
       END_STRUCT ;
      
       LaserStatus  : STRUCT 
          Init_OK                : BOOL ;   // der Baustein ist initialisiert
           
          Markieren_aktiv        : BOOL ;   // Beschriftung läuft
          Markieren_fertig       : BOOL ;   // Beschriftung beendet
           
          Layout_geaendert       : BOOL ;   // die Layout-Datei hat sich geändert
          Layout_geladen         : BOOL ;   // Layout  geladen
          Beschriftung_geaendert : BOOL ;   // der Beschriftungs-Text hat sich geändert
          Beschriftung_geladen   : BOOL ;   // Beschriftung geladen
           
          deaktivieren           : BOOL ;   // Anwahl : Laser de-aktivieren
          aktivieren             : BOOL ;   // Anwahl : Laser aktivieren
           
          Laser_Ein              : BOOL ;   // Laser eingeschaltet
          Laser_Trigger          : BOOL ;   // RM Laser getriggert
          Shutter_Open           : BOOL ;   // RM Shutter öffnen
          Emission               : BOOL ;   // RM Laser-Emission möglich
          Fehler                 : BOOL ;   // RM Störung / Fehler beim Laser
       END_STRUCT ;
        
       Save_Daten : STRUCT       
          Layout_Index  : INT := 0 ;
          Beschriftung  : STRING [100] := '' ; 
       END_STRUCT ;
       
       at_Save_Daten AT Save_Daten : STRUCT       
          Layout_Index : INT ;
          
          Beschriftung  : STRUCT 
             Total  : BYTE ;
             Length : BYTE ;
             Chars  : ARRAY [1..100] OF BYTE ;
          END_STRUCT ;
       END_STRUCT ;
      
      
       AblaufPrg : STRUCT
          aktiv           : INT := enum_Prg_none ;   // Index des gewählten aktiven Programm-Teils
          
          setLayout       : INT := enum_SK_bereit ;  // Programmteil um das Layout im Laser umzuwählen
          setBeschriftung : INT := enum_SK_bereit ;  // Programmteil um einen benutzer-definierten Beschriftungstext an den Laser zu übertragen
          setDateTime     : INT := enum_SK_bereit ;  // Programmteil um das Datum/die Uhrzeit der SPS an den Laser zu übertragen
          
          Beschriftung    : INT := enum_SK_bereit ;  // Ablauf Beschriftung
       END_STRUCT ;
        
       erster_Start : STRUCT            // der Baustein wird das erste Mal (nach Neustart oder Init) benutzt
          setLayout       : BOOL := true ;  // Programmteil um das Layout im Laser umzuwählen
          setBeschriftung : BOOL := true ;  // Programmteil um einen benutzer-definierten Beschriftungstext an den Laser zu übertragen
          setDateTime     : BOOL := true ;  // Programmteil um das Datum/die Uhrzeit der SPS an den Laser zu übertragen
       END_STRUCT ;
         
       Impuls_Timer : SFB4 ;
       
    END_VAR     
     
    VAR_TEMP
      i , L , Error : INT ;
      
      TT, MM , JJ , WT , JT , KW , SJ : INT ;
      H, M , S , MS                   : INT ;
      
      xf : BOOL ;
    END_VAR

  11. #10
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.398 Danke für 1.998 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ... und der 2.Teil :
    Code:
    BEGIN 
    //    Perepherie-Daten laden  
    at_Read_Data.MachineStatus         := PED[_PerE_MachineStatus] ;
    at_Read_Data.FunctionStatus        := PEW[_PerE_FunctionStatus] ;
    at_Read_Data.CompletionStatus[1]   := PED[_PerE_CompletionStatus +0] ;
    at_Read_Data.CompletionStatus[2]   := PED[_PerE_CompletionStatus +4] ;
    at_Read_Data.Operate_Parameters[1] := PED[_PerE_Operate_Parameter +0] ;
    at_Read_Data.Operate_Parameters[2] := PED[_PerE_Operate_Parameter +4] ;
    LaserStatus.Shutter_Open  := Read_Data.MachineStatus.Shutter ;
    LaserStatus.Fehler        := Read_Data.MachineStatus.Error ;
    LaserStatus.Laser_Trigger := Read_Data.MachineStatus.Print_Busy ;
    
    //    Baustein initialisieren  
    IF Init THEN
       AblaufPrg.aktiv           := enum_Prg_none ;  
           
       AblaufPrg.setLayout       := enum_SK_bereit ;  
       AblaufPrg.setBeschriftung := enum_SK_bereit ;  
       AblaufPrg.setDateTime     := enum_SK_bereit ; 
          
       AblaufPrg.Beschriftung    := enum_SK_bereit ;
       
       LaserStatus.Init_OK       := true ;
       
       erster_Start.setLayout       := true ;
       erster_Start.setBeschriftung := true ;
       erster_Start.setDateTime     := true ;
       
       at_Write_Data.Generel_Request[1] := 0 ;
       at_Write_Data.Generel_Request[2] := 0 ;
       
       at_Write_Data.CompletionClr_Request[1] := 0 ;
       at_Write_Data.CompletionClr_Request[2] := 0 ;
       
       Init := false ;
    END_IF ;
    
    //    Layout setzen / Programm-Nummer umwählen  
    IF (AblaufPrg.aktiv = enum_Prg_none) OR (AblaufPrg.aktiv = enum_Prg_setLayout) THEN // Verriegelung gegen andere Abläufe
        CASE AblaufPrg.setLayout OF
            enum_SK_bereit :
                IF _CMD_Set_Layout THEN 
                   AblaufPrg.aktiv := enum_Prg_setLayout ;
                   AblaufPrg.setLayout := 1 ;
                END_IF ;
            1 : // neue Layout-Nummer schreiben
                Save_Daten.Layout_Index := _Layout_Index ;
                Write_Data.Parameter_Nr := INT_TO_DINT(_Layout_Index) ;
                   PAD[_PerA_Req_Parameter] := at_Write_Data.Parameter_Nr ; 
                AblaufPrg.setLayout := 2 ;  
            2 : // Steuerbit für Daten-Übernahme an Laser setzen
                Write_Data.Generel_Request.Prg_ChangeReq := true ;
                AblaufPrg.setLayout := 3 ;
            3 : // Feedback abfragen und auswerten - Daten-Übernahme quittieren
                IF Read_Data.CompletionStatus.Prg_Chg_Complete THEN 
                   Write_Data.Generel_Request.Prg_ChangeReq := false ;
                   at_Read_Data.Operate_Parameters[1] := PED[_PerE_Operate_Parameter] ;
                   IF Read_Data.Operate_Parameters.akt_Programm_Nr = _Layout_Index THEN
                      Write_Data.Generel_Request.Prg_ChangeReq := false ;
                      Write_Data.CompletionClr_Request.Prg_Chg_Complete := true ;
                      AblaufPrg.setLayout := 4 ;
                   END_IF ;   
                END_IF ; 
            4 : // Feedback abfragen
                IF NOT Read_Data.CompletionStatus.Prg_Chg_Complete THEN 
                   Write_Data.CompletionClr_Request.Prg_Chg_Complete := false ;
                   erster_Start.setLayout := false ;
                   AblaufPrg.setLayout := enum_SK_beendet ;
                END_IF ; 
            enum_SK_beendet : // fertig
                IF NOT _CMD_Set_Layout THEN 
                   AblaufPrg.aktiv := enum_Prg_none ;
                   AblaufPrg.setLayout := enum_SK_bereit ;
                END_IF ;
        END_CASE ;
    END_IF ; 
    _Layout_geladen := (Save_Daten.Layout_Index = _Layout_Index) AND ((AblaufPrg.setLayout = enum_SK_bereit) or (AblaufPrg.setLayout = enum_SK_beendet)) ;
    LaserStatus.Layout_geladen := _Layout_geladen ;
    
    //    Beschriftungstext übertragen  
    IF (AblaufPrg.aktiv = enum_Prg_none) OR (AblaufPrg.aktiv = enum_Prg_setBeschriftung) THEN  // Verriegelung gegen andere Abläufe
        CASE AblaufPrg.setBeschriftung OF
            enum_SK_bereit :
                IF _CMD_Set_Beschriftung THEN 
                   AblaufPrg.aktiv := enum_Prg_setBeschriftung ;
                   AblaufPrg.setBeschriftung := 1 ;
                END_IF ;
            1 :
                Save_Daten.Beschriftung := _Beschriftungs_Text ;
          //      Save_Daten.Beschriftung := 'dies ist ein Test' ;
                IF _Beschriftungs_Block < 0 THEN  // keinen Text setzen
                   AblaufPrg.setBeschriftung := enum_SK_beendet ;
                ELSE
                   // Block-Nr. wählen
                   Write_Data.Parameter_Nr := INT_TO_DINT(_Beschriftungs_Block) ;
                      PAD[_PerA_Req_Parameter] := at_Write_Data.Parameter_Nr ; 
                   // Beschriftungs-Text übergeben
                   L := BYTE_TO_INT(at_Save_Daten.Beschriftung.Length) ;
                   FOR i := 1 TO L BY 1 do
                      Write_Data.Parameter_Data.Inhalt[i-1] := at_Save_Daten.Beschriftung.Chars[i] ;
                   END_FOR ;
                   Write_Data.Parameter_Data.Size := L ;
                   FOR i := L TO 127 BY 1 do
                      Write_Data.Parameter_Data.Inhalt[i] := 0 ;
                   END_FOR ;
                   FOR i := 0 TO 64 BY 1 DO
                      PAW[i*2 + _PerA_Req_Data] := at_Write_Data.Parameter_Data[i] ; 
                   END_FOR ;
     
                   AblaufPrg.setBeschriftung := 2 ;
                END_IF ;   
            2 : // Steuerbit für Daten-Übernahme an Laser setzen
                Write_Data.Generel_Request.CharString_Change_Req := true ;
                AblaufPrg.setBeschriftung := 3 ;
            3 : // Feedback abfragen und auswerten - Daten-Übernahme quittieren
                IF Read_Data.CompletionStatus.CharStr_Change_Complete THEN 
                   Write_Data.Generel_Request.CharString_Change_Req := false ;  
                   Write_Data.CompletionClr_Request.CharStr_ChgReq_Complete := true ;
                   AblaufPrg.setBeschriftung := 4 ;
                END_IF ; 
            4 : // Feedback abfragen
                IF NOT Read_Data.CompletionStatus.CharStr_Change_Complete THEN 
                   Write_Data.CompletionClr_Request.CharStr_ChgReq_Complete := false ;
                   erster_Start.setDateTime := false ;
                   AblaufPrg.setBeschriftung := enum_SK_beendet ;
                END_IF ; 
           enum_SK_beendet :
                IF NOT _CMD_Set_Beschriftung THEN 
                   AblaufPrg.aktiv := enum_Prg_none ;
                   AblaufPrg.setBeschriftung := enum_SK_bereit ;
                END_IF ;
        END_CASE ;
    END_IF ; 
    _Beschriftung_geladen := EQ_STRNG(S1:=Save_Daten.Beschriftung , S2:=_Beschriftungs_Text) AND ((AblaufPrg.setBeschriftung = enum_SK_bereit) or (AblaufPrg.setBeschriftung = enum_SK_beendet)) ;
    LaserStatus.Beschriftung_geladen := _Beschriftung_geladen ;
    
    //    Datum und Uhrzeit übertragen  
    (*
    IF (AblaufPrg.aktiv = enum_Prg_none) OR (AblaufPrg.aktiv = enum_Prg_setDateTime) THEN  // Verriegelung gegen andere Abläufe
        CASE AblaufPrg.setDateTime OF
            enum_SK_bereit :
                IF _CMD_Set_DateTime THEN 
                   AblaufPrg.aktiv := enum_Prg_setDateTime ;
                   AblaufPrg.setDateTime := 1 ;
                END_IF ;
            1 : // Systemuhr auslesen und Daten in Übertragungspuffer schreiben
                Conv_Date_TTMMJJ (IN_Date := _SPS_Datum
                                 ,Jahr  := JJ
                                 ,Monat := MM
                                 ,Tag   := TT
                                 ,Wochentag     := WT
                                 ,Schaltjahr    := SJ
                                 ,Jahrestag     := JT
                                 ,Kalenderwoche := KW
                                 ) ; 
                Conv_TOD_HHMMSS  (IN_Uhrzeit := _SPS_Uhrzeit
                                 ,Stunden       := H
                                 ,Minuten       := M
                                 ,Sekunden      := S
                                 ,Millisekunden := MS
                                 ) ;
     //           JJ := JJ-2 ; TT := TT-2 ; H := H-2 ;
                
                Write_Data.Parameter_Data.Inhalt[00] := CHAR_TO_BYTE('D') ;
                Write_Data.Parameter_Data.Inhalt[01] := CHAR_TO_BYTE('A') ;
                Write_Data.Parameter_Data.Inhalt[02] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[03] := INT_TO_BYTE(((JJ / 1000) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[04] := INT_TO_BYTE(((JJ /  100) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[05] := INT_TO_BYTE(((JJ /   10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[06] := INT_TO_BYTE(((JJ /    1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[07] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[08] := INT_TO_BYTE(((MM /   10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[09] := INT_TO_BYTE(((MM /    1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[10] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[11] := INT_TO_BYTE(((TT /   10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[12] := INT_TO_BYTE(((TT /    1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[13] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[14] := INT_TO_BYTE(((H / 10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[15] := INT_TO_BYTE(((H /  1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[16] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[17] := INT_TO_BYTE(((M / 10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[18] := INT_TO_BYTE(((M /  1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[19] := CHAR_TO_BYTE(',') ;
                Write_Data.Parameter_Data.Inhalt[20] := INT_TO_BYTE(((S / 10) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[21] := INT_TO_BYTE(((S /  1) MOD 10) + 48) ;
                Write_Data.Parameter_Data.Inhalt[22] := 0 ;
                
                Write_Data.Parameter_Data.Size := 22 ;
                FOR i := 0 TO 7 BY 1 DO
                   PAD[i*4 + _PerA_Req_Data] := at_Write_Data.Parameter_Data[i] ; 
                END_FOR ;
                AblaufPrg.setDateTime := 2 ;
            2 : // Steuerbit für Daten-Übernahme an Laser setzen
                Write_Data.Generel_Request.Command_Req := true ;
                AblaufPrg.setDateTime := 3 ;
            3 : // Feedback abfragen und auswerten - Daten-Übernahme quittieren
                IF Read_Data.CompletionStatus.Command_Req_Complete THEN 
                   Write_Data.Generel_Request.Command_Req := false ; 
                   at_Read_Data.Operate_Parameters[1] := PED[_PerE_Operate_Parameter] ;
                   Write_Data.CompletionClr_Request.Command_Req_Complete := true ;
                   AblaufPrg.setDateTime := 4 ;
                END_IF ; 
            4 : // Feedback abfragen
                IF NOT Read_Data.CompletionStatus.Command_Req_Complete THEN 
                   Write_Data.CompletionClr_Request.Command_Req_Complete := false ;
                   erster_Start.setDateTime := false ;
                   AblaufPrg.setDateTime := enum_SK_beendet ;
                END_IF ; 
            enum_SK_beendet :
                IF NOT _CMD_Set_DateTime THEN 
                   AblaufPrg.aktiv := enum_Prg_none ;
                   AblaufPrg.setDateTime := enum_SK_bereit ;
                END_IF ;
        END_CASE ;
    END_IF ; 
    _DateTime_geladen := (AblaufPrg.setDateTime >= 4) ;
    *)
    //    Beschriftung durchführen  
    IF (AblaufPrg.aktiv = enum_Prg_none) OR (AblaufPrg.aktiv = enum_Prg_Beschriftung) THEN  // Verriegelung gegen andere Abläufe
        
       CASE AblaufPRG.Beschriftung OF
          enum_SK_bereit :
              IF  _CMD_Laser_beschriften 
              AND LaserStatus.Layout_geladen AND LaserStatus.Beschriftung_geladen 
              AND LaserStatus.Laser_Ein AND LaserStatus.Emission THEN 
                 AblaufPrg.aktiv := enum_Prg_Beschriftung ;
                 AblaufPRG.Beschriftung := 1 ;
              END_IF ;
          1 :
              LaserStatus.Markieren_aktiv := true ;
              IF Read_Data.MachineStatus.Print_Busy OR NOT  _CMD_Laser_beschriften THEN   
                 AblaufPRG.Beschriftung := 2 ;
              END_IF ;
          2 :
              IF Read_Data.CompletionStatus.Print_Complete OR NOT Read_Data.MachineStatus.Print_Busy THEN 
                 LaserStatus.Markieren_aktiv := false ;
                 AblaufPRG.Beschriftung := enum_SK_beendet ;
              END_IF ;
          enum_SK_beendet :
              IF NOT  _CMD_Laser_beschriften THEN 
                 AblaufPRG.Beschriftung := enum_SK_bereit ;
                 AblaufPrg.aktiv := enum_Prg_none ;
              END_IF ;
       END_CASE ;
    END_IF ;
    LaserStatus.Markieren_aktiv := (AblaufPRG.Beschriftung = 1) OR (AblaufPRG.Beschriftung = 2) ;
    LaserStatus.Markieren_fertig := (AblaufPRG.Beschriftung = 3) ;
    Write_Data.Generel_Request.Print := LaserStatus.Markieren_aktiv ;
    _Markieren_laeuft := LaserStatus.Markieren_aktiv ;
    _Markieren_fertig := LaserStatus.Markieren_fertig ;
     
    //    Status-Meldungen ausgeben  
     
    LaserStatus.aktivieren := NOT Read_Data.MachineStatus.Ready AND Read_Data.MachineStatus.Start_Up ;
    LaserStatus.Laser_Ein  := Read_Data.MachineStatus.Ready AND Read_Data.MachineStatus.Start_Up ;
    LaserStatus.Emission   := LaserStatus.Laser_Ein AND Read_Data.MachineStatus.Laser_Emit ;
    _Einschalten_laeuft := LaserStatus.aktivieren ;
    _Laser_eingeschaltet := LaserStatus.Laser_Ein ;
    _Laser_Emission_OK   := LaserStatus.Emission ;
    _Laser_Fehler        := LaserStatus.Fehler ;
       
    Write_Data.Generel_Request.Error_Clear := _CMD_Quit ; // or LaserStatus.aktivieren ; 
      
    Write_Data.CompletionClr_Request.Error_Clear_Complete := Read_Data.CompletionStatus.Error_Clear_Complete ;
    Write_Data.CompletionClr_Request.Edit_Complete        := Read_Data.CompletionStatus.Edit_Complete ;
       
    Impuls_Timer (IN := (AblaufPrg.setLayout = 4) OR (AblaufPrg.setBeschriftung = 3) OR (AblaufPrg.setDateTime = 4) OR Write_Data.Generel_Request.Error_Clear
                 ,PT := t#500ms
                 ) ;    
    
    //    Perepherie-Daten schreiben  
    PAD[_PerA_Generel_Req +0]       := at_Write_Data.Generel_Request[1] ;
    PAD[_PerA_Generel_Req +4]       := at_Write_Data.Generel_Request[2] ;
    PAD[_PerA_CompletionClr_Req +0] := at_Write_Data.CompletionClr_Request[1] ;
    PAD[_PerA_CompletionClr_Req +4] := at_Write_Data.CompletionClr_Request[2] ;
    END_FUNCTION_BLOCK

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 02.03.2011, 10:30
  2. Keyence CV-S035M Kamera steuern
    Von RMA im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 19.08.2010, 17:05
  3. Hat jemand ein Refarat über den Profbus DP
    Von HO_FW im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 22.10.2006, 13:04
  4. Antworten: 12
    Letzter Beitrag: 22.06.2006, 09:38
  5. Antworten: 2
    Letzter Beitrag: 19.04.2006, 14:26

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •