Oscat auf 750-837 CANopen-Controller

Begonnen von Dorfmeister, 12. November 2007, 09:35:21

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Dorfmeister

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

hugo

was bekommst du den für meldungen fehler warnungen?

hugo

bist du sicher das der baustein auch aufgerufen wird?

Dorfmeister

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.

hugo

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.

hugo

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

Dorfmeister

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

Dorfmeister

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.

Dorfmeister


hugo

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

Dorfmeister

Danke, jetzt funktioniert es. Ich bekomme die Zeit in ms

Dorfmeister

Korrektur, Bekomme die Zeit im normalen Format m s ms

hugo

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

Dorfmeister

Ja, ich habe gerade mal folgendes ausprobiert:

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

???


hugo

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;