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

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

Thema: Gewichtswert einer Waage mit der CP-340 auslesen.

  1. #11
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,
    wenn die Waage eh schon von allein sendet hast eh schon die halbe Miete

    Leg dir einen Empfangsbereich eines Array mit 50 Chars an (1 Char = 1 Byte) und gebe diesen Bereich an deinem FB2 an.

    Über die Auswertung kannst dir später gedanken machen..

    Gruss Zefix

  2. #12
    Avatar von Tigerkroete
    Tigerkroete ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2006
    Beiträge
    245
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Zefix.
    Ich komme grad von der Anlage, leider klappt es noch nicht. Ich habe jetzt erst Deinen Post gelesen.
    Ich hatte es auch gerade mit "char" versucht, da ich festgestellt hatte, dass ein "char" ja doch nur ein Byte belegt. Also hatte ich mit 20 Bytes vom Typ Char angelegt, nicht als Array. Eigentlich wollte ich einen String nehmen, aber dort kann man den Aktualwert nicht beobachten.
    Jedenfalls konnte ich nur im ersten Character ein Zeichen sehen. Es ging sehr schnell, aber es schien so, also würden alle Daten nacheinander nur in den ersten Charakter geschrieben. Es überschrieb sich also immer. Außerdem geschah überhaupt nur etwas, wenn ich in der Parametrierung die Enderkennung des Empfangstelegramms auf "Nach Ablauf der Zeichenverzugszeit" eingestellt hatte. Natürlich dachte ich zunächst, dass mein FB-Aufruf falsch sei und ich die Datenlänge falsch angegeben hätte, aber ich finde keinen Fehler.

    Code:
          L     20
          T     "DB_Wiegeeinheit".DW_Laenge_Daten
     
          CALL  "P_RCV" , "Waage (ausl)" //Aufruf von FB2+Instanzbaustein
           EN_R  :=TRUE                       
           R     :="ZM_Keine_Restmenge"
           LADDR :=368                        //Baugruppenadresse als INT
           DB_NO :=14                         //DB in dem meine Chars liegen
           DBB_NO:=0                          //Anfangsbyte
           NDR   :=M300.1
           ERROR :=M300.3
           LEN   :="DB_Wiegeeinheit".DW_Laenge_Daten  //Länge in Bytes
           STATUS:=MW310
    Nun zu Deinem Vorschlag. Warum gerade 50 chars? Einfach nur so, um sicher zu gehen? Und wie kann ich dann die Werte in diesem Array am besten beobachten?

    Danke und viele Grüße,
    Tigerkroete

  3. #13
    Avatar von Tigerkroete
    Tigerkroete ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2006
    Beiträge
    245
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    O.K., ich hab´s geschafft. Ich hatte die Zeichenverzugszeit zu kurz eingestellt.
    Also, ich haben nun 20 Character in denen sich mein Wert befindet. Das Komma bleibt zum Glück doch immer an der gleichen Stelle.
    Ich will nun mal schauen, wie ich die wichtigen Dinge als Integerwert in eine Int-Variable kriege.
    Ich werd´s bestimmt irgendwie nach ner Zeit und Hilfe durchforsten hinkriegen. Aber falls es jemand so ausm Stehgreif weiß, wie ich es am besten machen sollte, dann wäre ich für eine Antwort sehr dankbar.

    Viele Grüße und Danke,
    Tigerkroete

  4. #14
    Registriert seit
    27.08.2003
    Ort
    Schweitenkirchen
    Beiträge
    472
    Danke
    101
    Erhielt 73 Danke für 59 Beiträge

    Standard

    Hi,
    na Super geht doch

    Wenn dir INT reicht isses nicht tragisch.
    Du bekommst die Werte als ASCII, am besten suchst mal im Netz nach einer Tabelle. Kann man immer mal brauchen

    Von der ASCII Zahl eines deiner Bytes nur 48 abziehen und du hast den Wert dieses einen Zeichens.
    Beispiel:
    ASCII 0 entspricht 48 Dez.
    ASCII 1 entspricht 49 Dez.
    ASCII 2 entspricht 50 Dez. usw.

    Um nun mehrere Stellen wieder zu einem Wert zusammen zu fassen
    multipliziere ich je nach Stelle mit 10,100, oder 1000 usw.
    und addiere dann die Werte miteinander. Fertig...

    Viel Spass

    Zefix

  5. #15
    Registriert seit
    14.06.2005
    Beiträge
    76
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zahl minus 48
    auf Lokalbyte
    Zahl minus 48
    auf Lokalbyte
    ...usw
    BCD zu INT Wandlung - vor dem Komma
    itd
    dtr
    und auf Local-real
    bcd zu INT nach dem Komma
    itd
    dtr
    /100 (oder ... je nach dem wo das Komma ist)
    und auf Local-real
    beide Realzahlen addieren
    fertig

  6. #16
    Registriert seit
    14.06.2005
    Beiträge
    76
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Tschuldigung habe Scheisse geschrieben...

    Also BCD belegt ja pro Ziffer 4 Bit
    Höchste Ziffer LB0
    LW 0 = LB0_LB1

    Somit muss die Wandlung von BCD zu INT so lauten:
    L 0
    T LW0 //erst mal alles löschen .....

    L hoechste Ziffer, die Hunderte
    T LB 0 //und ablegen

    L jetzt die Zehner-BCD-Ziffer laden
    SLW 4 // und hoch schieben
    L Einer-BCD
    OW //und zusammenbauen
    T LB 1

    L LW 0
    BTI //jetzt kann das Wort gewandelt werden
    ...und jetzt steht im ACCU1 der Wert in INT (Wertebereich von 0...999)
    ITD //in 32 - bit wandel
    DTR // real...
    ... durch 1000 = hintern Komma, oder falls nur 2 Kommastellen, dann LB0=0
    und durch 100
    ... und so wies iss bleibts vorm Komma
    ... und dann plus

  7. #17
    Avatar von Tigerkroete
    Tigerkroete ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    01.05.2006
    Beiträge
    245
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Vielen Dank Leute, ich hab´s hinbekommen.

    Ich habe den Character in dem das ASCII zeichen steht geladen, die 48 abgezogen und mit ITD und DTR in eine Realzahl gewandelt.
    Dann je nach Stelle vor oder nach dem Komma mit z.B. 100 dividiert bzw. multipliziert und alle Realwerte addiert, fertig.

    Vielen, vielen Dank, für die tollen Hinweise.

Ähnliche Themen

  1. Waage von Sartorius über Profibus auslesen
    Von jensel im Forum Feldbusse
    Antworten: 5
    Letzter Beitrag: 03.05.2011, 15:50
  2. Antworten: 2
    Letzter Beitrag: 12.03.2008, 15:54
  3. Aus einer FB Struktur ein Wort auslesen
    Von ottopaul im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 11.07.2007, 00:39
  4. Daten aus einer S5 auslesen !!!
    Von ZeroCool im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.09.2005, 09:46
  5. Die Kalenderwoche aus einer CPU318 auslesen
    Von uwemiess im Forum Simatic
    Antworten: 9
    Letzter Beitrag: 19.04.2005, 16:01

Lesezeichen

Berechtigungen

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