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

Ergebnis 1 bis 9 von 9

Thema: Kop

  1. #1
    Registriert seit
    12.01.2010
    Beiträge
    24
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich bin Anfänger und habe ein kleines Problem. Ich möchte mit der Visualisierung von TwinCAT eine SPannung ausgeben. Nun habe ich den Programmtel dafür in KOP geschrieben. Also wenn der Schalter an ist, soll die Spannung rauskommen. Nur da mein Wert nicht BOOL sondern SINT ist, weiß ich nicht wie ich das schreibe? Der Fehler ist: "nicht boolscher Ausdruck VoltageOUT bei spule benutzen."

    Bei der visualisierung habe ich dann ein rechteckt wo ich bei der textausgabe die voltageout ausgeben möchte.
    Zitieren Zitieren Kop  

  2. #2
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Hi,

    woher bekommst du denn den Wert für die Spannung?
    Hast du ne Analogeingansklemme oder simulierst du den Wert nur?

    Mit SINT (8bit) bekommst du nur ganzahlige Werte hin... eine Spannung sollte wenigstens zwei Stellen nach dem Komma haben.
    Dazu kannst du den Datentyp REAL (32bit) nehmen. Damit bekommst du Kommazahlen.

    Kannst du auch schon ST?

  3. #3
    Tyler-Durden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.01.2010
    Beiträge
    24
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja ich bekomme den wert über eine analoge eingangsklemme. nur ich wollte das programm erstmal so schreiben und testen, was auch bis jetzt funktioniert hat da es nur um digitale eingänge und ausgänge ging. so konnt eich alles über schalter in der visualiserung simmulieren.
    danke für den REAL hinweis, hab ich mich verlesen mit SINT.
    also ich kenne ST und würde versuchen es da nachvollzieghen zu können wenn es einfacher/übersichtlicher ist.

  4. #4
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    OK das heißt du hast die Klemme im SystemManager integriert, oder?

    Naja, dann musst du erst einmal eine Variable für die Spannung deklarieren.
    Die dieser Variable steht dann dein Eingangssignal.
    Diese Variable musst du in der Visualisierung anzeigen.
    Das Ausgabefeld in der Visu muss natürlich dann auf diese Variable verweisen.

    Im Deklarationsteil oder in den Ressourcen unter global legst du die Variable an:
    Code:
        rEingangsSpg AT %I* : REAL; (* Eingangs Spannung *)
    In der Visu erstellst du dann ein Feld und schreibst unter VARIABLEN > Testausgabe die "rEingangsSpg" rein!

    Ich hoffe das klappt so... sollte zumindest ein Dankanstoß sein

    Gruß
    PS: Ich hoffe das geht so mit REAL ... sonst musst du mal schauen welchen DATENTYP deine Klemme liefert!

  5. Folgender Benutzer sagt Danke zu mike_roh_soft für den nützlichen Beitrag:

    Tyler-Durden (27.06.2011)

  6. #5
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Achja, und die Variable musst du auch noch im SystemManager mit deiner Klemme verknüpfen gelle
    Sonst kommt der Wert erst gar nicht in die SPS bzw. in die Variable!

  7. #6
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Ich kenne keine Klemme, welche einen REAL-Wert liefert...
    Vermutlich wirst du ein INT von der Klemme bekommen. Dieses musst du selbst skalieren (und in REAL umwandeln):

    0V = 0
    10V = 32767

    Code:
    rSpannung:= (Einganswert /32767.0)*10.0V
    P.S. Wenn du mit INT (Ganzzahlen) rechnest, und das Resultat in REAL (Gleitkomma) willst, immer .0 schreiben, sonst rechnet er nur in Ganzzahlen!

  8. #7
    Registriert seit
    06.06.2008
    Beiträge
    191
    Danke
    8
    Erhielt 11 Danke für 7 Beiträge

    Standard

    Also dann so?:


    Code:
        dintEingangsSpg AT %I* : DINT; 
        rEingangsSpg:  REAL;
    ST:
    Code:
        rEingangsSpg := DINT_TO_REAL(dintEingangsSpg)/32767.0 * 10.0 ;
    Wobei die Wandlung in REAL auch ohne die Funktion DINT_TO_REAL() gehen würde oder bringt er nen Fehler beim Compilieren?

    Gruß

  9. #8
    Registriert seit
    15.02.2011
    Ort
    Stromness, Scotland, UK
    Beiträge
    339
    Danke
    25
    Erhielt 34 Danke für 33 Beiträge

    Standard

    Ziemlich genau so, wobei du nur bei den präzisen Klemmen DINT nehmen musst, für die normalen (12 bit Auflösung) reicht INT. Dies musst du kurz im Datenblatt der verwendeten Klemmen prüfen...

    Die Konvertierung DINT_TO_REAL() ist überflüssig, wichtig sind die .0

  10. #9
    Tyler-Durden ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    12.01.2010
    Beiträge
    24
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    danke, hat mir sehr weitergeholfen =)

Lesezeichen

Berechtigungen

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