Siemens
Digital Industries, Motion Control, Machine Tool Systems
8837
Follower:innenEigenen Dialog programmieren
24.06.2016, 11:17 Uhr
Hallo zusammen,
ich bin momentan dabei, einen eigenen Dialog zu programmieren, der aus unserem NC-Programm an unterschiedlichen Stellen aufgerufen wird, damit die Werker dort Messwerte eintragen können. Das funktioniert auch soweit, da das im Handbuch BE2 auch gut erklärt ist.
Dort habe ich auch den Hinweis gefunden, dass man über das Kürzel FCT eigene Funktionen, die in einer C++-Bibliothek ausgelagert werden, aus dem Dialog heraus aufrufen kann. Das Gerüst für so eine externe Funktion habe ich erstellt und der Dialog kann diese Funktion dann auch aufrufen.
Allerdings geht aus dem Handbuch nicht hervor, in welcher Weise die übergebenen Variablen in der externen Funktion verarbeitet werden können und wie die Übergabe-Konvention dort ist.
Kennt sich jemand mit diesem Thema aus und hat evtl. sogar eine Beispiel-Datei?
Herzlichen Dank,
Philipp
ich bin momentan dabei, einen eigenen Dialog zu programmieren, der aus unserem NC-Programm an unterschiedlichen Stellen aufgerufen wird, damit die Werker dort Messwerte eintragen können. Das funktioniert auch soweit, da das im Handbuch BE2 auch gut erklärt ist.
Dort habe ich auch den Hinweis gefunden, dass man über das Kürzel FCT eigene Funktionen, die in einer C++-Bibliothek ausgelagert werden, aus dem Dialog heraus aufrufen kann. Das Gerüst für so eine externe Funktion habe ich erstellt und der Dialog kann diese Funktion dann auch aufrufen.
Allerdings geht aus dem Handbuch nicht hervor, in welcher Weise die übergebenen Variablen in der externen Funktion verarbeitet werden können und wie die Übergabe-Konvention dort ist.
Kennt sich jemand mit diesem Thema aus und hat evtl. sogar eine Beispiel-Datei?
Herzlichen Dank,
Philipp
02.12.2019, 07:06 Uhr
Hallo Philipp,
ich stehe gerade vor der selben Herausforderung (Einbindung einer external function "FCT"). Hast du zu diesem Thema eine Lösung gefunden bzw. kannst du eine Beschreibung/ Beispiel zur Verfügung stellen?
Danke und beste Grüße, Jonny
ich stehe gerade vor der selben Herausforderung (Einbindung einer external function "FCT"). Hast du zu diesem Thema eine Lösung gefunden bzw. kannst du eine Beschreibung/ Beispiel zur Verfügung stellen?
Danke und beste Grüße, Jonny
02.12.2019, 11:34 Uhr
Hallo Jonny,
ich habe zwar nicht das Problem direkt gelöst, aber die Funktionalität der FCT-Funktion.
Ich habe dafür von Siemens selber einen Programm-Quellcode und die dazugehörige .com und .mpf bekommen. Der Quellcode wurde 2012 mal mit C++ geschrieben. Wenn man den in Visual C++ 2008 kompiliert, dann funktioniert der auf der Siemens-Steuerung über die FCT-Funktion (zumindest bei mir).
Nutzt man ein neueres VisualStudio, geht das nicht mehr.
Da ich darüber aber mittlerweile eine Abfrage an unser ERP-System stellen will, hänge ich da noch in der Luft. Die Funktion habe ich schon geschrieben, kann da aber nicht weiter testen, weil unsere Maschine sich nicht vernünftig am Netzwerk betreiben lässt. Da prüft Siemens seit geraumer Zeit, was da nicht richtig funktioniert.
Aber wir sind da in der Endphase, es soll bald weitergehen und dann kann ich die Abfrage auch vernünftig testen.
Was hast du vor? Soll ich die Dateien zur Verfügung stellen?
Gruß,
Philipp
ich habe zwar nicht das Problem direkt gelöst, aber die Funktionalität der FCT-Funktion.
Ich habe dafür von Siemens selber einen Programm-Quellcode und die dazugehörige .com und .mpf bekommen. Der Quellcode wurde 2012 mal mit C++ geschrieben. Wenn man den in Visual C++ 2008 kompiliert, dann funktioniert der auf der Siemens-Steuerung über die FCT-Funktion (zumindest bei mir).
Nutzt man ein neueres VisualStudio, geht das nicht mehr.
Da ich darüber aber mittlerweile eine Abfrage an unser ERP-System stellen will, hänge ich da noch in der Luft. Die Funktion habe ich schon geschrieben, kann da aber nicht weiter testen, weil unsere Maschine sich nicht vernünftig am Netzwerk betreiben lässt. Da prüft Siemens seit geraumer Zeit, was da nicht richtig funktioniert.
Aber wir sind da in der Endphase, es soll bald weitergehen und dann kann ich die Abfrage auch vernünftig testen.
Was hast du vor? Soll ich die Dateien zur Verfügung stellen?
Gruß,
Philipp
02.12.2019, 12:42 Uhr
Hallo Philipp,
wenn du mir die Siemens-Files zur Verfügung stellen könntest wär das der Hammer.
Mir geht es "nur" um die Einbindung einer generellen externen Funktion, wenn das mal funktioniert, sollte die Anpassung kein Problem sein.
Evtl. kannst du mir die Files über PN zukommen lassen.
Danke für deine Bemühungen und beste Grüße, Jonny
wenn du mir die Siemens-Files zur Verfügung stellen könntest wär das der Hammer.
Mir geht es "nur" um die Einbindung einer generellen externen Funktion, wenn das mal funktioniert, sollte die Anpassung kein Problem sein.
Evtl. kannst du mir die Files über PN zukommen lassen.
Danke für deine Bemühungen und beste Grüße, Jonny
03.02.2021, 08:32 Uhr
Hallo Zusammen!
Dieser Beitrag ist schon etwas länger her, aber evtl. wird es noch verfolgt.
Ich bin nämlich auch auf die Problematik gestoßen und komme da nicht weiter.
Allerdings möchte ich die Funktion für HMI Embedded kompilieren.
Über einen Beispielprojekt würde ich mich sehr freuen.
Danke
Roman
Dieser Beitrag ist schon etwas länger her, aber evtl. wird es noch verfolgt.
Ich bin nämlich auch auf die Problematik gestoßen und komme da nicht weiter.
Allerdings möchte ich die Funktion für HMI Embedded kompilieren.
Über einen Beispielprojekt würde ich mich sehr freuen.
Danke
Roman
03.02.2021, 09:22 Uhr
Hallo Roman,
was möchtest du denn erreichen?
Geht es dir nur um einen Dialog oder musst/willst du die FCT-Funktion benutzen?
Dafür habe ich die Funktionalität mittlerweile auf einer HMI-Advanced zum Laufen gebracht und auch ein entsprechendes
CPP-Projekt in VS2019.
Gruß,
Philipp
was möchtest du denn erreichen?
Geht es dir nur um einen Dialog oder musst/willst du die FCT-Funktion benutzen?
Dafür habe ich die Funktionalität mittlerweile auf einer HMI-Advanced zum Laufen gebracht und auch ein entsprechendes
CPP-Projekt in VS2019.
Gruß,
Philipp
10.02.2021, 08:30 Uhr
Hallo Roman,
was möchtest du denn erreichen?
Geht es dir nur um einen Dialog oder musst/willst du die FCT-Funktion benutzen?
Dafür habe ich die Funktionalität mittlerweile auf einer HMI-Advanced zum Laufen gebracht und auch ein entsprechendes
CPP-Projekt in VS2019.
Gruß,
Philipp
was möchtest du denn erreichen?
Geht es dir nur um einen Dialog oder musst/willst du die FCT-Funktion benutzen?
Dafür habe ich die Funktionalität mittlerweile auf einer HMI-Advanced zum Laufen gebracht und auch ein entsprechendes
CPP-Projekt in VS2019.
Gruß,
Philipp
Hallo Phillip,
ich möchte eine FCT-Funktion benutzen. Ich habe es in VS2008 mit Standarteinstellungen kompiliert, und eine Maske erstellt. Es macht auch irgendwas, allerdings was Falsches. Ich kann leider das Verhalten nicht nachvollziehen. Ich schätze, dass die DLL unter Windows laufen würde, aber auf HMI Embedded (NCU-Linux) bekomme ich es nicht hin.
Gruß Roman
10.02.2021, 09:04 Uhr
Hallo Roman,
leider ist das Testen etwas schwierig. Ich habe mir die ganze Sache erstmal in SinuTrain (kostenlose Version) aufgebaut. Da habe ich mir in die .dll an jeder markanten Stelle eine MessageBox eingebaut, die unter SinuTrain unter Windows dann auch angezeigt wird. Je nachdem, welche Messageboxes angezeigt wurden, konnte ich nachvollziehen, welcher Weg in der .dll ausgeführt wird.
Nachdem ich das Ding zum Laufen gebracht hatte, hat es auch auf der HMI geklappt. Aber wie gesagt, es war kein Embedded HMI. Ich habe aber letztens gelernt, dass auf der Embedded Dateinamen nur maximal 8 Zeichen vor dem Punkt haben dürfen und Buchstaben im Dateinamen müssen Kleinbuchstaben sein, sonst findet die Steuerung Dateien manchmal nicht.
Hilft dir das erstmal weiter?
Gruß,
Philipp
leider ist das Testen etwas schwierig. Ich habe mir die ganze Sache erstmal in SinuTrain (kostenlose Version) aufgebaut. Da habe ich mir in die .dll an jeder markanten Stelle eine MessageBox eingebaut, die unter SinuTrain unter Windows dann auch angezeigt wird. Je nachdem, welche Messageboxes angezeigt wurden, konnte ich nachvollziehen, welcher Weg in der .dll ausgeführt wird.
Nachdem ich das Ding zum Laufen gebracht hatte, hat es auch auf der HMI geklappt. Aber wie gesagt, es war kein Embedded HMI. Ich habe aber letztens gelernt, dass auf der Embedded Dateinamen nur maximal 8 Zeichen vor dem Punkt haben dürfen und Buchstaben im Dateinamen müssen Kleinbuchstaben sein, sonst findet die Steuerung Dateien manchmal nicht.
Hilft dir das erstmal weiter?
Gruß,
Philipp
10.02.2021, 11:46 Uhr
Danke Philip!
Ich versuche das mal auf SinuTrain mit Messageboxes.
Ich habe mal probeweise die DLL-Datei auf unter 8 Zeichen gekürzt. Leider bei gleichbleibendem Ergebnis.
Gruß Roman
Ich versuche das mal auf SinuTrain mit Messageboxes.
Ich habe mal probeweise die DLL-Datei auf unter 8 Zeichen gekürzt. Leider bei gleichbleibendem Ergebnis.
Gruß Roman
11.02.2021, 07:29 Uhr
Hallo Philipp,
in SinuTrain funktioniert die FCT problemlos - leider nicht auf der NCU.
Das Auskommentieren von
Groß Roman
in SinuTrain funktioniert die FCT problemlos - leider nicht auf der NCU.
Das Auskommentieren von
CODE
__declspec(dllexport)
sowie das Kürzen des DLL-Dateinamens auf <=8 Zeichen brachte leider nicht den gewünschten Erfolg.Groß Roman
22.03.2021, 12:34 Uhr
Hallo Roman,
ja, ich habe jetzt auch wieder mit der FCT rumgespielt.
I.d.T. funktioniert bei mir das Aufrufen der .dll unter SinuTrain problemlos. Aber auf der "echten" Maschine gar nicht.
Ich habe die .dll direkt auf c:\ gespeichert, aber die Maschine findet die nicht. Ich weiß nicht warum und ich weiß auch nicht weiter...
Hast du mittlerweile etwas hinbekommen?
Gruß,
Philipp
ja, ich habe jetzt auch wieder mit der FCT rumgespielt.
I.d.T. funktioniert bei mir das Aufrufen der .dll unter SinuTrain problemlos. Aber auf der "echten" Maschine gar nicht.
Ich habe die .dll direkt auf c:\ gespeichert, aber die Maschine findet die nicht. Ich weiß nicht warum und ich weiß auch nicht weiter...
Hast du mittlerweile etwas hinbekommen?
Gruß,
Philipp
25.03.2021, 12:36 Uhr
07.04.2021, 10:29 Uhr
Hallo Roman,
so, bei mir läuft das jetzt einwandfrei.
Ich habe nun eine Dialogmaske, in der in ein Feld per Barcode-Scanner der Barcode einer Laufkarte gescannt werden kann. Nach Abschluss des Scans ruft der Dialog meine .dll-Datei auf und übergibt dabei die eingescannte Nummer der Laufkarte. Daraufhin macht die .dll-Funktion eine Abfrage an das ERP und gibt die zu der Laufkarte gehörige SN zurück an die Maschine. Diese gibt der Dialog zurück an das NC-Programm und dort kann damit z.B. markiert oder eine entsprechendes Protokoll geschrieben werden.
Das ganze funktioniert, egal, ob die .dll-Datei auf der Maschine oder bei uns auf dem Netzwerk liegt.
Wunderbar! Es war ein langer Weg, aber letztendlich erfolgreich.
Meine Lösung: die .dll-Datei muss in Visual C++ 2008 kompiliert werden. Mit Visual Studio 2019 (gleicher Code) funktioniert es nicht. Warum? Dafür bin ich zu wenig C++-Programmierer. Vielleicht kennt sich ja jemand damit aus und kann das mal ergründen. Ich würde lieber mit dem aktuellen VS arbeiten als mit einer 2008er Version....
Gruß,
Philipp
so, bei mir läuft das jetzt einwandfrei.
Ich habe nun eine Dialogmaske, in der in ein Feld per Barcode-Scanner der Barcode einer Laufkarte gescannt werden kann. Nach Abschluss des Scans ruft der Dialog meine .dll-Datei auf und übergibt dabei die eingescannte Nummer der Laufkarte. Daraufhin macht die .dll-Funktion eine Abfrage an das ERP und gibt die zu der Laufkarte gehörige SN zurück an die Maschine. Diese gibt der Dialog zurück an das NC-Programm und dort kann damit z.B. markiert oder eine entsprechendes Protokoll geschrieben werden.
Das ganze funktioniert, egal, ob die .dll-Datei auf der Maschine oder bei uns auf dem Netzwerk liegt.
Wunderbar! Es war ein langer Weg, aber letztendlich erfolgreich.
Meine Lösung: die .dll-Datei muss in Visual C++ 2008 kompiliert werden. Mit Visual Studio 2019 (gleicher Code) funktioniert es nicht. Warum? Dafür bin ich zu wenig C++-Programmierer. Vielleicht kennt sich ja jemand damit aus und kann das mal ergründen. Ich würde lieber mit dem aktuellen VS arbeiten als mit einer 2008er Version....
Gruß,
Philipp
1 Besucher lesen dieses Thema (Gäste: 1)
0 Mitglieder: