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

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

Thema: FB für Stellantrieb über DP

  1. #1
    Registriert seit
    03.01.2005
    Beiträge
    160
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo, habe einen FB für einen Stellantrieb geschrieben. Dieser wird über Profibus angesteuert. Könnt ihr mir sagen, ob dieser baustein ok ist oder ob man sowas anders realisiert.
    danke im voraus
    Angehängte Dateien Angehängte Dateien
    Zitieren Zitieren FB für Stellantrieb über DP  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.797
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    sieht auf den ersten Blick ganz nett aus.
    Ich hätte das mit den Lokal-Bits anders gelösst. Ohne so richtig in der Materie zu sein weiss man doch nicht so ohne weiteres was L#2.2 (z.B.) ist ...
    Funktioniert der Baustein zu deiner Zufriedenheit ?

  3. #3
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.232
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    ich finde ihn gelinde gesagt - SCHEISSE!
    (sorry, ist halt so...)


    also wenn du so einen fb machst, dann willst du ihn doch ggf. mehrmals verwenden wenn du mehrer klappen hast? eben jedesmal ein anderer idb...

    1. die direkten pew zugriffe fliegen raus
    entweder du legst sie aussen auf parameter, oder noch schöner - du gibst dem baustein als parameter nur die startadresse und er rechnet intern über pointer die zugriffe.


    2. zugriff auf lokaldaten ohne symbole ist murks und unübersichtlich.
    lege eine struktur an!


    mal ein paar ansätze:

    IN parameter des FB "LADDR" (int)

    Temp Variable "LADDR_tmp" (word)
    Temp Variable "retval" (int)


    STAT Variable "Eingangsdaten" (struct)
    in die struct packst du bools und bytes und was weiss ich so wie das zeug eben bereitliegt...


    Netzwerk1

    l LADDR
    t LADDR_tmp // wandeln in WORD

    call sfc14
    adrr: LADDR_tmp
    retval: retval
    record:Eingangssignale // zeiger auf deine struktur


    Netzwerk2

    nur beispiel für zugriff auf struct bzw. symbolisch

    U Eingangssignale.Stoerung
    =...




    habe nur kurz überflogen, aber wenn der baustein den du da aufrufst ein FB ist, dann binde ihn als Multiinstanz ein, damit der aufrufende FB wiederverwendet werden kann...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  4. #4
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.268
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Zitat Zitat von Markus Beitrag anzeigen
    1. die direkten pew zugriffe fliegen raus
    entweder du legst sie aussen auf parameter, oder noch schöner - du gibst dem baustein als parameter nur die startadresse und er rechnet intern über pointer die zugriffe.
    @Markus
    Ich hab mir die Quelle angesehen, wo sind die direkten PEW-Zugriffe? Er hat die doch schon als IN-Parameter drin.
    Allerdings würde ich deinen Vorschlag mit der Startadresse auch bevorzugen.

    Zitat Zitat von Markus Beitrag anzeigen
    2. zugriff auf lokaldaten ohne symbole ist murks und unübersichtlich.
    lege eine struktur an!
    Ja, da stimme ich absolut zu, wäre in diesem Falle und bei diesem Umfang absolut angebracht.

    statt:
    L #PEW_0;
    T #PEW_0_Int;

    würde ich für PEW_0_Int die Daten aufschlüsseln als einzelne Temp-Var(wenn z.Bsp. alles Bool ist)
    und dann lieber einmal am Anfang

    L #PEW_0
    T LW 2

    und später im Baustein auf die Angelegten Bool-Variablen-Symbole zugreifen,
    statt L #L3.3

    L #Wahlschalter_Fern
    Geändert von Ralle (07.07.2007 um 22:20 Uhr)
    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

  5. #5
    ottopaul ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.01.2005
    Beiträge
    160
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo, danke erstmal für die kritik..
    kann mir jemand die quelle eleganter schreiben?
    oder ausführlicher erklären?
    danke im Voraus
    Zitieren Zitieren FB für Stellantrieb  

  6. #6
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.812
    Danke
    1.232
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    @Markus
    Ich hab mir die Quelle angesehen, wo sind die direkten PEW-Zugriffe? Er hat die doch schon als IN-Parameter drin.
    ok habe nur kurz über das pdf geflogen, und da sah es so aus als ob...


    L #PEW_0
    T LW 2
    das ist genauso scheisse, unsymbolische zugriffe sind böse...

    am saubersten alles auf einmal mit sfc14/15

    und wenn so, dann wenigstens so:

    l p##eingangsdaten
    lar1

    l #pew_0
    t diw [ar1,p#0.0]

    l pew_1
    t diw [ar1,p#2.0]
    ...
    "Es ist weit besser, große Dinge zu wagen, ruhmreiche Triumphe zu erringen, auch wenn es manchmal bedeutet, Niederlagen einzustecken, als sich zu den Krämerseelen zu gesellen, die weder große Freude noch großen Schmerz empfinden, weil sie im grauen Zwielicht leben, das weder Sieg noch Niederlage kennt." Theodore Roosevelt - President of the United States (1901-1909)

  7. #7
    ottopaul ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.01.2005
    Beiträge
    160
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    hallo, danke füe die anregungen.
    aber wie mache ich es genau mit dem SFC14?
    und wie lege ich dann die struktur an? als temp, als Stat ???

    kann mir jemand die vorgehensweise genau sagen, damit ich dann im fb auch geziehlt die einzelnen bits verarbeiten kann.

    danke im voraus.
    Zitieren Zitieren FB Stellantrieb  

  8. #8
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.268
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard

    Zitat Zitat von Markus Beitrag anzeigen
    das ist genauso scheisse, unsymbolische zugriffe sind böse...

    am saubersten alles auf einmal mit sfc14/15

    und wenn so, dann wenigstens so:

    l p##eingangsdaten
    lar1

    l #pew_0
    t diw [ar1,p#0.0]

    l pew_1
    t diw [ar1,p#2.0]
    ...
    Ja das stimmt, das ist schöner und übersteht auch Änderungen an den Paramtern!

    Ich habs mal schnell probiert:

    Code:
    FUNCTION FC 32 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_INPUT
      Wort_IN : WORD ;    
    END_VAR
    VAR_OUTPUT
      Out_1 : BOOL ;    
      Out_2 : BOOL ;    
      Out_3 : BOOL ;    
    END_VAR
    VAR_TEMP
      DWord_Temp : DWORD ;    
      Bool_1 : BOOL ;    
      Bool_2 : BOOL ;    
      Bool_3 : BOOL ;    
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          L     P##Bool_1; 
          LAR1  ; 
    
          L     #Wort_IN; 
          T     LW [AR1,P#0.0]; 
    
          U     #Bool_1; 
          =     #Out_1; 
          U     #Bool_2; 
          =     #Out_2; 
          U     #Bool_3; 
          =     #Out_3; 
    END_FUNCTION
    Da ist das etwas anschaulicher .

    Man muß halt die erste Bool-Var zur Adressbestimmung hernehmen, mit ordentlichen Kommentaren wäre das auch für andere nachvollziehbar. Kann man sicher mal irgenswo brauchen, hier würde ich auch SFC14/15 vorziehen.
    Geändert von Ralle (08.07.2007 um 20:04 Uhr)
    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

  9. #9
    ottopaul ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.01.2005
    Beiträge
    160
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja, danke erstmal.....
    aber wie sieht der der ansatz mit dem SFC14/15 genau aus?
    Könntet ihr mir dazu auch einen Ansatz nennen?
    danke, danke im voraus
    Zitieren Zitieren FB Stellantrieb  

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.268
    Danke
    537
    Erhielt 2.708 Danke für 1.957 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
           CALL  "DPRD_DAT"  //SFC 14
           LADDR  :=#Adr_IN
           RET_VAL:=#Ret_Val_Temp
           RECORD :=#Rec
    Hier mal ein kleines Beispiel.
    Adr_IN: Word
    RET_VAL_Temp: Int
    Rec: struct

    Rec legst du im FB in Stat als Struct an, genau mit den Variablen, die du vom Slave bekommst. Der Struct-Name ist dann Rec, auf die Variablen kannst du dann z.Bsp. so zugreifen:

    U #Rec.Bool_1
    Geändert von Ralle (08.07.2007 um 20:46 Uhr)
    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

Ähnliche Themen

  1. Stellantrieb für Vordruckregulierung
    Von PP_Programmierer im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 21.06.2008, 01:21
  2. FB Stellantrieb PAW Schreiben
    Von ottopaul im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 10.07.2007, 14:21
  3. FB Stellantrieb Fehler
    Von ottopaul im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.07.2007, 12:11
  4. Gleichstrom-Stellantrieb über S7
    Von Nordkurve im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 02.03.2007, 10:18
  5. Temperaturregelung mit Stellantrieb
    Von apachler im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 04.02.2006, 19:37

Lesezeichen

Berechtigungen

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