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

Ergebnis 1 bis 10 von 10

Thema: Auslesen Achsenposition mit FB5

  1. #1
    Registriert seit
    11.09.2015
    Ort
    Bremen
    Beiträge
    13
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Tag,

    ich arbeite mit S7, Steuerung 840D und versuche, die Achsenpositionen mit Hilfe von FB5 einzulesen. Soweit ich weiß, sind die aktuelle Achsenpositionen im Array $AA_IM erhalten. Deswegen habe ich einen DB mit diesem Namen:
    Code:
    DATA_BLOCK DB 1659
      STRUCT
      Varname : STRING[32] := '$AA_IM';        //actToolBasePos???
      Vartype :
      STRUCT
      SYNTAX_ID :         BYTE;
      BEREICH_U_EINHEIT:  BYTE;
      SPALTE :            WORD;
      ZEILE :             WORD;
      BAUSTEINTYP :       BYTE;
      ZEILENANZAHL :      BYTE;
      TYP :               BYTE;
      LAENGE :            BYTE;
      END_STRUCT;
    END_STRUCT;
    
    BEGIN
    END_DATA_BLOCK
    
    DATA_BLOCK DB 1759
    FB 5
    BEGIN
    END_DATA_BLOCK
    


    Danach rufe ich FB5 wie folgt auf:
    Code:
      CALL FB 5, DB 1759(
           Req := M659.0,
           Addr := DB1659.Varname,
           Area := B#16#0,
           Unit := B#16#1,
           Index1 := 1,
           Index2 := 0,
           CnvtToken := TRUE,
           VarToken := DB1659.Vartype,
           Error := M659.2,
           Done := M659.1,
           State := MW700,
           RD := P#DB1501.DBX12.0 BYTE 4);
    Hiermit müssen die Daten von Länge BYTE 4 in P#DB1501.DBX12.0 eingelesen werden. Die Daten bekomme ich nicht.

    Wie kann ich die Richtichkeit von Parametern Area, Unit und Index1 überprüfen? In der Doku steht es:

    Area - Bereichsadresse: 0: NCK-Variable, 2: Kanal-Variable

    Unit - Bereich NCK: Unit:= 1, Bereich Kanal: Kanalnr.
    Index1 - Feldindex 1 der Variable. Der Wert der Variable ist 0, wenn der Feldindex nicht benutzt wird.

    Andere Idee ist, "actToolBasePos" anstatt "$AA_IM" zu benutzen.

    Ich bitte um die Hilfe und Erklärung. Es ist meine erste Erfahrung mit S7 und 840D. Ich kann sehr einfache Sachen übersehen oder falsch verstehen.

    Danke.
    Zitieren Zitieren Gelöst: Auslesen Achsenposition mit FB5  

  2. "Ohne zu es getestet zu haben ....

    Code:
    DATA_BLOCK DB  122
    VERSION : 0.0
    
    STRUCT
    
     C1_SEMA_measPos21_6:
       STRUCT
       SYNTAX_ID : BYTE := B#16#82;
       bereich_u_einheit : BYTE := B#16#41;
       spalte : WORD := W#16#6;
       zeile : WORD := W#16#1;                //Ist Achsnummer bsp X=1,Y=2 ...
       bausteintyp : BYTE := B#16#71;
       ZEILENANZAHL : BYTE := B#16#1;
       typ : BYTE := B#16#F;
       laenge : BYTE := B#16#8;
       END_STRUCT ;
    
     END_STRUCT ;
    
    BEGIN
    END_DATA_BLOCK
    
    
    FUNCTION_BLOCK FB121
    
    VAR
          FB2_Req :                BOOL;
          FB2_Error :              BOOL;
          FB2_NDR :                BOOL;
          FB2_STATE :              WORD;
          FB2_meas_pos_1 :         REAL;
          FB2_POS :                "GET";    
    END_VAR
    
    BEGIN
    NETWORK
    
    TITLE = Ist-Pos. lesen mit FB2
    
    CALL  #FB2_POS(
           Req    :=#FB2_Req,        //start lesen
           NumVar :=1,
           Addr1  :=DB122.C1_SEMA_measPos21_6,             //P#DB120.DBX0.0 :BYTE 10
           Error  :=#FB2_Error,
           NDR    :=#FB2_NDR,
           State  :=#FB2_STATE,
           RD1    :=#FB2_meas_pos_1        //Istwert ...
           );
    
    END_FUNCTION_BLOCK
    
    //Erzuegung InstanzDB FB121
    Data_block DB121
    
          FB121;
    BEGIN
    End_data_block
    "


  3. #2
    Registriert seit
    17.03.2010
    Ort
    Bonn
    Beiträge
    235
    Danke
    2
    Erhielt 52 Danke für 46 Beiträge

    Standard

    Du musst den FB2 und NCVAR Selector für das lesen der Achsposition nutzen


    Handbuch
    https://support.industry.siemens.com...21387&lc=de-WW

  4. Folgender Benutzer sagt Danke zu Peter Gedöns für den nützlichen Beitrag:

    vmolchanov (28.06.2016)

  5. #3
    vmolchanov ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.09.2015
    Ort
    Bremen
    Beiträge
    13
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Danke für den Hinweis. Ich bitte um einen Link zu NC-Var-Selector Manual (mit der Suchmaschine klappt es nicht).

  6. #4
    Registriert seit
    03.04.2008
    Beiträge
    6.118
    Danke
    235
    Erhielt 805 Danke für 681 Beiträge

    Standard

    Bei deinem freundlichen Big$ Mitarbeiter kannst du die NC Toolbox anfragen und in der ist auch der NCVAR Selctor enthalten.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  7. #5
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.282
    Danke
    15
    Erhielt 126 Danke für 113 Beiträge

    Standard

    Link zum NC-Var Selector bzw. zu Listenhandbuch Systemvariablen gibts bei Siemens in der DocOnWeb auf der Webpage.

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein

  8. #6
    Registriert seit
    10.05.2005
    Beiträge
    1.959
    Danke
    217
    Erhielt 217 Danke für 199 Beiträge

    Standard

    Zitat Zitat von Boxy Beitrag anzeigen
    Link zum NC-Var Selector bzw. zu Listenhandbuch Systemvariablen gibts bei Siemens in der DocOnWeb auf der Webpage.
    DocOnWeb ist nicht mehr

    Ersatz:
    https://support.industry.siemens.com...13204&lc=de-DE
    Karl

  9. #7
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.282
    Danke
    15
    Erhielt 126 Danke für 113 Beiträge

    Standard

    Ohne zu es getestet zu haben ....

    Code:
    DATA_BLOCK DB  122
    VERSION : 0.0
    
    STRUCT
    
     C1_SEMA_measPos21_6:
       STRUCT
       SYNTAX_ID : BYTE := B#16#82;
       bereich_u_einheit : BYTE := B#16#41;
       spalte : WORD := W#16#6;
       zeile : WORD := W#16#1;                //Ist Achsnummer bsp X=1,Y=2 ...
       bausteintyp : BYTE := B#16#71;
       ZEILENANZAHL : BYTE := B#16#1;
       typ : BYTE := B#16#F;
       laenge : BYTE := B#16#8;
       END_STRUCT ;
    
     END_STRUCT ;
    
    BEGIN
    END_DATA_BLOCK
    
    
    FUNCTION_BLOCK FB121
    
    VAR
          FB2_Req :                BOOL;
          FB2_Error :              BOOL;
          FB2_NDR :                BOOL;
          FB2_STATE :              WORD;
          FB2_meas_pos_1 :         REAL;
          FB2_POS :                "GET";    
    END_VAR
    
    BEGIN
    NETWORK
    
    TITLE = Ist-Pos. lesen mit FB2
    
    CALL  #FB2_POS(
           Req    :=#FB2_Req,        //start lesen
           NumVar :=1,
           Addr1  :=DB122.C1_SEMA_measPos21_6,             //P#DB120.DBX0.0 :BYTE 10
           Error  :=#FB2_Error,
           NDR    :=#FB2_NDR,
           State  :=#FB2_STATE,
           RD1    :=#FB2_meas_pos_1        //Istwert ...
           );
    
    END_FUNCTION_BLOCK
    
    //Erzuegung InstanzDB FB121
    Data_block DB121
    
          FB121;
    BEGIN
    End_data_block
    Geändert von Boxy (30.06.2016 um 10:39 Uhr) Grund: Funktionsfähige Version für 1'ste Kanalachse (CH1) eingefügt

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein
    Zitieren Zitieren Istwert 1'ste Achse  

  10. Folgender Benutzer sagt Danke zu Boxy für den nützlichen Beitrag:

    vmolchanov (09.09.2016)

  11. #8
    Registriert seit
    03.04.2008
    Beiträge
    6.118
    Danke
    235
    Erhielt 805 Danke für 681 Beiträge

    Standard

    Also wir schauen immer, dass wir das richtige GP verwenden.
    Wir wissen noch? nicht, welches GP vorhanden ist und daher kann man auch den Aufruf des FB2 nicht pauschal verwenden.
    Und der freundliche Big$ Betreuer hilft bei allen Versionen.


    bike
    "Any fool can write code that a computer can understand.
    Good programmers write code that humans can understand."
    --Martin Fowler

  12. #9
    Registriert seit
    12.04.2005
    Ort
    Black Forest
    Beiträge
    1.282
    Danke
    15
    Erhielt 126 Danke für 113 Beiträge

    Standard

    Zitat Zitat von bike Beitrag anzeigen
    Also wir schauen immer, dass wir das richtige GP verwenden.
    Stimmt schon da sollte er schon schauen, aber hier hat sich eigentlich nix in den Jahren verändert (wenn dann kommen meist neue Variablen hinzu)...
    Der FB2 ist schon immer so, einzigst was ja ist, ist ja das man für die PI Dienste den neuen Baustein nehmen soll.
    Ich gehe aber hier einmal davon aus, das wenn er ne 840D programmiert er diese schon hat (Grundvorraussetzung) bzw. das Projekt für diese Maschine/Steuerung (dann ist es ja dort enthalten).

    Aber er schrieb ja auch nicht, ob für Power oder Solution Line oder sogar schon für Evolution.

    „Eine Frage raubt mir den Verstand bin ich verrückt oder sind es die Anderen ?“

    Albert Einstein

  13. #10
    vmolchanov ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    11.09.2015
    Ort
    Bremen
    Beiträge
    13
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke Boxy. Es hat geklappt, die achsposition anhand deiner Lösung vom 29.06.2016 in Maschinenkoordinaten einzulesen.

Ähnliche Themen

  1. S7 840D Achsenposition $AA_IM mit FB5 einlesen
    Von vmolchanov im Forum Antriebstechnik
    Antworten: 1
    Letzter Beitrag: 09.09.2016, 15:39
  2. Antworten: 7
    Letzter Beitrag: 12.06.2015, 16:57
  3. Antworten: 2
    Letzter Beitrag: 03.02.2012, 21:30
  4. FB1348 wird von FB5 aufgerufen
    Von Springbock im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 13.10.2010, 08:20
  5. SPS mit c auslesen
    Von Speedy3311 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 24.08.2005, 15:30

Stichworte

Lesezeichen

Berechtigungen

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