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

Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 24

Thread: PEWs indirekt adressieren

  1. #11
    Join Date
    25.05.2004
    Posts
    194
    Danke
    0
    Erhielt 46 Danke für 7 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Nehme immer SLD, sonst ist man bei Adressen von > 8192 im Arsch. Kommt zwar sogut wie nie vor, aber...

    Gruß

    Ralf

  2. #12
    MatMer's Avatar
    MatMer is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    22.07.2004
    Posts
    788
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Default

    also das mit dem AR1 hat super geklappt
    allerdings hätte ich jetzt die Frage wie man das mit den Bits hinbekommt
    also als Beispiel man gibt als word oder int vor (Dez) 96 und der soll daraus z.b A 9.6 machen
    geht das oder ist das nicht möglich?

  3. #13
    MatMer's Avatar
    MatMer is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    22.07.2004
    Posts
    788
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Default

    habs doch noch hingekriegt ist zwar ein wenig "gefuscht" aber es geht
    habs in bcd gewandelt und dann 2geteilt und beide etwas geschoben und dann verodert

  4. #14
    Join Date
    29.08.2003
    Posts
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default

    Nabend
    das mit den Bits ist genau so nur das du eine Ziffer die du Vorgibst nicht dierekt in bit und Byte aufschlüsseln kannst
    also 96 = 9.6 geht net sondern
    96 ist das 96 Bit ab 0.0 also 12.0

    aufbau des Adressregisters ist dann wie folgt:

    0000 0000 0000 0 000
    -----------------------^^^^sind die Bitstelle also 0-7
    ^^^^^^^^^^^ Sind die Bytestellen also das was vor dem
    komma steht

    So hoffe das man mich Versteht

    MfG Balou

    Wenn einer nett Fragt mach ich nen FC dafür
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

  5. #15
    MatMer's Avatar
    MatMer is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    22.07.2004
    Posts
    788
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Default

    ja das wusste ich ja schon wurde oben ja schon gesagt das die rechten 3 bits für die bit schlüssel sind
    dann hatte ich halt die 96 einfach in eine bcd zahl gewandelt dann hatte ich schonmal 18.6
    war halt so das durch das 4 bit was nicht direkt mitgenutzt wird alles doppelt so hoch war also bei 65 hatte ich dann 12.5 usw...
    das ist jetzt meine Lösung:
    Code:
          L     #Ausgang1                   //Einlesen der Ersten Byte.Bit Adresse im INT Format ohne Trennzeichen
          ITB                               //Umwandeln in eine BCD Zahl
          T     #Aus_A_Teil1
          L     #Aus_A_Teil1                //Speichern des Wertes um Byte und Bit zu ermitteln
          T     #Aus_A_Teil2
          L     #Aus_A_Teil1                //Ermitteln des Bytes
          SRW   4                           //Löschen der Bit Informationen
          SLW   3                           //Korrigieren der Stellen
          T     #Aus_A_Teil1
          L     #Aus_A_Teil2                //Ermitteln des Bits
          SLW   13                          //Löschen der Byte Information
          SRW   13
          T     #Aus_A_Teil2
          L     #Aus_A_Teil2                //Bit Adresse
          L     #Aus_A_Teil1                //Byte Adresse
          OW                                //Wort Oder
          T     #Aus_A_Teil1                //Adresse für Byte.Bit
          LAR1                              //Ablegen im Adressregister 1
    und das funktioniert auch so weit

  6. #16
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    13,815
    Danke
    747
    Erhielt 3,129 Danke für 2,233 Beiträge

    Default

    @MatMer

    Code:
    L     #Ausgang1                   //Einlesen der Ersten Byte.Bit Adresse im INT Format ohne Trennzeichen 
          ITB                               //Umwandeln in eine BCD Zahl 
    //      T     #Aus_A_Teil1 
    //      L     #Aus_A_Teil1                //Speichern des Wertes um Byte und Bit zu ermitteln 
          T     #Aus_A_Teil2 
    //      L     #Aus_A_Teil1                //Ermitteln des Bytes 
          SRW   4                           //Löschen der Bit Informationen 
          SLW   3                           //Korrigieren der Stellen 
          T     #Aus_A_Teil1 
          L     #Aus_A_Teil2                //Ermitteln des Bits 
          SLW   13                          //Löschen der Byte Information 
          SRW   13 
          T     #Aus_A_Teil2 
    //      L     #Aus_A_Teil2                //Bit Adresse 
          L     #Aus_A_Teil1                //Byte Adresse 
          OW                                //Wort Oder 
          T     #Aus_A_Teil1                //Adresse für Byte.Bit 
          LAR1
    Kannst Anweisungen sparen, nach einem Transfer steht der Wert immernoch im Akku und braucht nicht nochmal geladen zu werten.

  7. #17
    MatMer's Avatar
    MatMer is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    22.07.2004
    Posts
    788
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Default

    ja ich hab das jetzt auch schon öfters bei euch gesehen das ich viel zu viel lade aber ist halt gewöhnung und in der schule haben wir nur fup gelernt
    (ich befürchte unser lehrer hatte keine ahnung von awl) und im praktikum musst ich dann awl machen und deshalb ist das alles noch nicht sooo sauber
    ich versuche mich aber zu verbessern

  8. #18
    Join Date
    29.08.2003
    Posts
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default

    Moin
    musst du denn das Bit so afrufen oder kannst du auch 2 getrennte Werte für Bit und Byte vorgeben Also einmal als INT der Bytewert also 9 und einmal als INT Wert die Bitnummer also 6

    Code:
    FUNCTION FC 2 : VOID
    TITLE = Bit Aufrufer
    VERSION : 0.1
    
    
    VAR_INPUT
      Adresse : INT ;   //Adresse des aufzurufenden BITs
    END_VAR
    VAR_OUTPUT
      BITOUT : BOOL ;   //Ausgang des Bits
    END_VAR
    VAR_TEMP
      BCDZahl : WORD ;  //BCD Zahl
      BITWert : INT ;   //Nummer des BITs
      BYTEWert : INT ;  //Nummer des Bytes
    END_VAR
    BEGIN
    NETWORK
    TITLE =
    
          L     #Adresse; // Laden der Adresse
          ITB   ; //INT to BCD
          T     #BCDZahl; //IN BCD Speicher Abegen
          L     W#16#F; //Maskieren auf  die ersten 4 BIt
          UW    ; 
          BTI   ; //Wandeln nach INT
          T     #BITWert; //Abspeichern
          L     7; //Laden einer 7
          >I    ; //Vergleich auf Größer
          BEB   ; //Wenn größer dann baustein bedingt Benden
          L     #BCDZahl; //Laden der BCD Zahl
          L     W#16#FFF0; //Maskieren auf die letzten 3 Stellen
          UW    ; 
          SRW   4; //Um 4 Stellen nach rechts
          BTI   ; //BCD to INT
          SLW   3; //Um 3 stellen nach Links
          L     #BITWert; //Den BITwert Laden
          OW    ; //Verschmelzen
          LAR1  ; //Ins Adreessregister 1
          U     E [AR1,P#0.0]; //Aufruf des BITs
          =     #BITOUT; //Ausgeben des Bits
    END_FUNCTION
    So würde ich das schreiben

    Ach ja weiß jemand wie man das mit dem Bitaufruf auch noch so hinbekommt das man einen geschlossenen FC Programmieren kann und trotzedem auf M oder A oder E zugreifen kann bei mir steht ja U E ....

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

  9. #19
    MatMer's Avatar
    MatMer is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    22.07.2004
    Posts
    788
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Default

    du meinst das mit dem aufruf also hier der eingang E [ar1,p#...]
    oder was
    hmmmmmm das geht doch bestimmt nicht ganz so einfach
    oder verstehe ich dich jetzt falsch

  10. #20
    Join Date
    29.08.2003
    Posts
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja genau das hab ich gemeint
    Es muss doch irgendwie gehen das man am FC von außen sagt A oder E oder so.
    Kalr das das evtl net ganz einfach ist ader wir sind hier über 500 Leuts das muss doch zu schaffen sein.
    Ich werd ma nen neuen Thread aufmachen

    MfG Balou
    So wie das Eisen außer gebrauch rostet und das stillstehende Wasser verdirbt oder bei Kälte gefriert, so verkommt der Geist ohne Übung.

Similar Threads

  1. Datenbaustein indirekt adressieren
    By franky22 in forum Simatic
    Replies: 8
    Last Post: 23.03.2012, 20:06
  2. String indirekt adressieren
    By The Dude in forum Simatic
    Replies: 8
    Last Post: 22.06.2011, 12:21
  3. Pointer indirekt zu adressieren
    By Erich04 in forum Simatic
    Replies: 3
    Last Post: 26.05.2011, 07:54
  4. SCL indirekt Adressieren
    By Nafura in forum Simatic
    Replies: 7
    Last Post: 19.05.2011, 21:42
  5. UDT Indirekt Adressieren
    By EULANER in forum Simatic
    Replies: 14
    Last Post: 14.11.2010, 19:30

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
  •