OSCAT Libary 311 erzeugt in der TwinCat PLC Expression too complex Fehler

Begonnen von bergheimerfuchs, 24. September 2012, 15:46:19

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

bergheimerfuchs

Hallo zusammen,

habe bei mir ein grosses Problem.
Ich habe als Entwicklungsumgebung für meine Beckhoffkomponenten eine Urversion von TwinCat X64 (Tc211x64Engineering_2110_2034) benutzt. Als ich Anfangs mit der libery von OSCAT 311 Version in die TwinCat PLC eingefügt habe gab es keine Probleme beim übersetzen. Nun habe ich mir die neue Version von TwinCat herunter geladen und nun kommt beim Übersetzen die Fehlermeldung ERROR 3117: ??? (-1): Expression too complex. No more register available.
Nun kann ich auch leider meinen CX9010 nicht mehr mit dem Programm bespielen.
Viele sagen jetzt sicher dann benutze das alte Programm, dass geht leider nicht , weil man mit dieser Version leider kein zweites SPS Bootprojekt unter dem Systemmanager einstellen kann. Die anderen Versionen von Beckhoff gehen leider auch alle nicht habe ich schon getestet . Diese haben andere Bags die das Safetyfile aufspielen auf eine EL6900 nicht ermöglichen.
Zu guter letzt habe ich beim Support von Beckhoff nachgefragt. Dort haben Sie mir am Anfang nicht geglaubt, nach Wochenlangen hin und her hat mir ein Entwickler geschrieben, (ich zitiere)

ich habe von unserem Support gehört, dass Sie Probleme bei der Verwendung der OSCAT Lib in Zusammenhang mit TwinCAT haben. Folgendes haben wir festgestellt:
-   Sollte nur auf den ARM Plattformen auftreten.(Habe ich)
-   Bei ARM ist die Anzahl der Register die vom Compiler verwendet werden können begrenzt.
-   In älteren Version hat der Compiler das nicht streng geprüft. Ob und welche Konsequenzen das gehabt haben mag, kann nur 3S beantworten.
-   In neueren Compilerversionen werden jetzt die Register kontrolliert. D.h. wenn die Anzahl der vom Compiler her notwendigen Register größer ist als die zur Verfügung stehenden, wird der Compile mit Fehler abgebrochen.
-   Einzige Chance besteht in einer Änderung des Codes (d.h. in der OSCAT Lib). D.h. es müssen an den Stellen mit sehr komplexen Ausdrücken Zwischenvariablen eingefügt werden.

Das gleiche Problem besteht bei der OSCAT Basic 333

Wo soll ich da in der OSCAT Lib ansetzen? Habt Ihr Anregungen?
Vielen Dank
Gruss bergheimerfuchs

peewit

hallo

ist das denn eine fehlermeldung die zu einem verursacher (baustein) führt
oder gibt es nur eine abbruchmeldung ?

wenn du die oscat.lib als projekt lädst und kompilierst, bekommst du dann auch schon fehlermeldungen

wenn ja, dann müsstest du durch gezieltes einzelnes bzw. gruppenweise löschen von beusteinen und kompilieren schauen ab wann der fehler weg ist. somit kannst du den (die) fehlerverursachenden bausteine finden

bei der anpassung der bausteine  können wir dir sicherlich helfen, ab finden musst du sie selber


bergheimerfuchs

->Es ist eine reine Abbruchmeldung
wenn du die oscat.lib als projekt lädst und kompilierst, bekommst du dann auch schon fehlermeldungen
->ja die kommt bei einem neuen Projekt, wo ich nur die OSCAT lib lade und kompiliere.
Jetzt schau ich mal wenn ich Bausteine/Gruppen lösche was passiert.



bergheimerfuchs

So jetzt läuft es, habe die lib so zusammengestrichen, dass nur die Funktionen vorhanden sind, die ich in meinem Projekt brauche.
Danke nochmal. ;D

master

Hallo,

habe nun den gleichen Fehler 3117 mit der Oscat basic 333 lib.
Hast jemand den Fehlerverursachenden Baustein schon gefunden?

Gruß
Markus

schalck

Hi (sorry for my english)

I have that same problem when i try to build the OSCAT, and as far as i can see it is the FB SCALE_R there are a problem with...
Anybody know how to remove that from the build in TwinCat2?

Best regards
Michael Schalck

Cojote

Guten Abend,

ich habe ebenfalls den Fehler beim Kompilieren.

TwinCat2, CX9020 (ARM Core), Win CE,...

Der Baustein, der vor der Fehlermeldung angegeben ist, ist der bereits erwähnte Scale_R. Dieser müsste aus der Oscat Basic 333 kommen. Gefunden habe ich den Baustein aber in der .lib noch nicht um diesen zu löschen, ich weiss auch nicht ob das rasam ist, falls andere darauf zugreifen. Ich habe auch nocht nicht herausgefunden, wie ich einzelne Bausteine aus der eingeundenen Bibliotheke abwähle/lösche; kann nu gesamte Bibliothek löschen.

Erbitte Hilfe.

MfG
Cojote

Cojote

Abend die 2.

wenn ich die Oscat_Basic_333 direkt kompiliere tritt der Fehler nur auf, wenn ich in den Recourcen eine CX (ARM) anwähle.-> Deckt sich mit der Aussage des Beckhoff Technikers.

Ich fummel mal morgen dran rum und gebe bescheit wenn und wie Problem gelöst wurde.

MfG
Cojote

Aikapan

Gibt es schon Fortschritte?

Ich wollte sie heute in Twincat einbinden -> genau dieser Fehler..

Christian_EWW

Hallo.

Ich hatte das Problem auch, es liegt am SCALE_R Baustein.
Wenn man ihn folgendermaßen ändert, läuft er problemlos.

IF I_LO = I_HI THEN
   SCALE_R := O_LO;
ELSE
   TEMP := LIMIT(I_LO, X, I_HI);
   SCALE_R := (O_HI - O_LO) / (I_HI - I_LO) * (TEMP - I_LO) + O_LO;
END_IF;


(* revision history
hm   18. may. 2008   rev 1.0
   original version

hm   13. nov. 2008   rev 1.1
   corrected formula for negative gradient

hm   11. jan 2011   rev 1.2
   avoid division by 0

Christian Kreuzer
03.März 2013 rev 1.3
   splitted formula to avoid error "expression to complex" at Beckhoff ARM devices
*)


TEMP ist von Typ REAL

Viel Spaß damit,
Christian_EWW

ricko_niko

Hallo in die Runde,

ich möchte eine Hausautomation mit einer Beckhoff CX9020 machen und möchte die Oscat Bausteine dafür nutzen.

Ich habe das gleiche Problem wie hier beschrieben und habe den Baustein wie oben beschrieben abgeändet (hört sich auch plausibel an)jedoch funktioniert es nicht mit dieser Änderung.

Es kommt folgender Fehlercode: Projektdatei korrupt 

>>wenn ich sie trotzdem lade kommt die Meldung : Die Bibliothek Basic wurde mit einer neueren Version erstellt.

Wenn jemand noch eine Idee bin ich über eine Antwort dankbar.

mfg
Enrico





Pessimister