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

Ergebnis 1 bis 3 von 3

Thema: GUDs lesen und schreiben 840D

  1. #1
    Registriert seit
    25.05.2008
    Beiträge
    45
    Danke
    9
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen,

    ich bin gerade dran den Datenaustausch zwischen einer 840D, NC <---> PLC zu programmieren. Hier speziell die GUDs.
    Leider is dies ziemlich schwierig und die Siemens Hotline hat das wohl
    auch net im Griff. Ich hoffe hier im Board sind echte Profis die mir weiterhelfen können. Ich habe folgendes Problem:
    Die Datenübertragung von der NC zur PLC, sprich die GUDs lesen funktioniert so weit mal. Nur andersrum, Guds schreiben funzt net so richtig. Ich kann zwar die einzelnen GUDs z.b. MGUD oder GUD4 einzeln beschreiben, aber sobald ich mehrere GUDs beschreiben möchte gehts nimmer. Ich stell mal den Lese FB und den schreib FB hier rein. Wäre echt Klasse wenn jemand ne Idee hat.

    Mit diesem FB schreibe ich den MGUD. Wenn ich nun dieselb für den UGUD anlege funktioniert das beschreiben der GUDs nicht mehr.

    [html] UN #Freigabe
    R #DoneSchr
    R #StartSchr
    SPB M001
    UN "M 0.7"
    UN #StartSchr
    S #StartSchr
    S #SchreibAktiv
    M001: CALL "PUT" , DB47
    Req :=#StartSchr
    NumVar :=8
    Addr1 :=DB52.MGUD_INT
    Unit1 :=
    Column1:=W#16#B
    Line1 :=
    Addr2 :=DB52.MGUD_INT
    Unit2 :=
    Column2:=W#16#C
    Line2 :=
    Addr3 :=DB52.MGUD_INT
    Unit3 :=
    Column3:=W#16#D
    Line3 :=
    Addr4 :=DB52.MGUD_INT
    Unit4 :=
    Column4:=W#16#E
    Line4 :=
    Addr5 :=DB52.MGUD_INT
    Unit5 :=
    Column5:=W#16#19
    Line5 :=
    Addr6 :=DB52.MGUD_INT
    Unit6 :=
    Column6:=W#16#1A
    Line6 :=
    Addr7 :=DB52.MGUD_INT
    Unit7 :=
    Column7:=W#16#1B
    Line7 :=
    Addr8 :=DB52.MGUD_INT
    Unit8 :=
    Column8:=W#16#1C
    Line8 :=
    Error :=#Error
    Done :=#DoneSchr
    State :=#StateSchr
    SD1 :=P#DB200.DBX 100.0 DWORD 1
    SD2 :=P#DB200.DBX 100.0 DWORD 1
    SD3 :=P#DB200.DBX 100.0 DWORD 1
    SD4 :=P#DB200.DBX 100.0 DWORD 1
    SD5 :=P#DB200.DBX 100.0 DWORD 1
    SD6 :=P#DB200.DBX 100.0 DWORD 1
    SD7 :=P#DB200.DBX 100.0 DWORD 1
    SD8 :=P#DB200.DBX 100.0 DWORD 1
    U #DoneSchr
    O #Error
    R #StartSchr
    R #SchreibAktiv

    [/html]

    Mit diesem FB lese ich die GUDs, dies funktioniert auch einwandfrei.

    [html] UN #Freigabe
    SPB M010
    UN #DoneLesen1
    UN #DoneLesen2
    UN #Vorb1
    S #LesenAktiv
    U #Vorb1
    UN #Gelesen1
    S #StartLesen1
    U #Vorb2
    UN #Gelesen2
    S #StartLesen2
    U #Vorb3
    UN #Gelesen3
    S #StartLesen3
    U #Vorb4
    UN #Gelesen4
    S #StartLesen4
    U #ENDE
    M010: R #Gelesen1
    R #Gelesen2
    R #Gelesen3
    R #Gelesen4
    R #StartLesen1
    R #StartLesen2
    R #StartLesen3
    R #StartLesen4
    R #Vorb1
    R #Vorb2
    R #Vorb3
    R #Vorb4
    R #ENDE
    R #LesenAktiv
    BEB
    UN #ENDE
    S #Vorb1
    U #Gelesen1
    S #Vorb2
    U #Gelesen2
    S #Vorb3
    U #Gelesen3
    S #ENDE

    UN #Vorb1
    O #Gelesen1
    SPB M002
    CALL "GET" , DB46
    Req :=#StartLesen1
    NumVar :=8
    Addr1 :="S-Gud".SGUD_REAL
    Unit1 :=
    Column1:=W#16#4
    Line1 :=
    Addr2 :="S-Gud".SGUD_REAL
    Unit2 :=
    Column2:=W#16#5
    Line2 :=
    Addr3 :="S-Gud".SGUD_REAL
    Unit3 :=
    Column3:=W#16#6
    Line3 :=
    Addr4 :="S-Gud".SGUD_REAL
    Unit4 :=
    Column4:=W#16#7
    Line4 :=
    Addr5 :="S-Gud".SGUD_REAL
    Unit5 :=
    Column5:=W#16#8
    Line5 :=
    Addr6 :="S-Gud".SGUD_REAL
    Unit6 :=
    Column6:=W#16#C
    Line6 :=
    Addr7 :="S-Gud".SGUD_REAL
    Unit7 :=
    Column7:=W#16#D
    Line7 :=
    Addr8 :="S-Gud".SGUD_REAL
    Unit8 :=
    Column8:=W#16#E
    Line8 :=
    Error :=#Error1
    NDR :=#DoneLesen1
    State :=#StateLes
    RD1 :=P#DB200.DBX 200.0 REAL 1
    RD2 :=P#DB200.DBX 204.0 REAL 1
    RD3 :=P#DB200.DBX 208.0 REAL 1
    RD4 :=P#DB200.DBX 212.0 REAL 1
    RD5 :=P#DB200.DBX 216.0 REAL 1
    RD6 :=P#DB200.DBX 220.0 REAL 1
    RD7 :=P#DB200.DBX 224.0 REAL 1
    RD8 :=P#DB200.DBX 228.0 REAL 1

    U #DoneLesen1
    O #Error1
    R #StartLesen1
    S #Gelesen1
    BEA
    M002: UN #Vorb2
    O #Gelesen2
    SPB M003
    CALL "GET" , DB46
    Req :=#StartLesen2
    NumVar :=8
    Addr1 :="S-Gud".SGUD_REAL
    Unit1 :=
    Column1:=W#16#F
    Line1 :=
    Addr2 :="S-Gud".SGUD_REAL
    Unit2 :=
    Column2:=W#16#10
    Line2 :=
    Addr3 :=DB52.MGUD_INT
    Unit3 :=
    Column3:=W#16#4
    Line3 :=
    Addr4 :=DB52.MGUD_INT
    Unit4 :=
    Column4:=W#16#5
    Line4 :=
    Addr5 :=DB52.MGUD_INT
    Unit5 :=
    Column5:=W#16#6
    Line5 :=
    Addr6 :=DB52.MGUD_INT
    Unit6 :=
    Column6:=W#16#7
    Line6 :=
    Addr7 :=DB52.MGUD_INT
    Unit7 :=
    Column7:=W#16#12
    Line7 :=
    Addr8 :=DB52.MGUD_INT
    Unit8 :=
    Column8:=W#16#13
    Line8 :=
    Error :=#Error2
    NDR :=#DoneLesen2
    State :=#StateLes
    RD1 :="GUD Daten".Reset_Standzeit_null
    RD2 :=P#DB100.DBX212.0 DWORD 1
    RD3 :=P#DB100.DBX216.0 DWORD 1
    RD4 :=P#DB100.DBX220.0 DWORD 1
    RD5 :=P#DB100.DBX224.0 DWORD 1
    RD6 :=P#DB100.DBX228.0 DWORD 1
    RD7 :=P#DB100.DBX232.0 DWORD 1
    RD8 :=P#DB100.DBX236.0 DWORD 1

    U #DoneLesen2
    O #Error2
    R #StartLesen2
    S #Gelesen2
    BEA
    M003: UN #Vorb3
    O #Gelesen3
    SPB M005
    CALL "GET" , DB46
    Req :=#StartLesen3
    NumVar :=7
    Addr1 :=DB52.MGUD_INT
    Unit1 :=
    Column1:=W#16#14
    Line1 :=
    Addr2 :=DB52.MGUD_INT
    Unit2 :=
    Column2:=W#16#15
    Line2 :=
    Addr3 :=DB53.UGUD_INT
    Unit3 :=
    Column3:=W#16#4
    Line3 :=
    Addr4 :=DB53.UGUD_INT
    Unit4 :=
    Column4:=W#16#5
    Line4 :=
    Addr5 :=DB53.UGUD_INT
    Unit5 :=
    Column5:=W#16#6
    Line5 :=
    Addr6 :=DB53.UGUD_INT
    Unit6 :=
    Column6:=W#16#7
    Line6 :=
    Addr7 :=DB53.UGUD_INT
    Unit7 :=
    Column7:=W#16#8
    Line7 :=
    Addr8 :=
    Unit8 :=
    Column8:=
    Line8 :=
    Error :=#Error3
    NDR :=#DoneLesen3
    State :=#StateLes
    RD1 :=P#DB100.DBX240.0 DWORD 1
    RD2 :=P#DB100.DBX244.0 DWORD 1
    RD3 :=P#DB100.DBX248.0 DWORD 1
    RD4 :=P#DB100.DBX252.0 DWORD 1
    RD5 :=P#DB100.DBX256.0 DWORD 1
    RD6 :=P#DB100.DBX260.0 DWORD 1
    RD7 :=P#DB100.DBX264.0 DWORD 1
    RD8 :=
    U #DoneLesen3
    O #Error3
    R #StartLesen3
    S #Gelesen3
    BEA
    M005: UN #Vorb4
    O #Gelesen4
    SPB M006
    CALL "GET" , DB46
    Req :=#StartLesen4
    NumVar :=6
    Addr1 :=DB54.GUD4_INT
    Unit1 :=
    Column1:=W#16#4
    Line1 :=
    Addr2 :=DB54.GUD4_INT
    Unit2 :=
    Column2:=W#16#5
    Line2 :=
    Addr3 :=DB54.GUD4_INT
    Unit3 :=
    Column3:=W#16#6
    Line3 :=
    Addr4 :=DB54.GUD4_INT
    Unit4 :=
    Column4:=W#16#7
    Line4 :=
    Addr5 :=DB54.GUD4_INT
    Unit5 :=
    Column5:=W#16#8
    Line5 :=
    Addr6 :=DB54.GUD4_INT
    Unit6 :=
    Column6:=W#16#12
    Line6 :=
    Addr7 :=
    Unit7 :=
    Column7:=
    Line7 :=
    Addr8 :=
    Unit8 :=
    Column8:=
    Line8 :=
    Error :=#Error4
    NDR :=#DoneLesen4
    State :=#StateLes
    RD1 :=P#DB100.DBX268.0 DWORD 1
    RD2 :=P#DB100.DBX272.0 DWORD 1
    RD3 :=P#DB100.DBX276.0 DWORD 1
    RD4 :=P#DB100.DBX280.0 DWORD 1
    RD5 :=P#DB100.DBX284.0 DWORD 1
    RD6 :=P#DB100.DBX288.0 DWORD 1
    RD7 :=
    RD8 :=
    U #DoneLesen4
    O #Error4
    R #StartLesen4
    S #Gelesen4
    BEA
    M009: NOP 0
    [/html]

    Besten Dank schon mal an euch für die Mühen.

    Gruss
    Zitieren Zitieren GUDs lesen und schreiben 840D  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.261
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Falls es der zweite, von dir gezeigte Codeteil ist hätte ich eine Vermutung anzubieten.

    Mit 840D kenne ich mich zwar nicht aus, aber mir kommt dein Programmablauf zum Lesen irgendwie nicht ganz korrekt vor. Das würde ja den reinen S7-Teil betreffen. Du rufst ja immer den gleichen Baustein auf, inkl. IDB. Das geht prinzipiell, da du ja alle anderen Aufrufe umspringst. Allerdings sieht das so aus, als ob nach dem fertigen Lesen, der Baustein sofort abgesperrt ist und dann im nächsten Zyklus beim folgenden Baustein mit neuen Werten das Lesen gestartet wird. Ich denke, mindestens einmal sollte der "alte" Getbaustein nach dem "Lesen fertig" noch aufgerufen werden, damit sich Flanken und andere internen statischen Variablen noch zurückstellen können. Das ist generell ein Problem, wenn man FB mit IDB einfach umspringt, für mich eigentlich auch eher eine gefährliche Lö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

  3. #3
    Registriert seit
    01.11.2007
    Beiträge
    1.239
    Danke
    91
    Erhielt 407 Danke für 368 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    In der Hilfe zum FB3 (PUT) steht:
    Zu jedem FB3-Aufruf muss ein separater Instanz-DB aus dem Anwender-Bereich zugeordnet werden.
    Grüße von HaDi

  4. Folgender Benutzer sagt Danke zu HaDi für den nützlichen Beitrag:

    PG710 (22.12.2008)

Ähnliche Themen

  1. Fernzugriff schreiben/lesen
    Von Blackforest im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.06.2009, 13:07
  2. Achspositionen aus einer 840d PL in die PLC lesen
    Von drsnuggles im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.06.2009, 13:03
  3. In DB schreiben / lesen
    Von mariob im Forum HMI
    Antworten: 4
    Letzter Beitrag: 27.12.2008, 16:54
  4. Antworten: 0
    Letzter Beitrag: 08.11.2008, 08:36
  5. 840D Datum im NC Programm schreiben
    Von Guste im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 28.10.2007, 14:15

Lesezeichen

Berechtigungen

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