# FU Beispielprogramm



## sps_mitte (5 Januar 2012)

Hiii,
wer hat schonmal mit dem G120C Profibus gearbeitet und kann mir hierzu ein S7 Beispielprogramm zukommen lassen? Danke


----------



## Schnick und Schnack (5 Januar 2012)

Hi

Die Sinamics-Dinger sind soweit ich mich erinnern kann von der Ansteuerung her gleich zu handhaben wie ein MM4X0
Ich hatte mal nen *S*120 und der war gleich.

Daher gehe ich mal davon aus, dass es mit nem G120 auch so is.


Gruss


----------



## miami (10 Januar 2012)

Etwas mehr Info wäre gut:
- STEP 7 V5.x oder TIA Portal
- S7-300/400, S7-1200, WinAC

Was soll übetragen werden: nur Prozessdaten oder auch Parameterzugriff?


----------



## sps_mitte (19 Januar 2012)

Hallo miami,
Step7 V5.4 verwende ich. CPU ist ne S7-300er. 
Es sollen nur Prozessdaten übertragen werden. Also Sollwert und Istwert


----------



## Superkater (20 Januar 2012)

Hallo,

es gibt ein Beispiel mit dem Telegramm 350 auf der Support Seite. Das müsste der G120C eigentlich auch können. Aber bitte nicht steinigen, wenn er es nicht kann. 

http://support.automation.siemens.c...d=34677186&lang=de&cspltfrm=0&cssw=0&csbinh=8


----------



## ukofumo (23 Januar 2012)

Hallo

Das Siemens Beispiel ist nicht wirklich der Hit....
Für einfache U/F Steuerung gehts auch einfacher:

Ich hab dafür im FU & in der HW-Config jeweils Telegramm 352 ausgewählt.... (PEW sowie PAW beginnen jeweils bei 900)
mit SFC14/SFC15 werden die Daten dann in/von einem DB-Baustein gelesen/geschrieben


Lesen der Daten:

```
// Zyklisches Lesen der Eingangsdaten von Antrieb 4 (DB114).
// LADDER HEX-Umwandlung ---> PEW900 => W#16#384
// Der Aufbau von DB114 entspricht dem Siemens-Telegramm 352
      CALL  SFC   14
       LADDR  :=W#16#384
       RET_VAL:=DB114.DBW24
       RECORD :=P#DB114.DBX12.0 BYTE 12
```


Schreiben der Daten:

```
// Zyklisches Schreiben der Ausgangsdaten von Antrieb 4 (DB114).
// LADDER HEX-Umwandlung ---> PAW900 => W#16#384
// Der Aufbau von DB114 entspricht dem Siemens-Telegramm 352
      CALL  SFC   15
       LADDR  :=W#16#384
       RECORD :=P#DB114.DBX0.0 BYTE 12
       RET_VAL:=DB114.DBW26
```


Der DB Baustein schaut dann so aus:

```
DATA_BLOCK "DB114"
TITLE =Datenbaustein für Sinamics S120
//basierend auf Siemens Telegramm 352 (PZD6/6)
AUTHOR :
FAMILY : FU_Motor
VERSION : 1.0


  STRUCT     
   WR_PZD_SPEED : STRUCT     
    STW1 : STRUCT     
     STW1_008 : BOOL ;    // reserve
     STW1_009 : BOOL ;    // reserve
     STW1_010 : BOOL  := TRUE;    // p854.0  Führung gefordert
     STW1_011 : BOOL ;    // p1113.0 Sollwert Invertierung
     STW1_012 : BOOL ;    // reserve
     STW1_013 : BOOL ;    // p1035.0 Motorpotentiometer Sollwert höher
     STW1_014 : BOOL ;    // p1036.0 Motorpotentiometer Sollwert nidriger
     STW1_015 : BOOL ;    // reserve
     STW1_000 : BOOL ;    // p840.0  Aus1
     STW1_001 : BOOL  := TRUE;    // p844.0  Aus2
     STW1_002 : BOOL  := TRUE;    // p848.0  Aus3
     STW1_003 : BOOL  := TRUE;    // p852.0  Freigabe Wechselrichter
     STW1_004 : BOOL ;    // p1140   Freigabe Hochlaufgeber
     STW1_005 : BOOL ;    // p1141   Hochlaufgeber starten
     STW1_006 : BOOL ;    // p1142   Freigabe Drehzahlsollwert
     STW1_007 : BOOL ;    // p2103.0 Störspeicher Rücksetzen
    END_STRUCT ;    
    Drehzahlsollwert : STRUCT     
     NSOLL_A : INT ;    // p1070 Hauptsollwert
    END_STRUCT ;    
    Reserve : STRUCT     //Reserve/Benutzerdefiniert
     WR_PZD3_res : WORD ;    // reserve
     WR_PZD4_res : WORD ;    // reserve
     WR_PZD5_res : WORD ;    // reserve
     WR_PZD6_res : WORD ;    // reserve
    END_STRUCT ;    
   END_STRUCT ;    
   RD_PZD_SPEED : STRUCT     //  
    ZSW1 : STRUCT     
     ZSW1_008 : BOOL ;    // r2197.7  Drehzahl Soll-Ist-Abweichung OK
     ZSW1_009 : BOOL ;    // r899.9   Führung gefordert
     ZSW1_010 : BOOL ;    // r2199.1  Vergleichswert_erreicht
     ZSW1_011 : BOOL ;    // r1407.7  Momentgrenze erreicht
     ZSW1_012 : BOOL ;    // r899.12  Haltebremse offen
     ZSW1_013 : BOOL ;    // r2135.14 Warnung Übertemperatur
     ZSW1_014 : BOOL ;    // r2197.3  Antrieb  (Drehzahl >=0)
     ZSW1_015 : BOOL ;    // r2135.15 Warnung th.Überlast Leistungsteil
     ZSW1_000 : BOOL ;    // r899.0   Einschaltbereit
     ZSW1_001 : BOOL ;    // r899.1   Betriebsbereit
     ZSW1_002 : BOOL ;    // r899.2   Betrieb freigegeben
     ZSW1_003 : BOOL ;    // r2139.3  Störung wirksam
     ZSW1_004 : BOOL ;    // r899.4   kein Austrudeln
     ZSW1_005 : BOOL ;    // r899.5   kein Schnellhalt
     ZSW1_006 : BOOL ;    // r899.6   Einschaltsperre aktiv
     ZSW1_007 : BOOL ;    // r2139.7  Warnung wirksam
    END_STRUCT ;    
    Drehzahlistwert : STRUCT     
     NIST_A_GLATT : INT ;    // r63[1]  Drehzahlistwert Geglättet
    END_STRUCT ;    
    Datas : STRUCT     
     IAIST_GLATT : INT ;    // r68[1] Stromistwert Geglättet
     MIST_GLATT : INT ;    // r80[1] Drehmomentistwert Geglättet
    END_STRUCT ;    
    Error : STRUCT     
     Warn_Code : WORD ;    // r2132   Aktueller Warnstörcode
     Fehler_Code : WORD ;    // r2131   Aktueller Fehlerstörcode
    END_STRUCT ;    
   END_STRUCT ;    
   RetVal : STRUCT     // <not used>
    RetVal_RD : INT ;    // SFC 14 - Lesefehler
    RetVal_WR : INT ;    // SFC 15 - Schreibfehler
   END_STRUCT ;    
  END_STRUCT ;
```

Gruß ukofumo


----------



## miami (24 Januar 2012)

Ich habe das meist ganz einfach gelöst (Ich gehe im Beispiel mal davon aus dass der Umrichter die Adressen ab 512 hat:


```
L #Steuerwort   T PAW 512
L #Sollwert
T PAW 514


L PEW 512
T #Statuswort
L PEW 514
T #Istwert
```

Damit ist zwar keine Konsistenz zw. Steuerwort und Sollwert bzw Statuswort und Istwert gegeben, aber in den allermeisten Fällen ist das auch nicht notwendig.


----------

