Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Interrupt zur Frequenzerzeugung?

antares
2008-07-28
2008-08-07
  • antares - 2008-07-28

    Hallo!

    Ich bin absoluter neuling in CoDeSys. Habe erst seid einer woche damit zutun und hänge grad nen bisschen..

    Hab eine 750-837 mit einem 2DO-Modul. Ich versuche die beiden Ausgänge auf eine max. Frequenz von 500Hz zu bekommen. Allerdings habe ich damit Probleme.

    Ich habe versucht mit dem Blink-Baustein die Frequenz zu erzeugen, allerdings ohne Erfolg! Habe mir die Ausgänge auf nem Oszilloskop angeschaut.. Die Werte waren sehr schlecht!! Keine reproduzierbaren Werte und die Frequenz lag bei ca. 250Hz (schwankend!).

    Dann hatte ich mir überlegt das ganze über eine Task zu machen. Habe eine hohe Prio zugeteilt, allerdings war wieder nicht der gewünschte Erfolg da!

    Da in der Beschreibung aber steht, dass 5kHz drin sind, muss das ja zu machen sein! Das nächste was mir jetzt einfallen würde, wäre das Nutzen von Interrupts. Aber das hab ich noch gar nicht hinbekommen, da ich dafür noch nicht tief genug in dem System stecke.

    Kann mir vielleicht jemand von euch weiterhelfen?

    Hat einer ne Idee dazu?

    Bin dankbar für jede Antwort!!

    ciao

     
  • Chräshe - 2008-07-28

    Hallo antares,

    Deine CPU gehört eher zu den kleinern Kapazitäten. Bei etwas Code liegt die Zykluszeit schnell bei 2-3ms.

    Zum ein- und ausschalten sind mindestens 2 Zyklen erforderlich.

    Den Rest kannst du dir ausrechen…

    Die Ausgangsklemme kann vermutlich die 5kHz ausgeben, aber nur wen die CPU davor diese so schnell ansteuern kann.

    Was hast du für eine Anwendung?

    Wahrscheinlich würde dir ein PWM- Modul helfen.

    Gruß

    Chräshe

     
  • antares - 2008-07-29

    Hallo!

    Danke für deine Antwort!

    Ich habe jetzt mal alles aus dem Program rausgeschmissen..

    es wird nur noch die eine Task aufgerufen, die zyklisch jede ms eine Funktion Aufruft.

    aber ich bekomme wieder nur 250Hz raus..

    Gibt es da nicht eine Möglichkeit nen Interrupt irgendwie für zu nutzen?

    Ich muss mit dem System einen Schaltschrank überprüfen und mit Vorgabewerten bestimmte Dinge simulieren. Deshalb ist die Frequenz für mich unheimlich wichtig!

    Gibt es da nicht eine Möglichkeit?

    ciao

     
  • antares - 2008-07-29

    Bin jetzt schon die ganze Zeit am Suchen und Testen.. aber es gelingt nicht!

    Ich setze jetzt nur im PLC_PRG den Ausgang TRUE und FALSE..

    Wenn ich das ganze ohne irgendwelche Zeitvorgaben ausführe, bekomme ich auch nur eine Frequenz von ca. 250Hz!

    Habe ich denn überhaupt eine Chance mit der 750-837 so eine Frequenz zu erzeugen?

    Oder kann ich das sein lassen?

    Danke!

    ciao

     
  • antares - 2008-07-29

    habs jetzt geschafft auf knapp 500Hz zu kommen!

    Der ganze Block hier besteht aus folgenden Komponenten:

    • 1* Conroller 837

    • 1* 2DO 750-506

    • 3* 8DI 750-430

    • 6* 4DI 750-408

    • 1* 2AI 750-492

    • End-Modul

    Ich habe nunmal die ganzen DI´s und AI´s abgeklemmt und nur die DO´s dran gelassen.

    schon hatte ich die 500Hz!

    Hab mal nen bisschen nachgelesen..

    Über bestimmte Objekte z.B. 0x6006 (Interrupt Mask Any Change 8-Bit) wird ja das Senden auf den Bus gesteuert..

    Ich vermute mal, dass die Geschwindigkeit wohl darunter leidet, da das ja auch ein paar Module sind, die hier verbaut werden müssen..

    Wie setze ich denn diese Interrupts?

    Hier steht:

    Beispiel: Sub-Index 0 = 1, Sub-Index 1 = 65 = 0x41

    --> nur Kanal 1 und 7 übertragen ihre Daten bei Änderung

    Wie wende ich das an?

    Danke!

    ciao

     
  • antares - 2008-07-31

    moin!

    ich sitze hier immernoch an dem Aufbau..

    Habe mir mal mit nem CAN-Analyzer angeschaut, was die Wago alles so übern CAN raus schickt..

    Habe mit erschrecken festgestellt, dass die meinen Frequenzausgang bei jedem Takt sendet! Und das ist noch nicht alles.. ich bekomme bei jedem Takt auch noch eine error-message gesendet.. also über den bus..

    wie kann ich das unterbinden?

    Danke für die Hilfe!!

    ciao

     
  • antares - 2008-08-07

    Da das mit dem Digitalausgang nicht funktioniert hat, will ich das nun mit einer pulsweiten klemme realisieren.

    Dazu habe ich folgendes Modul: 750-511/000-001

    Da ich noch blutjunger anfänger bin, weiss ich nun nicht, wie ich das Modul programiere!

    Hier steht:

    "Als Registerbereich wird bei der Pulsweiten Ausgangsklemme ein logischer Datenbereich bezeichnet. Dieser ist wortweise organisiert. In Register 2 wird die Periodendauer eingestellt, in Register 3 die Grundfrequenz.

    Der Wert dieses Registers wird im E²PROM der Klemme abgespeichert und enthält den Initialisierungswert der Periodendauer nach einem POWER ON Reset."

    Wie kann ich denn auf dieses Register zugreifen?

    In das Register müssen ja die Werte eingetragen werden, damit die Frequenz erzeugt wird.

    Wie mache ich das?

    Danke für die Antworten!

     
  • Oberchefe - 2008-08-07

    Klemme einfügen (evtl. Adressen neu berechnen), der Rest sollte klar sein:

    IMG: 750

     

Log in to post a comment.