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

Ergebnis 1 bis 8 von 8

Thema: DINT in REAL Bereich 0 bis 4000

  1. #1
    Registriert seit
    20.10.2005
    Beiträge
    62
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi, ich habe einen Wertebereich von 0 bis 4000 als DINT diesen möchte ich als Real über eine AO Baugruppe raussicken. Leider kommt da momentan kein vernünftiger Wert an. Die Werte die ankommen verhalten sich logarithmisch statt linear.

    Ich möchte halt konkrete Werte zwischen 0 und 4000 senden aber auch genauso emfangen.

    Ich hab es schon mit einem FC105 Scale probiert und dem FC 106 Unscale.

    Zur Erklärung ich bekomme über eine AI Baugruppe einen Wert den ich mit dem FC105 skaliere, sodaß dieser zwischen 0 und 4000 liegt. Nun habe ich das Problem das ich den beim rausschicken über die AO Baugruppe nicht wieder so bekomme.

    AO und AI sind auf 4 bis 20 mA eingestellt.
    Senden und letztendlich Empfangen tut das Signal eine ABB MP 200 auch über 4 bis 20 mA.

    Was kann es sein? Hab mal gelesen das die Siemens AO nur INT können kein Real. Simmt das? Das Problem ist das die ABB MP 200 nur Real empfang kann. Gut ich könnte dort den Wert wandeln aber nur mit Umständen.
    Zitieren Zitieren DINT in REAL Bereich 0 bis 4000  

  2. #2
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Ist Dein AO genau dasselbe Wert was Du als AI empfängst? Wenn so, dann brauchst Du den PEW Wert in dem PAW Wort zu kopieren.

    Sonst brauchst Du nur Dein REAL, was Du mit FC105 auf 0 - 4000 skaliert hast, mit FC106 wieder in einem INT umzuwandeln und auf Dein AO schreiben. Dein ABB MP 200 sieht nur ein 4 - 20 mA Signal. Ob er dieses Signal danach als REAL oder INT behandelt ist irrelevant.

    Dein logarithmisches Verhalten des AOs kommt davon dass der AO nur den unteren Wort des REALs liest und dies verhält sich eben so.

  3. #3
    Registriert seit
    20.10.2005
    Beiträge
    62
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hi, das mit dem unscale FC106 habe ich schon probiert, leider bekomme ich es nicht skaliert.

    Ich gebe dir mal den wichtigsten Auszug aus meinem Quelltext.

    Im FC1 hole ich den Wert über die AI.
    Im FC2 gebe ich den Wert wieder über die AI.

    Der Wertebereich bleibt am AI wie am AO gleich. Nur im Programm benutze ich die einkommenden Werte zur Steuerung. Bereich 0 bis 4000.

    Hier der die PEW AI im FC1:

    1NW:

    L "AI1"
    ITD
    DTR
    L 5.500000e+001
    -R
    L 9.999999e-001
    *R
    RND
    T MW 86

    2NW:

    U "false"
    = L 12.0
    BLD 103
    CALL "FC105_Analogw_skalieren"
    IN :=MW86
    HI_LIM :=4.000000e+003
    LO_LIM :=0.000000e+000
    BIPOLAR:=L12.0
    RET_VAL:=MW82
    OUT :=#WBD_out
    NOP 0

    3NW:

    L #WBD_out
    RND
    T MD 178

    Wie muss ich den Wert jetzt im FC106 descalieren. Hab mit HI_LIM und LO_LIM schon rumprobiert, leider kein Erfolg.

    mfg
    Falk

  4. #4
    Registriert seit
    07.09.2006
    Ort
    nördl. Ruhrgebiet
    Beiträge
    46
    Danke
    37
    Erhielt 14 Danke für 7 Beiträge

    Standard

    Hallo Falk,

    zuerst einmal was soll der Quatsch
    L "AI1"
    ITD
    DTR
    L 5.500000e+001
    -R
    L 9.999999e-001
    *R
    RND
    T MW 86
    .
    .
    L #WBD_out
    RND
    T MD 178
    Dein PEW enthält den digitalisierten Wert des Stromsignals (0..27648 Einheiten) als 16Bit-Integer-Wert. Es reicht wenn du das PEW direkt an den Aufruf FC105 dranschreibst oder über den Umweg des
    L PEWxx
    T MW86

    In der Lokalvariablen #WBD_out steht dann der skalierte Wert im REAL-Format (0.0 .. 4000.0 entsprechend dem anliegenden Stromsignal).

    Am Aufruf der FC106 schreibst du dein #WBD_out (ohne Umwandlung in mittels RND in DINT) an den Eingangsparameter "IN". Die Grenzen HI_LIM und LO_LIM beschreibst du mit 4000.0 und 0.0 wie beim Aufruf der FC105.
    Am Ausgang der FC106 steht dann im MW xx (bzw. PAW xx) der Wert 0..27648 (bipolar='false') bzw. -27648..+27648 (bipolar='true').

    Schau dir aber ruhig mal die Hilfe zu den Standartfunktionen FC105 und FC106 an...

    Gruß willi

  5. #5
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 24 Danke für 21 Beiträge

    Standard

    Hi Falk,

    Willi war schon ein Tick schneller, aber im Prinzip hat er alles gesagt, oder versuchst Du in NW1 den Eingangswert zu skalieren? Wenn so, dann sag uns was für Werte Du rein kriegst und was Du haben willst (und warum Du es nicht mit FC105 hin kriegst), denn das sieht ziemlich wild aus!

    Das wichtigste aber ist das FC106 der genaue Gegenteil zu FC105 ist. Weil der Ausgang von FC105 ein REAL ist braucht FC106 als Eingang (IN) auch ein REAL. Wenn Du FC106 mit einem DINT futterst, wirst Du sicherlich Schrott herauskriegen!
    Geändert von RMA (19.09.2006 um 16:29 Uhr)

  6. #6
    Registriert seit
    20.10.2005
    Beiträge
    62
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Moin, das hatte ich auch schon alles ausprobiert! Problem ist ich arbeite mit dem Wert im Programm, sodaß ich diesen Skalieren muss. Es ist nicht genüge getan den Wert durchzuschleifen ich muss den bearbeiteten Wert benutzten.

    z.B. kommt ein konkreter Wert aus der ABB von 2000 diesen bekomme ich als 4 bis 20 mA Signal rein oder als 0 bis 27648. Das ist soweit ok, da ich mit diesem Wert gut arbeiten kann. Nur sollte der FC106 dann am Ausgang entweder wieder 2000 oder bei einer Berechnung auch diesen Wert mal 0,9 Anzeigen.

    Klar ist das der konkrete Wert 2000 am Ausgang des FC105 nicht 2000 ist. Sondern zwischen 0 bis 27648 liegt. Oder irre ich? Das ist aber nicht das Problem sondern am Ausgang des FC106 also PAWxx soll dann 2000 oder bei Berechnung 1800 stehen (Wert mal 0,9).

    Was muss ich dazu machen?

  7. #7
    Registriert seit
    07.09.2006
    Ort
    nördl. Ruhrgebiet
    Beiträge
    46
    Danke
    37
    Erhielt 14 Danke für 7 Beiträge

    Standard

    Wenn du von der ABB den Wert 2000 bekommst entspricht das einem Stromsignal von 12mA und somit 13824 Einheiten am PEW (0..4000 physikalischer Wert = 4..20mA = 0..27648 Einheiten am PEW), Richtig?

    Diese 13824 Einheiten ergeben nach dem FC105 skaliert wieder deinen physikalischen Wert von 2000.0 (im #WBD_out).

    Diesen #WBD_out nutzt du nun zu einer Berechnung bspw.

    L #WBD_out // 2000.0
    L 9.000000e-001 // * 0.9
    *R
    T MD100 // = 1800.0

    das MD100 schreibst du dann an den Eingangsparameter IN des FC106.
    Die 1800.0 ergeben dann am PAW einen Wert von 12442 Einheiten, die ca. 11,2 mA entsprechen (vorausgesetzt deine Ausgangskarte ist auf 4..20mA konfiguriert).

  8. #8
    Registriert seit
    20.10.2005
    Beiträge
    62
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja genau so ist es. OK dann werde ich das nochmals probieren. Vielen Dank bis hierhin erstmal.

Ähnliche Themen

  1. DB mit Real in DB mit Dint umwandel
    Von Rauchegger im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 09.03.2011, 12:05
  2. Berechnung DINT oder REAL
    Von mitchih im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.01.2010, 09:24
  3. 4000
    Von IBN-Service im Forum Stammtisch
    Antworten: 5
    Letzter Beitrag: 04.02.2008, 07:15
  4. Real oder DINT in Integer
    Von rene im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 02.07.2007, 15:31
  5. Antworten: 7
    Letzter Beitrag: 29.08.2006, 18:40

Lesezeichen

Berechtigungen

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