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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: Parametrischer Zugriff auf S120 ohne SINA_FB ?

  1. #11
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    758
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Sachen gibts
    Eigentlich habe ich genau so was gesucht...

    Vielen Dank für deinen Hinweis !!
    Edit: doch nicht. Weil er will wieder irgendwelche Global-DBs haben, und ich wollte ja daß er mir Daten in die Schnittstelle schreibt.
    Wieso machen die das immer mit den Global-DBs, hat das irgendeinen bestimmten Grund ?

  2. #12
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    758
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Ich glaube, der Knackpunkt bei der ganzen Geschichte ist die Versorgung von SFBs mit dem Zeiger auf einen Ablage-DB.

    Mir ist derzeit nicht klar, wie ich einen ANY-Zeiger auf die lokale Instanz aufbauen soll. Und was passiert bei multiinstanzierten Zugriffen, wenn beispielsweise mehrere Achsen-Instanzen in einem gemeinsamen FB aufgerufen werden und dieser FB auch keine eigene Instanz hat sondern noch in einem FB-xy aufgerufen wird. Wie tief dürfen solche Verschachtelungsebenen überhaupt werden ?

    Taugt der Code hier irgendetwas ?

    Code:
    //generate the any pointer to "Drive_Parameter_p3101"
    
          LAR1  P##ANY_Pointer              // Startadress of ANY Pointer
          L     B#16#10                          // SyntaxID
          T     LB [AR1,P#0.0]
          L     B#16#2                           // Type = Byte
          T     LB [AR1,P#1.0]
          L     28                                  // Length
          T     LW [AR1,P#2.0]
          L     DINO                              // IDB Number
          T     LW [AR1,P#4.0]
          L     P#DBX 0.0                      // Unit Pointer
          L     64                                 // Number of first DataByte of "Drive_Parameter_p3101" 
          SLD   3                                 // Converting in Pointer Format 
          +D    
          T     LD [AR1,P#6.0]
    
          CALL  #SFB_53
           REQ   :=TRUE
           ID    :=#in_Addr_CU_dword
           INDEX :=47
           LEN   :=28
           DONE  :=
           BUSY  :=
           ERROR :=
           STATUS:=
           RECORD:=#ANY_Pointer

  3. #13
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

    Standard

    Mit "L DINO" lädst Du die Nummer des Instanz-DBs, das kann nur der sein, der auch im SIMATIC Manager aufgelistet wird.

    Ich denke Du müsstest eher "L P#DIX 0.0" verwenden, weil Du ja den Instanz-DB und nicht einen normalen DB als Speicherbereich verwenden willst.
    Mit "L 64" legst Du dich aber absolut fest. Das müsste ja für jede Instanz anders sein.


    Ich habe das mit der variablen Anfangsadresse mal so gemacht (war für IO-Link):
    Code:
          TAR2  #temp_AR2                   // save AR2 (pointer to instance DB)
    
          LAR2  P##IOL_Data                 // load pointer to IOL_Data [0] into AR2
          LAR1  P##temp_ANY_Pointer_1       // Load start adress of ANY-pointer into AR1
          L     B#16#10                     // SyntaxID
          T     LB [AR1,P#0.0]
          L     B#16#2                      // Type = Byte
          T     LB [AR1,P#1.0]
          L     #DS_length                  // Length = length of data set 
          T     LW [AR1,P#2.0]
          L     DINO                        // IDB number
          T     LW [AR1,P#4.0]
          TAR2                              // load pointer to IOL_Data from AR2
          T     LD [AR1,P#6.0]              // store in ANY-pointer 
    
          LAR2  #temp_AR2                   // restore AR2 (pointer to instance DB)
    dabei ist #IOL-Data ein Array aus Byte und größer als die Anzahl der zu bearbeitenden Daten, die in #DS_Length steht, beides sind statische Variablen.
    temp_Any_Pointer_1 ist vom Type ANY und temp_AR2 vom Type DWORD, beides sind temporäre Variablen.

    Damit ist es egal, wo im Instanz-DB die Daten stehen, sie werden immer gefunden, auch wenn man weitere Variablen definiert. Ob das aber auch Multiinstanz-fest ist, habe ich aber nicht getestet!

  4. #14
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    758
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Hallo miami,

    vielen Dank für deine Rückmeldung. Ich muss sagen, daß mich diese Zeigerei in AWL an die Grenzen meines Sachverstandes in dem Thema bringt. Ich programmiere sowieso grundsätzlich ungerne in AWL sondern viel lieber in SCL (wenns denn sein muss) und hier kommt gleich so ein Brocken. Ich frage mich, warum in aller Welt das alles so kompliziert sein muss ? Warum kann ich nicht einfach die Struktur auf den RECORD Bereich durchverdrahten und gut ist. Bei SFC20 "BLKMOVE" und anderen SFCs funktioniert es doch auch.

    Letztenendes sehe ich das so daß diese Aufgabe überhaupt nicht trivial ist und überdies selbst Siemens sich da schwer tut dafür fertige Lösungen anzubieten. Aber wie soll das bitte gehen, wenn ich in einer Anlage an die 27-30 Achsen habe und die jetzt also jede auch noch einen eigenen Global-DB alleine für azyklischen Zugriff bekommen soll ?? Das ist doch völliger Humbug. Ich weiß gerade irgendwie nicht weiter...

  5. #15
    Registriert seit
    05.04.2012
    Beiträge
    962
    Danke
    97
    Erhielt 218 Danke für 193 Beiträge

    Standard

    Zitat Zitat von Draco Malfoy Beitrag anzeigen
    Letztenendes sehe ich das so daß diese Aufgabe überhaupt nicht trivial ist und überdies selbst Siemens sich da schwer tut dafür fertige Lösungen anzubieten. Aber wie soll das bitte gehen, wenn ich in einer Anlage an die 27-30 Achsen habe und die jetzt also jede auch noch einen eigenen Global-DB alleine für azyklischen Zugriff bekommen soll ?? Das ist doch völliger Humbug. Ich weiß gerade irgendwie nicht weiter...
    Hast Du das schon mal mit Multinstanzen probiert (ich denke, dass das geht,dann hast Du doch nur noch einen DB).
    In TIA- Portal fällt auf, dass man den SINA_FB "aufgepröselt" hat. D.h. man hat z.B. einen einfachen Baustein zur azyklischen Kommunikation (FB287), oder wenn man ganze Verfahrsätze etc. kopieren will, (der FB286). Zyklisch kann man dann mit DPWR_DAT / DPRD_DAT machen - für alle Standardtelegramm gibt es schon vorgefertigte UDT´s. Oder beim Einsatz von reinen Drehzahlachsen oder Positionierachsen gibt es dann komplette Ansteuerbausteine (d.h. Ablaufsteuerung ist im Antrieb gemacht und man muss weniger Gedanken über Einschalten, Betriebsartenwechsel etc.). Nichtdestotrotz würde ich heute beim Einsatz einer S7-1500 mal mit den Technologieobjekten ausprobieren und die Ansteuerung über die PLC Open Bausteine machen (zumindest hat das mir ganz gut gefallen, obwohl ich ein langjähriger "EPos-" Anwender bin).

  6. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.316
    Danke
    932
    Erhielt 3.331 Danke für 2.689 Beiträge

    Standard

    Man kann ANY auf Variablen in der lokalen FB-Instanz erstellen. Man muß dabei den Multiinstanz Offset aus AR2 addieren. (siehe mal die Forumshilfe nach: "multiinstanz offset AR2")
    Für den ANY ist egal, ob als Bereichskennung DI oder DB angegeben wird - für den SFC ist das sowieso ein Global DB.
    Code:
    //generate the any pointer to "Drive_Parameter_p3101"
    
          LAR1  P##ANY_Pointer
          L     B#16#10                    // SyntaxID
          T     B [AR1,P#0.0]
          L     B#16#2                     // Type = Byte
          T     B [AR1,P#1.0]
          L     28                         // Length
          T     W [AR1,P#2.0]
          L     DINO                       // IDB Number
          T     W [AR1,P#4.0]
          L     P##Drive_Parameter_p3101
          UD    DW#16#FFFFFF               //Bereichskennung (DI) ausblenden
          TAR2                             //Multiinstanz-Offset aus AR2 (mit Bereichskennung DB)
          +D                               //dazu
          T     D [AR1,P#6.0]
    Harald
    Geändert von PN/DP (09.07.2015 um 01:06 Uhr) Grund: Beitragseditor auf Tablet hatte den Beitrag eigenmächtig verhunzt :(
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet
    Zitieren Zitieren ANY auf eine Variable in der lokalen Instanz  

  7. Folgende 2 Benutzer sagen Danke zu PN/DP für den nützlichen Beitrag:

    Draco Malfoy (09.07.2015),miami (09.07.2015)

  8. #17
    Registriert seit
    05.04.2012
    Beiträge
    962
    Danke
    97
    Erhielt 218 Danke für 193 Beiträge

    Standard

    ... folgendes Beispiel habe ich mal ausgegraben - geht für Schreiben von p2507

    Variablentabelle:


    FC1:


    DB1:


    DB2:
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg FC1.jpg (79,0 KB, 36x aufgerufen)
    • Dateityp: jpg DB1.jpg (136,0 KB, 37x aufgerufen)
    • Dateityp: jpg DB2.jpg (132,0 KB, 36x aufgerufen)
    • Dateityp: jpg VAT.jpg (262,3 KB, 37x aufgerufen)
    Geändert von zako (09.07.2015 um 09:11 Uhr)

  9. Folgender Benutzer sagt Danke zu zako für den nützlichen Beitrag:

    Draco Malfoy (09.07.2015)

  10. #18
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    758
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Vielen Dank für die Rückmeldungen und Beispiele, insbesondere zu dem Zeiger.
    Blöde Frage: in dem Request Header der Wert Achse - kommt da die Antriebsobjekt-Nummer aus der Sinamics Konfiguration rein ?

  11. #19
    Registriert seit
    11.03.2011
    Beiträge
    384
    Danke
    32
    Erhielt 80 Danke für 69 Beiträge

  12. #20
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    758
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also, nach 2 Tagen im Versuchsraum live vorm Antrieb kann ich folgende Feststellungen machen:


    • 1. Mein Baustein funktioniert
    • 2. Sämtliche Zeigeraufbauten und Beispiele, die hier oben aufgeführt wurden, funktionieren leider nicht. Ich weiß nicht woran das liegt, aber im Falle einer Multiinstanz, kommt da immer nur Mist raus.
    • 3. Die am Meisten durchschlagende Entdeckung für mich war, dass man diese Zeiger so auch gar nicht braucht. Man mag es kaum glauben, aber man kann sich einfach eine vernünftige Struktur im Static Bereich aufbauen, diese auf den RECORD Eingang vom SFB durchverdrahten und – oh Wunder ! – es funktioniert.


    Ich versteh es im Übrigen nicht ganz, warum man das nicht einem sofort sagen kann. Oder habe ich irgendwie den Dreh in dieser Diskussion nicht mitbekommen. Ich programmiere mir hier halt nen Ast ab, begebe mich in die Tiefen von ANY-Pointer und anderweitiger Low-Level Schwarzmagie, und siehe da – für die Katz Stattdessen einfach Struktur anlegen, dranschreiben - läuft! Keine mistigen AWL-Pointer mehr, keine Kopfschmerzen, keine Komplikationen mit Multiinstanzen. Überdies kann ich soviel Achsen draufbauen, wie ich lustig bin, es bleibt im Wunschfalle nur ein einziger FB übrig. Und den FB283 braucht man jetzt auch nit mehr...

    Alles in einem: gut ist, was gut ausgeht.
    Geändert von Draco Malfoy (14.07.2015 um 21:49 Uhr) Grund: Rechtschreibung
    Zitieren Zitieren Rückmeldungen  

Ähnliche Themen

  1. Zugriff auf Programm ohne Projktdatei
    Von Timbo84 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 25.11.2010, 19:26
  2. ComlibV2 ohne Zugriff auf PC Schnittstelle
    Von amedotom im Forum CODESYS und IEC61131
    Antworten: 8
    Letzter Beitrag: 09.11.2010, 15:57
  3. Antworten: 0
    Letzter Beitrag: 29.04.2009, 07:57
  4. Zugriff auf EA Ebene ohne PAB Erweiterung
    Von Mütze im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.07.2008, 23:39
  5. Zugriff mit .NET auf SPS-S7 ohne OPC Server
    Von david.ka im Forum Hochsprachen - OPC
    Antworten: 4
    Letzter Beitrag: 07.09.2005, 12:10

Lesezeichen

Berechtigungen

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