PDA

View Full Version : TwinCat, LREAL und Zeitdifferenz



o-bi-wan-knobi
20.03.2008, 16:38
Huhu!
Ich benutze eine BC5250 mit nachgeschaltetem KL2542 (Motorklemme). Die Motorklemme zählt nur die Impulse, die vom Motor-Impulsgeber kommen. Die möchte ich natürlich in eine Drehzahl umwandeln. Zu diesem Zwecke will ich die Impulse pro abgelaufener Zeit messen.
So weit so gut :-)

Um an eine Zeitdifferenz zu kommen, wollte ich den Befehl GetSystemTime aus der Bibliothek TCbase.lib nutzen. Binde ich die allerdings ein, erscheinen beim Übersetzen mehrere Fehlermeldungen Fehler 3610: FW_...: 'LREAL' wird nicht unterstützt.

Ist wahrscheinlich ein Anfänger-Fehler, aber immerhin bin ich das ja auch.
Sollte mir jemand helfen können, wäre ich sehr dankbar.
Mit freundlichen Grüßen
Mathias

zotos
20.03.2008, 16:42
Nicht jedes Target unterstützt den Typ LREAL (ein 128Bit langes Real) bist Du sicher das Du die richtige Lib zu dem Target hast?

o-bi-wan-knobi
20.03.2008, 16:53
Hm! Wie gesagt: Anfänger.
Definiere Target :confused:
Hab auch mal versucht, den SysTick auszulesen, um da was zu erreichen... Klappt auch nicht, da bei Einbinden der Bibliotheken eine Variable nicht definiert ist :-(

Mathias

zotos
20.03.2008, 16:55
Ist die Lib auch für den BC5250 gedacht?

o-bi-wan-knobi
20.03.2008, 17:04
Hm, die Bibliotheken, die ich für GetSysTick eingebunden habe, heißen TCBaseBCxx50.lbx und TCSystemBCxx50.lbx. Hört sich also danach an. Bekomme aber die Fehlermeldungen
4001:Persistand_Data: Variable F_GENERIC nicht deklariert.
4263:Persistand_Data: Zahl, 'END' oder 'END_CASE' erwartet.

Wie bekomme ich denn heraus, ob die BC5250 mit einer Bibliothek zusammenarbeitet?
Mathias

zotos
20.03.2008, 17:52
...
Um an eine Zeitdifferenz zu kommen, wollte ich den Befehl GetSystemTime aus der Bibliothek TCbase.lib nutzen.
...

Ich glaube nicht das Du GetSystemTime aus der TCbase.lib hast, eher aus der TCSystem.lib im Infosys von Beckhoff habe ich auf die Schnelle auch nur GetSystemTime für PC und CX Systeme gefunden (das würde dann nicht auf den BC passen).

trinitaucher
21.03.2008, 09:15
Soweit ich weiß unktionieren auf BCxxxx nur die Biblheken mit der Endung .lb6.
Zu den Fehlermeldungen:
Die erste deutet auf einen fehlenden Datentyp oder eine fehlende Funktion (wahrscheinlich, weil die passende Bibliothek fehlt oder das gesuchte nicht enthält).
Die zweite Meldung ist ein Programmierfehler (CASE-Schleife).

Jush
22.03.2008, 16:15
Hallo,

hier ein Alternative:

wie oft willst Du eine neue Drehzahl haben, und wie viele PPR hast Du?
Wenn Du eine stabile Zykluszeit hast, und hohe PPR, kannst Du Impulse zwischen jedem Zyklus zaehlen, und dann die Drehzahl ausrechnen.
Alternativ mit einem Timer.

ge_org
22.03.2008, 16:29
Bei einem BC9000 kannst Du über %MB4088 bis 4091 Zykluszeitmessung durchführen. Auflösung 1ms/digit.
Proboers mal bei Dir, vielleicht hauts hin.
Georg

o-bi-wan-knobi
25.03.2008, 13:52
Ich glaube, mir fehlen da einige Grundkenntnisse! Anfänger, halt. Aus Dortmund auch noch :-)
Zum Thema lb6: Die Standard-Bibiliothex ist doch auch eine lbx.
Und wegen %MB4088: Hast du da ein (Mini) Beispielprogramm, wie ich das einbinde? Leider steht dazu nix in der Hilfe.
Oder habt ihr ein Tutorial, wie man als Autodidakt etwas mehr über TwinCat lernen kann?
Aber danke erstmal bis hierhin für die nette Hilfe!
Mathias

drfunfrock
25.03.2008, 14:36
Hol dir das Info-System herunter (120Mb) und installier dir das. Dann nimm dir ein bisschen Zeit und lese.... :icon_mrgreen:

ge_org
25.03.2008, 18:19
Einbinden von PLCSystemBC.lb6 müsste reichen für GetSysTick. Für alle BC ist .lb6 nötig. Information System ist auch hilfreich. Timer und ET (Elapsed Time für die Zeitdifferenz) auslesen ist auch hilfreicher Vorschlag.
%MB einfach einbinden in Globale Variablen zyklusdigits AT% MD4088, wenn sich Online beim Beobachten was ändert an zyklusdigits funktioniert es nicht nur bei einem BC9000 sonder auch bei deinem BC (MD deshalb weil beginnend ab MB4088 4 Bytes belegt werden).
Georg

drfunfrock
26.03.2008, 07:06
1) Man kann im Library-Manager sehen, was aus der Bibliothek exportiert wird.
2) Ich würde auch einen FB vom Typ TON instanzieren und ET auslesen. Das dürfte bei weitem, die einfachste Lösung sein.