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

Ergebnis 1 bis 8 von 8

Thema: Prüfung eines FB`s der auf Änderung im DB Impus erzeugt

  1. #1
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo liebes Forum,
    vielleicht hat jemand Lust den von mir erstellten FB querzuprüfen.
    Viel Augen sehen mehr als Zwei !.
    Problembeschreibung:
    Wenn im einem DB sich eine Information ändert,soll ein Controll FB einen z.yklischen Impuls ausgeben
    FB und Aufruf im OB1 hängen als AWL_Quelle an.
    Datenbausteine sind selbst zu bauen.
     
     
     
     
    AWL_Quelle OB1:
     
    ORGANIZATION_BLOCK "CYCL_EXC"
    TITLE = "Main Program Sweep (Cycle)"
    //Bausteinbeschreibung fb 2 "datenvergleicher_DB"
    //
    //Ändert sich im DB 4 eine Information,gibt der FB einen Impuls aus.
    //DB5 wird Verwendet um den Altzustandsspeicher des DB4 zurealisieren.
    //Vorgaben für die DB`s: gleiche Grösse
    //
    VERSION : 0.1
     
    VAR_TEMP
    OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1)
    OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1)
    OB1_PRIORITY : BYTE ; //Priority of OB Execution
    OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1)
    OB1_RESERVED_1 : BYTE ; //Reserved for system
    OB1_RESERVED_2 : BYTE ; //Reserved for system
    OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds)
    OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds)
    OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds)
    OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    //Bedeutung von Ret_Val_fb
    //w#16#0=OK
    //w#16#8000=ungültige DB Nummern z.b. negativ
    //w#16#8001=beide DB`S indentische Nummer
    //w#16#8002=Fehler beide DB`s ungleiche Datenbausteinlänge
    CALL "datenvergleicher_DB" , DB 44 (
    DBNR := 4,//Angabe in Integer welcher DB Überwacht werden soll
    DBNR_alt_Info := 5,//Angabe in Integer welcher DB als Altzustandsspeicher verwendet werden soll
    Impuls_Unterscheidung := "Aenderungungsimpuls",// 1 als Impuls bedeuted Imformation hat sich geändert
    Ret_Val_FB := MW 22);//w#16#0=OK,w#16#8000=ungültige DB Nummern z.b. negativ,w#16#8001=beide DB`S indentische Nummer,w#16#8002=Fehler beide DB`s ungleiche Datenbausteinlänge
    NETWORK
    TITLE =Einfangen des Änderungsimpuls
    U "Aenderungungsimpuls";
    S "Impulsfangbit"; //Impulsfänger
    U "Reset_Impulsfang_bit";
    R "Impulsfangbit";
    END_ORGANIZATION_BLOCK
    FB Quelle
    FUNCTION_BLOCK "datenvergleicher_DB"
    TITLE =
    VERSION : 0.1
     
    VAR_INPUT
    DBNR : INT ; //Gibt sie Nr. des zu überprüfenden DB`s an
    DBNR_alt_Info : INT ; //Speicher DB für Altinformation von DBNR,gleiche Grösse wie DBNR
    END_VAR
    VAR_OUTPUT
    Impuls_Unterscheidung : BOOL ; //1=Impuls Unterscheidung
    Ret_Val_FB : WORD ; //w#16#0=ok,w#16#800x=fehler
    END_VAR
    VAR
    Unterscheidung : BOOL ; //1=aktiv
    END_VAR
    VAR_TEMP
    DBNR_t : INT ;
    DBNR_alt_Info_t : INT ;
    Ret_Val_FB_t : WORD ;
    schleife : INT ;
    Pointer_Word : DWORD ;
    END_VAR
    BEGIN
    NETWORK
    TITLE =Dateninformation der DB`s auf Fehler überprüfen
    L #DBNR; //Datenbaustein NR:-Übergabe an Lokal zur Indrekten Adressierung
    T #DBNR_t;
    L #DBNR_alt_Info;
    T #DBNR_alt_Info_t;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
    L W#16#0; //Fehlerkennung auf null setzten
    T #Ret_Val_FB_t;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
    L #DBNR; //Vergleichen auf negative db Nummern,wenn <1=Fehler_0
    L 1;
    <I ;
    SPB Feh0;
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    CLR ; //Vke=0 für Vergleicher
    L #DBNR_alt_Info;
    L 1;
    <I ;
    SPB Feh0;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!
    L #DBNR_t; //Vergleichen auf ungleiche db Nummern,wenn gleich=Fehler_1
    L #DBNR_alt_Info_t;
    ==I ;
    SPB Feh1;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
    AUF DB [#DBNR_alt_Info_t]; //Vergleichen der Datenlänge beider DB`s,wenn ungleich=Fehler_2
    L DBLG;
    AUF DB [#DBNR_t];
    L DBLG;
    <>I ;
    SPB Feh2;
    NETWORK
    TITLE =Auswertung ob Information in DBNR sich geändert hat
    L P#0.0; //Vorbelegung des word Pointers mit p#0.0
    T #Pointer_Word;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
    AUF DB [#DBNR_t]; //öffnen eines Datenbausteines
    L DBLG; // errechnung der Datenbausteinlänge in Byte
    L 2; //Umrechnung in Word
    /D ; //Division in D da Intergrenze überschritten werden kann,nach division Integer ausreichend
    nex1: T #schleife; //Vorspannen der Anzahl Schleifendurchläufe
    AUF DB [#DBNR_alt_Info_t];
    L DBW [#Pointer_Word]; //Lade Word aus Altzustand DBNR
    AUF DB [#DBNR_t];
    L DBW [#Pointer_Word]; //Lade Word aus überwachenden DBNR
    XOW ; //Unterscheidung auf Gleichheit (exklusiv oder word)
    L 0;
    <>I ;
    SPBN spin; //wenn gleich dann springe
    SET ; //1=unterscheidung vorhanden
    S #Unterscheidung;
    CLR ; //vke=0
    spin: AUF DB [#DBNR_t]; //Übergebe DBNR wordinformation an Altwert
    L DBW [#Pointer_Word];
    AUF DB [#DBNR_alt_Info_t];
    T DBW [#Pointer_Word];
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    L P#2.0; //Pointererhöhung für nächste Schleife
    L #Pointer_Word;
    +D ;
    T #Pointer_Word;
    //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    L #schleife; //Rücksprung in Schleife wenn nicht alle DB-Wörter bearbeiteten wurden
    LOOP nex1;
    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!
    NETWORK
    TITLE =Impulausgabe DB Veränderung Vorhanden
    CLR ; //vke=0
    U #Unterscheidung;
    = #Impuls_Unterscheidung; //Impulsausgabe bit=1 Unterscheidung Vorhanden
    CLR ;
    = #Unterscheidung;
    NETWORK
    TITLE =fehlerauswertung
    SPA End1;
    Feh0: NOP 0;
    L W#16#8000; //Fehler ungültige Datenbaustein Nummern
    L #Ret_Val_FB_t;
    +D ;
    T #Ret_Val_FB_t;
    SPA End1;
    Feh1: L W#16#8001; //Fehler beide DB`s gleiche Datenbaustein Nummer
    L #Ret_Val_FB_t;
    +D ;
    T #Ret_Val_FB_t;
    SPA End1;
    Feh2: L W#16#8002; //Fehler beide DB`s ungleiche Datenbaustein Länge
    L #Ret_Val_FB_t;
    +D ;
    T #Ret_Val_FB_t;
    End1: L #Ret_Val_FB_t; //Zustandsausgabe Lokal nach OUT
    T #Ret_Val_FB;
    NETWORK
    TITLE =ENO Bearbeitung,kein Fehler ENO=1
    L #Ret_Val_FB_t;
    L W#16#0;
    ==I ;
    SPB m002;
    CLR ;
    SAVE ;
    SPA ende;
    m002: SET ;
    SAVE ;
    CLR ; //vke Bereinigung
    ende: NOP 0;
    END_FUNCTION_BLOCK
    Zitieren Zitieren Prüfung eines FB`s der auf Änderung im DB Impus erzeugt  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Zitat Zitat von Bernard Beitrag anzeigen
    Hallo liebes Forum,
    vielleicht hat jemand Lust den von mir erstellten FB querzuprüfen.
    Viel Augen sehen mehr als Zwei !.
    Problembeschreibung:
    Wenn im einem DB sich eine Information ändert,soll ein Controll FB einen z.yklischen Impuls ausgeben
    Das heißt da ist ein Fehler drin oder wie?

  3. #3
    Avatar von Bernard
    Bernard ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Bisher selbst keinen Fehler gefunden,
    aber was heißt das Schon.
    wäre dankbar für Rückmeldung auf gerüft Funktionalität
    Zitieren Zitieren Prüfung eines FB`s der auf Änderung im DB Impus erzeugt  

  4. #4
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von Bernard Beitrag anzeigen
    Bisher selbst keinen Fehler gefunden,
    aber was heißt das Schon.
    wäre dankbar für Rückmeldung auf gerüft Funktionalität
    Also es ist schon mühsam einen Fehler zu suchen, wo vielleicht gar keiner ist.
    Wenn man so drüber fliegt, sieht man, dass Du alles schön getrennt und mit vielen Kommentaren versehen hast. Also im Programm schaut es sicher übersichtlich aus.
    Das ist doch schon mal viel Wert.
    Die Funktion kannst Du ja am besten testen, denn Du weißt ja was passieren soll und was nicht.
    Ich glaube hier sagt keiner "Passt scho, rein damit in die Anlage". Ich kann mich aber auch täuschen.
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  5. Folgender Benutzer sagt Danke zu Paule für den nützlichen Beitrag:

    Bernard (03.10.2009)

  6. #5
    Avatar von Bernard
    Bernard ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Habe inzwischen FB Getestet,funktioniert.
    Zitieren Zitieren Prüfung eines FB`s der auf Änderung im DB Impus erzeugt  

  7. #6
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.224
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Zitat Zitat von Bernard Beitrag anzeigen
    Habe inzwischen FB Getestet,funktioniert.
    Hast du den FB auch mal mit einem DB getestet, der sehr groß ist, also z.Bsp. 16K? Könnte mir vorstellen, daß das u.U. Zykluszeitprobleme gibt.
    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
    Avatar von Bernard
    Bernard ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard

    Testumgebung:
    WINAC RTX 2008
    DB4=48000 bit
    Zyklusverlängerung ca.1-2 ms

    Der eigentliche Problem besteht darin,eine dynamische Verbindung mittels MPI zwischen zwei SPSen zu erzeugen wenn eine Dateninformation in der Sende-SPS sich verändert hat.Der FB generiert mir den Verbindungsimpuls.
    Daten:
    SFC 65= Dynamischer Kommunikationsbaustein
    DB=4=Datensammler
    Der SFC 65 überträgt max. 76 byte,sodas selbst bei Kleinen SPSen keine Zykluszeitprobleme auftretten.
    Zitieren Zitieren Hast du den FB auch mal mit einem DB getestet, der sehr groß ist, also z.Bsp. 16K? Kö  

  9. #8
    Avatar von Bernard
    Bernard ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    28.01.2009
    Ort
    Hamburg
    Beiträge
    199
    Danke
    52
    Erhielt 54 Danke für 34 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Testumgebung:
    WINAC RTX 2008
    DB4=48000 bit
    Zyklusverlängerung ca.1-2 ms

    Der eigentliche Problem besteht darin,eine dynamische Verbindung mittels MPI zwischen zwei SPSen zu erzeugen wenn eine Dateninformation in der Sende-SPS sich verändert hat.Der FB generiert mir den Verbindungsimpuls.
    Daten:
    SFC 65= Dynamischer Kommunikationsbaustein
    DB=4=Datensammler
    Der SFC 65 überträgt max. 76 byte,sodas selbst bei Kleinen SPSen keine Zykluszeitprobleme auftretten.
    Zitieren Zitieren Hast du den FB auch mal mit einem DB getestet, der sehr groß ist, also z.Bsp. 16K? Kö  

Ähnliche Themen

  1. MM4 erzeugt Busfehler.
    Von JesperMP im Forum Feldbusse
    Antworten: 7
    Letzter Beitrag: 02.06.2010, 07:40
  2. Script erzeugt keine Datei
    Von Bensen83 im Forum HMI
    Antworten: 19
    Letzter Beitrag: 07.04.2010, 17:34
  3. Antworten: 7
    Letzter Beitrag: 13.10.2008, 19:56
  4. Änderung eines SPS-Progr. auslesen/erkennen
    Von thony77 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 03.12.2007, 13:33
  5. DP-DP-Koppler erzeugt EXTF
    Von AliBaba im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 09.05.2006, 13:15

Lesezeichen

Berechtigungen

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