OSCAT Forum

Home Automation => SPS-Hardware => Thema gestartet von: Dorfmeister am 12. November 2007, 09:35:21

Titel: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 09:35:21
Hallo,

ich bin gerade dabei einige FBs aus der OSCAT-Lib auf dem WAGO 750-837 CANopen-Controller zu verwenden. Dabei habe ich festgestellt, dass z.B. der FT_PID ohne zu murren auf das Zielsystem geladen wird dort aber nicht läuft.
Was mach ich falsch, bzw. kann mein Zielsystem den Baustein überhaupt verwerten?

Gruß

Jürgen
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 11:22:14
was bekommst du den für meldungen fehler warnungen?
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 12:12:59
bist du sicher das der baustein auch aufgerufen wird?
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 12:17:20
Ich bekomme weder Warnings noch Errors. Habe das Problem weiter eingegrenzt und festgestellt, dass die Funktion T_PLC_US nur eine 0 zurückliefert. Ich vermute der 750-837 hat auch garkeine RTC. Habe inzwischen den PID-Regler aus der util.lib verwendet, dieser funktioniert.
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 12:41:11
die t_plc_us() benutzt auch gar keine RTC, sie liest den hardware timer der sps aus.
jede sps hat so einen hardware timer sonst wäre sie auch gar keine sps.
bei wago wirtd der befeht time() zum auslesen dieses timewrs benutzt.
der sps timer ist ein 32 bit zähler der millisekunden vom start an nach oben zählt.

mich würde gerne interessieren warum das auf der 837 nicht funktioniert.
der spos timer ist streng von der iec vorgeschrieben und auch auf allen sps en vorhanden.
lkannst du bitte mal prüfen ob die funktion time() funktioniert und dieses millisekunden  timer ausliest.
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 12:46:34
kann nes sein das dein controller (750-837) keine dword unterstützt?
welche version des codesys verwendest du?
hast du die aktuelle firmware des conrtrollers
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 13:03:56
Bei Verwendung der Funktion TIME liefert mir Codesys den Fehler 4338 "Baustein 'TIME' hat keine echten Eingänge" zurück.
Codesys-Version: 2.3.4.7
Firmware:            1.11
HW-Version:          7
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 13:06:10
Den Controller habe ich vor zwei Wochen direkt von WAGO geliefert bekommen, denke die Version ist aktuell. Deiner Vermutung mit dem DWORD werde ich mal weiter nachgehen.
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 13:32:36
Das Addieren zweier DWORDS klappt
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 14:54:33
time kannst du nicht im cfc editor anwenden weil eine funktion ohne eingang dort aus welchem grund auch immer nicht zulässig ist.
time() kannst du nur im st verwenden
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 16:04:58
Danke, jetzt funktioniert es. Ich bekomme die Zeit in ms
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 16:06:06
Korrektur, Bekomme die Zeit im normalen Format m s ms
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 16:27:03
ja das ist richtig, es ist ein ms 32 bit wert, den du als m, s, ms angezeigt bekommst
aber dann muss auch unsere t_plc_us() diesen wert auslesen koennen
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 17:07:57
Ja, ich habe gerade mal folgendes ausprobiert:

systime:=TIME();
tx:=TIME_TO_DWORD(systime)*1000;
es funktioniert
-------------------------------------
tx:=T_PLC_US();
funktioniert nicht;

 ???

Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 17:10:54
probier bitte mal folgende zeile aus das ist exact der code den wir in t_plc_us verwenden:

T_PLC_US := TIME_TO_DWORD(TIME())*1000;

Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 17:11:58
der einzige unterschied ist das time() als argument in einer funktion verwendet wird was ja auch zulässig ist.
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 17:21:28
Habe es ausprobiert, es funktioniert nicht
genau wie bei
tx:=T_PLC_US();
Rückgabewert ist konstant 0
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 17:25:17
dann solltest du auf einen neueren compiler updaten weil dann sicherlöich etliches probleme machen wird.
wir werden für ältere compiler diese funktion anders schreiben damit es funktioniert.
eine saubere lösung ist das aber nicht.
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 12. November 2007, 17:33:11
anbei findest du eine zwischenversion 234 die die geänderte routine t_plc_us und t_plc_ms enthält
danke nochmals für deine inputs

[gelöscht durch Administrator]
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 12. November 2007, 17:34:27
Vielen Dank, ich werde es testen und Dir an dieser Stelle davon berichten
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: hugo am 24. November 2007, 07:14:37
hat die geaenderte funktion t_plc_ms() bei dir nun funktioniert?
wenn ja wuerden wir das gerne in der naechsten release freigeben
Titel: Re: Oscat auf 750-837 CANopen-Controller
Beitrag von: Dorfmeister am 25. November 2007, 19:10:06
Hallo, wurde dummerweise aus dem Projekt rausgerissen. Werde mich leider erst Ende Dezember dazu äussern können.
Viele Grüße
Jürgen