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

Page 1 of 2 12 LastLast
Results 1 to 10 of 16

Thread: Informationen aus Anypointer holen

  1. #1
    Join Date
    04.10.2010
    Posts
    178
    Danke
    200
    Erhielt 10 Danke für 8 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja leider unterstützt die 1200er kein AWL mehr.
    Jetzt darf ich Bausteine auf SCL umschreiben.

    Ich habe einen Eingangsparameter am Baustein, vom Typ Any
    Den würde ich gerne zerlegen. In AWL war das so einfach:

    Code:
    // Get offset in the instant DB
          TAR2
          SLD   8
          SRD   8
          T     #Offset
    
          L     P##IA_Interface
          L     #Offset
          +D
          LAR1
    
    
    
          L DIB [ AR1 , P#7.0 ]
          L     B#16#7
          UW
          T     #S_ByteT
    
    // get start adress of the device interface
          L DIW [ AR1 , P#8.0 ]
          T     #S_WordT
          SRW   3
          T     #S_WordT
          L     #S_ByteT
          SLW   13
          L     #S_WordT
          +I
          ITD
          T     #T_StartAdres
    
    
    // get DB number of the interface interface
          L DIW [ AR1 , P#4.0 ]
          T     #DBNumber
    Aber wie geht das in SCL?
    Ich hab natürlich schon etwas geschaut

    Da muss man so merkwürdige AT Parameter anlegen.
    Aber wie geht das?

    Hätte mir jemand einen Tip?

    Vielen Dank
    Wer mir hilft, bekommt auch ein Danke
    Reply With Quote Reply With Quote Informationen aus Anypointer holen  

  2. #2
    Join Date
    14.01.2015
    Posts
    4,438
    Danke
    962
    Erhielt 947 Danke für 700 Beiträge

    Default

    Mit Grüßen

    Gesendet von meinem Nokia 6310

  3. #3
    Join Date
    14.01.2015
    Posts
    4,438
    Danke
    962
    Erhielt 947 Danke für 700 Beiträge

    Default

    Mit Grüßen

    Gesendet von meinem Nokia 6310

  4. #4
    Join Date
    14.01.2015
    Posts
    4,438
    Danke
    962
    Erhielt 947 Danke für 700 Beiträge

    Default

    EDIT:
    Ok, gerade gesehen das es sich um Classic handelt. Aber vielleicht hilft es trotzdem etwas
    Mit Grüßen

    Gesendet von meinem Nokia 6310

  5. #5
    C7633 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    04.10.2010
    Posts
    178
    Danke
    200
    Erhielt 10 Danke für 8 Beiträge

    Default

    Danke Dir

    Die Beiträge hatte ich mir schon angeschaut
    Aber wie bekomme ich die pAny AT Dest Variable angelegt?
    Wer mir hilft, bekommt auch ein Danke

  6. #6
    C7633 is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    04.10.2010
    Posts
    178
    Danke
    200
    Erhielt 10 Danke für 8 Beiträge

    Default

    Ne, ne ich brauch schon TIA
    Wer mir hilft, bekommt auch ein Danke

  7. #7
    Join Date
    30.06.2016
    Posts
    13
    Danke
    4
    Erhielt 3 Danke für 3 Beiträge

    Default

    Hi, um den Any-Pointer mit einer AT-Struktur zu überlagern (bspw. Array[0..4] of Word) darf der Baustein nicht optimiert sein, oder die Remanenz der Variable muss auf "Im IDB setzen" stehen.

    Anschließend kannst du die Elemente in SCL ganz normal mit etwas Bit-Schieberei auseinander nehmen:

    Code:
        #temp_Datentyp := WORD_TO_INT(AT_Variable[0].%B0);
        #temp_DB_Nummer := WORD_TO_INT(AT_Variable[2]);
        #temp_Speicherbereich := WORD_TO_INT(AT_Variable[3].%B1);
        #temp_Byteadresse := WORD_TO_INT(SHR_WORD(IN := AT_Variable[4], N := 3));
        #temp_Bitadresse := WORD_TO_INT(SHR_WORD(IN := SHL_WORD(IN := #AT_Variable[4], N := 13), N := 13));
    Mit freundlichen Grüßen,

    Banana Joe

  8. Folgender Benutzer sagt Danke zu Banana Joe für den nützlichen Beitrag:

    C7633 (10.10.2019)

  9. #8
    Join Date
    27.06.2015
    Location
    Hamburg
    Posts
    877
    Danke
    160
    Erhielt 241 Danke für 199 Beiträge

    Default

    Moin,
    erst in der DB_Any-Variable bei Remanenz "im IDB setzen" einstellen.
    Dann in der darauf folgenden Variable als Typ "AT" auswählen. Diese "Folge-Variable" überlagert dann die darüber stehende. Geht aber alles nur bei FBs und dort nur im In, Out, In/Out und Static-Teil.
    AT-Sicht.jpg
    "Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden." - John Ruskin

  10. #9
    Join Date
    27.06.2015
    Location
    Hamburg
    Posts
    877
    Danke
    160
    Erhielt 241 Danke für 199 Beiträge

    Default

    ABER: Wenn du es eh gerade umschreibst , dann mach es doch gleich vernünftig und löse dich von dem alten Gedankengut.
    "Der höchste Lohn für unsere Bemühungen ist nicht das, was wir dafür bekommen, sondern das, was wir dadurch werden." - John Ruskin

  11. #10
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,006
    Danke
    1,137
    Erhielt 4,134 Danke für 3,337 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Quote Originally Posted by Banana Joe View Post
    Anschließend kannst du die Elemente in SCL ganz normal mit etwas Bit-Schieberei auseinander nehmen:

    Code:
        #temp_Datentyp := WORD_TO_INT(AT_Variable[0].%B0);
        #temp_DB_Nummer := WORD_TO_INT(AT_Variable[2]);
        #temp_Speicherbereich := WORD_TO_INT(AT_Variable[3].%B1);
        #temp_Byteadresse := WORD_TO_INT(SHR_WORD(IN := AT_Variable[4], N := 3));
        #temp_Bitadresse := WORD_TO_INT(SHR_WORD(IN := SHL_WORD(IN := #AT_Variable[4], N := 13), N := 13));
    Na, ganz so easy geht es dann doch nicht - Byteadresse wird falsch ermittelt. Und Bitadresse ist viel zu umständlich gelöst.


    @C7633
    Der ANY der zeigt doch bestimmt auf irgendwas strukturiertes? Dann erkläre doch die Struktur zu einem Datentyp, dann kannst Du ganz ohne rumbasteln in- und außerhalb des Bausteins symbolisch mit dem Übergabeparameter arbeiten.

    Oder soll da Schweinkram aus der Programmier-Steinzeit in dieses Jahrtausend übernommen werden?

    Harald
    Tipp: Freitag 18.10.2019 ab 19:00 Uhr 12. SPS-Forum Regional-Stammtisch NRW im RunkelKrug in Bielefeld

    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  12. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    C7633 (11.10.2019)

Similar Threads

  1. Programm aus Steuerung zurück holen
    By link96 in forum CODESYS und IEC61131
    Replies: 6
    Last Post: 28.03.2014, 09:34
  2. Programm aus Logo holen
    By dentech in forum Simatic
    Replies: 6
    Last Post: 25.04.2012, 23:05
  3. Datenbereich über ANY Zeiger aus DB holen
    By Temotec in forum Simatic
    Replies: 2
    Last Post: 21.06.2009, 21:42
  4. Bits aus Byte-Array holen
    By MW in forum Hochsprachen - OPC
    Replies: 7
    Last Post: 11.07.2007, 20:29
  5. [SCL] DATE_AND_TIME aus DB holen
    By lazka in forum Simatic
    Replies: 8
    Last Post: 23.12.2006, 00:12

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •