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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 24

Thema: PEWs indirekt adressieren

  1. #11
    Registriert seit
    25.05.2004
    Beiträge
    172
    Danke
    0
    Erhielt 39 Danke für 7 Beiträge

    Standard


    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
    Avatar von MatMer
    MatMer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    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
    Avatar von MatMer
    MatMer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    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
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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
    Avatar von MatMer
    MatMer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    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
    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

    @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
    Avatar von MatMer
    MatMer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    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
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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
    Avatar von MatMer
    MatMer ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.07.2004
    Beiträge
    749
    Danke
    41
    Erhielt 66 Danke für 47 Beiträge

    Standard

    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
    Registriert seit
    29.08.2003
    Beiträge
    221
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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.

Ähnliche Themen

  1. PEW; PAW indirekt Adressieren
    Von casius im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 02.10.2017, 09:00
  2. SCL indirekt Adressieren
    Von Nafura im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 19.05.2011, 21:42
  3. UDT Indirekt Adressieren
    Von EULANER im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 14.11.2010, 19:30
  4. SFC 20 indirekt adressieren
    Von drmicha im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 19.10.2009, 09:24
  5. Typ Struct Indirekt adressieren
    Von Jordy im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 23.01.2008, 10:11

Lesezeichen

Berechtigungen

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