# Werkzeugdaten mit Delphi von Sinumerik auslesen



## herik84 (23 Juli 2019)

Hallo erstmal,

ich stehe aktuell vor einem Problem, und hoffe ihr könnt mir helfen. 

Kurze Erklärung: 
Ich habe ein Programm entwickelt mit dem ich Werkzeugdaten verarbeite. Das Programm ist in Delphi geschrieben.
Bisher ist dieses Programm nur bei der Haidenhainsteuerung zum Einsatz gekommen. Nun möchte ich aber den nächsten Schritt gehen, und die Siemenssteuerung noch einbinden.

Nun zu meinem Problem. 
Schlicht und einfach suche ich einen Weg um schnell und sicher an die Werkzeugdaten der Sinumerik zu kommen. 

Gewisse Ansätze habe ich schon. 

1. Über die Funktion "Rüstdaten sichern"
Problem hierbei ist es, dass hier der Bediener das manuel machen muss bevor ich mein Programm zum Einsatz bringen kann.
Wenn es hier eine Möglichkeit gäbe, dass ich diese Funktion(Rüstdaten sichern) über mein Programm anstoßen könnte, wäre mir schon sehr weitergeholfen. 

2. Alle Werzeugdaten direkt aus der PLC holen. Dafür habe ich z.b. Snap7 oder libnodave im Sinn.
Hier bin ich mir aber nicht sicher ob das so ohne Weiteres möglich ist, bzw. Ob das sicher ist. 


Nun also meine Frage. 
Kennt ihr einen Weg der Sinumerik Werkzeugdaten über ein externes Programm  zu entlocken?

Wichtig für mich ist, dass keine Änderungen an den Maschinen vorgenommen werden müssen und das es ein Weg ist, der bei so ziemlich jede Sinumerik funktioniert.



Vielen Dank für Hilfe.


----------



## Rainer Hönle (23 Juli 2019)

Hast Du Dir schon einmal *ACCON-AGLink* angeschaut? 
Noch eine Frage: mit welcher Biliothek/Toolbox greifst Du auf die Heidenhain-CNC zu?


----------



## Cliff (23 Juli 2019)

Zumindest für Delphi/ Snap7 kann ich sagen das wir das seit einiger Zeit problemlos in unseren Produktivanlagen im Einsatz haben (S7-300er, 400er und TIA).
Vorher LibNoDave - Auch kein Problem. Mit TIA ist es zwar alles ein wenig blöder geworden, bzw. die Funktionalität eingeschränkter aber immer noch gut brauchbar.
Hatte vorher OPC im Einsatz, das war aber viel zu kompliziert im Setup.

Ich meinte aber für die Sinumerik gibt/ gab es auch Toolboxen. Habe vor ewigen Zeiten (Sinumerik mit Win95) einmal eine Druckeransteuerung per Delphi realisiert.
Da habe ich mir die Daten direkt aus der NC geholt (DDE).
K. A. wie das heute aussieht...


----------



## Heinileini (23 Juli 2019)

herik84 schrieb:


> ... und das es ein Weg ist, der bei so ziemlich jede Sinumerik funktioniert.


Bei den TOA-Daten in der NC sollte das durch Auswerten der MaschinenDaten noch recht überschaubar sein. 
Bei den übrigen Daten in der PLC dürfte es je nach Maschine und Hersteller recht unterschiedlich ausfallen, wo welche Daten (wie codiert) geparkt sind.
Die PLC-Tabelle könnte auch Elemente wie Adapter enthalten, die erst in Kombination mit eigentlichen Werkzeugen zu Werkzeugen in Deinem Sinne werden.
In der TOA-Tabelle kann es mehr als einen Datensatz zu jedem Werkzeug geben (Stichwort "Schneiden").

PS: 
Woher kommt die Funktionalität "Rüstdaten sichern"? Wird die mittlerweile von Siemens angeboten bzw. definiert?


----------



## herik84 (23 Juli 2019)

Rainer Hönle schrieb:


> Hast Du Dir schon einmal *ACCON-AGLink* angeschaut?



Hallo Rainer, Ja die ACCON-AGLink habe ich mir natürlich schon angeschaut, allerdings möchte ich mich erstmal mit kostenosen varianten beschäftigen.



Rainer Hönle schrieb:


> Noch eine Frage: mit welcher Biliothek/Toolbox greifst Du auf die Heidenhain-CNC zu?



Für die Haidenhain kommt alles was du brauchst automatisch mit TNCRemo mit.





Cliff schrieb:


> Zumindest für Delphi/ Snap7 kann ich sagen das wir das seit einiger Zeit problemlos in unseren Produktivanlagen im Einsatz haben (S7-300er, 400er und TIA).
> Vorher LibNoDave - Auch kein Problem. Mit TIA ist es zwar alles ein wenig blöder geworden, bzw. die Funktionalität eingeschränkter aber immer noch gut brauchbar.
> Hatte vorher OPC im Einsatz, das war aber viel zu kompliziert im Setup.
> 
> ...



Hallo Clff, also ToolBox klingt in jedem Fall erstmal interessant. Hätte ich aber erst noch mit erwähnen sollen. für mich kommen erstmal nur Kostenlose Mittel in Frage. 
Ich denke meine Wahl würde wenn dann schon auf Snap7 fallen. Ich würde das auch gerne Testen, allerdings scheue ich mich einfach an unsere Produktivanlagen zu gehen und einfach los zu testen. besser wäre es wenn ich eine Art Testumgebung hätte. Würde da Siutrain in Frage kommen?

Cliff, könntest du mir eventuell ein Beispiel geben wie Ihr euch an eure Sinumerik verbindet und diese auslest? (Codebeispiel)

Wie ich schon geschrieben hatte, Sicherheit ist meine oberste Dewiese. An unseren Maschinen darf nix passieren! Deswegen will ich eben auch sehr vorsichtig an das ganze ran gehen.
Deswegen auch die Idee über diese Interne Funktion der Sinumerik. (Rüstdaten sichern)



Heinileini schrieb:


> PS:
> Woher kommt die Funktionalität "Rüstdaten sichern"? Wird die mittlerweile von Siemens angeboten bzw. definiert?



Hallo, Heinileini
Diese Funktion ist in der Sinumerik intergriet. Die Funktion ist über einen Softkey der Steuerung zu erreichen.


----------



## Peter Gedöns (26 Juli 2019)

Die Werkzeugdaten liegen bei der Sinumerik in der NC die PLC ist da erstma raus.
Die Sinumerik ToolBox hilft dir nicht weiter.
Wenn es für jede Sinumerik sein soll geht nur der weg über die Maschinendaten auslesen welche Magazine /Plätze vorhanden sind. Dann kann man mal die Werkzeuge auslesen.
Sollte eigentlich alles über Libnodave mit der Erweiterung für den NCK machbar sein. 

zum lernen ganz nett aber halt die 5001te Werkzeugverwaltung  

Rüstdatensichern würde bei der 840c eingeführt


----------



## herik84 (29 Juli 2019)

Hallo Peter,

Also wäre snap7 keine Möglickeit? 

Snap7 wäre mir eben sympatischer, weil es eben nicht ganz so alt ist und daran auch (so weit ich weiß ) 
Noch gearbeitet wird. 

Aber danke erstmal für deine Info's.


----------



## herik84 (17 Januar 2020)

So, nun ist ja einige Zeit ins Land gegangen, und ich kann weiter an meinem Projekt arbeiten.

Leider bin ich aber noch nicht wirklich schlauer geworden. 

Kann mir einer sagen ob ich eventuell "Rüstdaten Sichern" mit  libnodave oder Snap7 anstoßen kann.

Ziel wäre dann die Sicherung der Rüstdaten in einem Netzlaufwerk oder eben einen Ordner den ich aus dem Netzwerk erreichen kann.

Des weiteren hat sich für mich noch eine weitere Frage aufgetan. Wenn ich jetzt anfangen will mit einer von beiden Varianten (Snap7 oder libnodave) zu testen,
kann ich ja schlecht mit einer Maschine anfangen. Hat einer von Euch eine Idee wie man sich eine Testumgebung aufbauen könnte?

Bei der Heidenhain war das leicht, denn da kann ich die Steuerung auf Dem PC installieren und fertig ist meine Testumgebung! Aber bei der Sinumerik habe ich keine Idee wie ich das realesieren kann.

freue mich auf Eure Ideen


----------



## Peter Gedöns (17 Januar 2020)

Nochmal die Daten der Werkzeuge liegen in der NC .   Snap7 oder Libnodave sind ja erstmal für den zugriff auf die PLC 

Libnodave kann auf Daten der NC zugreifen allerdings wird das Spannend die NC Variablen zusammen zu bauen .

Rüstdatensichern kann man nicht von extern anstoßen. 
Test Umgebung kann man kaufen, Ebenso Programmiertool für HMI, damit könnte man das alles machen was du willst


----------



## herik84 (18 Januar 2020)

Ok, dann wäre also Snap7 erledigt!



Peter Gedöns schrieb:


> ...allerdings wird das Spannend die NC Variablen zusammen zu bauen .


Sollten die Variablen nicht auch irgendwo Dokumentiert sein?



Peter Gedöns schrieb:


> Rüstdatensichern kann man nicht von extern anstoßen.
> Test Umgebung kann man kaufen, Ebenso Programmiertool für HMI, damit könnte man das alles machen was du willst



Testumgebung: Könnte Sinutrain mir da weiterhelfen? Das ist zwar auch nicht kostenlos, ich könnte aber bei meinem Kolletgen testen, denn der hat eine Lizenz.
Bzw. habe ich gerade gesehen das es eine basisversion kostenlos gibt. https://www.siams.ch/news-de/sinutrain-version-4-8-2---jetzt-kostenlos-downloaden/1495

Programmiertool für HMI     das habe ich bisher noch nicht gehört. Wie muss ich mir das vorstellen. Bzw. könntest du mir eine solche software mal benennen?




Mensch, es muss doch einen Weg geben von außen an die Werkzeugdaten ranzukommen.

achso. Peter, danke für die schnelle Antwort!


----------



## Peter Gedöns (18 Januar 2020)

warum es spannend wird . weil in der Sinumerik jeder an Werkzeugverwaltung konfigurieren kann was er will, Die Daten der Werkzeugverwaltung mehrdimensionale Arrays enthält die man über 
NC - Var nicht so einfach adressieren kann.


Sinutrain wird nicht mit Libnodave oder ähnlich kommunizieren da dort keine PLC oder CP aktiv ist.  

alle Testumgebungen die ich kenne  z.b VNCK kosten Geld   


Programmiertool (so was kostet aber ) 
danach kannst mal suchen , da wirst du auch Handbücher finden   "SINUMERIK Integrate Create MyHMI "


----------



## TobiasM (18 Januar 2020)

herik84 schrieb:


> kommen erstmal nur Kostenlose Mittel in Frage.



Ist Deine Werkzeugverwaltung auch kostenlos?


----------



## herik84 (19 Januar 2020)

Ok. also VNCK habe ich jetzt mal gegoogled....   VNCK ist ja auch nichts anderes als eine Simulationssfotware die halt den NCK verwendet.


Ich habe noch folgendes gefunden.  Link



 Bei uns würde Vericut zur verfügung stehen. Und wenn ich dem Glauben schenken darf, was da auf der Seite steht, dann sollte es ja eigentlich auch mit verycut funktionieren.   Oder sehe ich das gerade falsch?

Die Adressierung der Variablen sollte man doch eigentlich beim Hersteller erfragen können! Hoffe ich!



@TobiasM    
Also ich habe keine Werkzeugverwaltung. Falls du mein Programm meinst, handelt es sich eher einfach gesagt um ein Werkzeugabgleich. Aber das ist auch egal, bisher habe ich keine Finaziellen Vorteile aus diesem Project gezogen, deswegen sollte es mich außer meiner Zeit nix kosten!


----------



## Rainer Hönle (19 Januar 2020)

Vericut verwendet, wenn ich das in dem Link richtig sehe, die VNCK von Siemens. Und diese Software hat einen Listenpreis von über 12.000 EUR.


----------



## herik84 (19 Januar 2020)

Ja. Aber da in der Firma ja sowiso verycut verwendet wird, hätte ich ja eventuell da die möglichkeit zum testen.


----------



## gravieren (19 Januar 2020)

https://www.luconda.com/artikeldetails/27/24/21/9441427b-siemens-6fc5261-1ax05-6ab0.html?


----------



## Heinileini (19 Januar 2020)

"Verfügbarkeit:  versandfertig in > 10 Tagen"


Na, da bleibt doch noch Zeit, den Betrag von 25.578,00 € anzusparen!
Das Angebot richtet sich offensichtlich an PrivatKunden:
"inkl. gesetzl. MwSt.
Käuferschutz inklusive (bis zu 20.000,00 €)"


----------



## burkhard6 (21 Januar 2020)

Hallo,
welche Daten brauchst Du denn genau für den Datenabgleich?
 Wie Peter oben schon geschrieben hat sind die Daten in der CNC in unterschiedlichen Arrays weit verteilt und entsprechend kompliziert adressiert.
Die Syntax für die Variablen kann der Beschreibung der BTSS-Variablen von Siemens entnommen werden.
Die Frage ist, ob Du die komplette Magazinbelegung mit allen bekannten Werkzeugen inkl. der Daten haben willst oder nur eine Übersicht.
EIn Auslesen der Magazindaten und der Grunddaten der Werkzeuge ist noch relativ einfach. Mit den Schneidenwerten wird es deutlich komplizierter,
da die Siemens-Beschreibung hier auch nicht einfach ist.
Ich benutze im Moment die Kopplung mit Accon AG-Link.
Ich kämpfe im Moment mit der Struktur der Schneidendaten und warte zur Zeit auf eine Info, wie ich die Daten des zweiten und folgender Werkzeuge adressiere.
Wenn hierzu jemand was weiß, wäre ich für Infos dankbar
Falls Interesse besteht, könnte ich ja mal meine bisherigen Erkenntnisse bekannt machen.

Gruß
Burkhard


----------



## Peter Gedöns (21 Januar 2020)

zu den Schneiden Daten dazu steht was in dem Handbuch System variablen.
welche variable nutzt du ? cuttEdgeParam ? 
 wie adressiert den der Accon AG-Link ?


----------



## Heinileini (21 Januar 2020)

burkhard6 schrieb:


> Mit den Schneidenwerten wird es deutlich komplizierter, da die Siemens-Beschreibung hier auch nicht einfach ist.
> Ich kämpfe im Moment mit der Struktur der Schneidendaten und warte zur Zeit auf eine Info, wie ich die Daten des zweiten und folgender Werkzeuge adressiere.


Moin Burkhard, 
in der TOA-Tabelle ist die ZeilenNr die sog. D-Nr.
Jedem Werkzeug, spezifiziert durch T-Nr und Duplo-Nr, ist in der WZ-Tabelle der PLC unmittelbar 1 D-Nr der TOA-Tabelle der NC zugeordnet, nämlich die der ersten (und meistens einzigen) "Schneide".
Das PLC-Programm teilt dem NC-Programm diese D-Nr passend zum jeweils eingewechselten WZ mit.
Das NC-Programm aktiviert die D-Nr und damit die zum WZ gehörenden KorrekturDaten der "ersten Schneide" aus der TOA-Tabelle. 
Will man für ein und dasselbe WZ aus einem von zwei oder mehreren KorrekturDatenSätzen auswählen können, so kann man die KorrekturDatenSätze in der TOA-Tabelle verketten.
Jeder KorrekturDatenSatz enthält als Verweis auf einen weiteren, demselben WZ zugeordneten KorrekturDatenSatz die D-Nr der "FolgeSchneide" - oder eben eine 0, wenn keine weitere "Schneide" definiert ist. 
Um also den KorrekturDatenSatz der zweiten Schneide zu aktivieren, müsste das NC-Programm im KorrekturDatenSatz der ersten Schneide nachsehen, ob ein Verweis ungleich 0 existiert und ggfs diese D-Nr aktivieren.
Um aus mehr als 2 Schneiden auszuwählen, müsste dieses Verfahren wiederholt werden, bis man auf einen Verweis 0 stösst, der besagt "Ende der Fahnenstange - weiter klettern zwecklos".

Das einzig schwierige/verwirrende an den Schneiden ist der Begriff "Schneide" selbst. Die meisten Leute stellen sich darunter etwas vor, was hier eigentlich gar nicht gemeint ist.
Es geht lediglich darum, einen einzigen von mehreren KorrekturDatenSätzen wahlweise aktivieren zu können - z.B. bei einem StufenBohrer, wo sich der Begriff "2. Schneide" noch relativ gut nachvollziehen lässt.


----------



## burkhard6 (21 Januar 2020)

Hallo Peter,
ich benutze die Variable edgeData, die sollte cuttEdgeParam ersetzen.

 Aktuell bekomme ich alle Schneidendaten des ersten Werkzeugs mit der Adressierung  *"/Tool/Compensation/edgeData[u1,i]".
CodeSchnipsel:*

* sprintf(cItemName, "/Tool/Compensation/edgeData[u%i,%i]",1,iNum);
    RetVal = AGL_NCK_GetNCKDataRWByNCDDEItem(cItemName, &m_nckDatarwitem, &m_iErrorPos);
    RetVal = AGL_NCK_CheckVarSize(tmpConnNr, &m_nckDatarwitem, 1, 1, m_lUserVal);
    //    iNumber = AGL_GetErrorMsg(RetVal, Fehler, sizeof(Fehler));
    m_nckDatarwitem.Buff = &diStatus;
    RetVal = AGL_NCK_ReadMixEx(tmpConnNr, &m_nckDatarwitem, 1, 1, m_lUserVal);
    printf("Wert des Schneidendatums %i ist : %d\n\n",iNum, diStatus);*

Accon macht daraus Area 4 ,Unit 1,Block 20,RowCount 1,Column 1, Row 1 für WZ-TYP $TC_DP1.
Das stimmt soweit und bringt auch gute Werte.

Damit bekomme ich alle sinnvollen Werte für die Werkzeug- und Schneidendaten des ersten Werkzeugs.
Bei den Schneiden muss man noch für die weiteren Schneiden den Index i um 35 inkrementieren (maxnumCuttEdges_Tool).
Ob die Schneide existiert, kann ich ab Index 316 lesen, da ein Datensatz 315 Werte umfasst. 

Leider weiss ich nicht, wie die weiteren Schneiden in dem Array verteilt sind.
Ich hoffe im Moment , dass ich diese Info irgendwo von Siemens bekomme.


----------



## burkhard6 (21 Januar 2020)

Hallo Heinileini,
ich wollte nicht die Daten in der NC auswerten, sondern extern über C-Code auf die Werte zugreifen.
Da sind mir die Adressierung der Systemvariablen etwas rätselhaft. Vom extern kann ich nicht direkt $TC_DP1..n adressieren, sondern muss über die Variable edgeData zugreifen.
Hier liegt mein Problem


----------



## Peter Gedöns (21 Januar 2020)

hilft das ?


edgeData (T, TUE) $TC_DPCx[y,z] x=ParamNo,y=ToolNo z=EdgeNo


Wichtig:2-dimensionale Variable, der Spaltenindex ist die T-Nummer.
Der Datentyp im NCK wird durch das MD18097 $MN_MM_TYPE_CC_TOA_PARAM festgelegt und kann aus dem File
_N_COMPLETE_TOA_ACX ermittelt werden. 
Der Datentyp wird für die BTSS in den Datentyp TYPE_DOUBLE gewandelt
und muss durch die Anwendung wieder in den Datentyp des NCKs zurückgewandelt werden.
Einheiten und Wertebereiche
Physikalische Einheit: Datentyp:- TYPE_DOUBLE
Adressierung
Zeilenindex: Max. Zeilenindex: (SchneidenNr - 1) * $$numCuttEdgeParams_tu + ParameterNr $$numCuttEdgeParams_tu * $$maxnumCuttEdges_Tool


----------



## burkhard6 (21 Januar 2020)

leider nein, die Beschreibung habe ich auch. Fuer $TC_DPCx[y,z] ist y die ToolNo und waere auch bei edgeData der Parameter T.
Wenn ich aber fuer T 2 eingebe, kommt Fehlermeldung ungültige Werte.
Habs auch auf der Steuerung im Diagnose NC-Variablen mit gleichem Ergebnis : edgeData[1,x] ist ok, abb 2 geht´s schief.


----------



## Heinileini (21 Januar 2020)

burkhard6 schrieb:


> ich wollte nicht die Daten in der NC auswerten, sondern extern über C-Code auf die Werte zugreifen.
> Da sind mir die Adressierung der Systemvariablen etwas rätselhaft. Vom extern kann ich nicht direkt $TC_DP1..n adressieren, sondern muss über die Variable edgeData zugreifen.
> Hier liegt mein Problem


Das war mir wohl klar, dass Du die Daten extern auswerten möchtest.
So, wie ich es kenne (das muss nicht mehr der aktuelle Stand sein), sind die Daten in der TOA-Tabelle ganz simpel und klar strukturiert. Das einzig etwas kompliziertere ist die "Verkettung" der KorrekturDatenSätze beim VorhandenSein von mehreren Schneiden. 
Was sich hinter Index "um 35 inkrementieren"  und "ab 316" verbirgt, kann ich nur vermuten: das dürfte sich auf die ByteAdresse innerhalb einer Zeile der TOA beziehen bzw. innerhalb des AntwortTelegramms. Vermutlich steht ab Adresse 35 die D-Nr der FolgeSchneide und ab 316 dürften die KorrekturDaten für die FolgeSchneide stehen (entweder der komplette KorrekturDatenSatz oder der Teil davon, der nicht sowieso identisch ist mit dem Satz für Schneide 1). 
Anscheinend stellt Dir Deine LeseFunktion bereits die Daten aller DatenSätze zu einem WZ zusammen. Werden denn die Bedeutungen der Daten (z.B. die SpaltenÜberschriften) mitgeliefert oder kannst Du diese abfragen?
Gibst Du mit "maxnumCuttEdges_Tool" vor, für wie viele Schneiden Du maximal die KorrekturDaten haben möchtest oder wirst Du damit darüber informiert, wie viele Schneiden für das WZ angelegt sind?
Wenn ich Dich richtig verstanden habe, kannst Du nicht Zeile für Zeile (D-Nr) die TOA-Tabelle auslesen, sondern nur WZ für WZ (T-Nr & Duplo-Nr) die Daten abfragen - wobei sich der Umfang der Daten aus der Anzahl angelegter Schneiden ergibt?


----------



## herik84 (22 Januar 2020)

Welche daten ich genau benötige: Ich brauche die Daten von jedem sich in der Maschine befindenden Werkzeuges. Also auch in der Spindel sowie Wechselarm.
Länge, Radius, Standzeit usw.  Das benötige ich weil ein Abgleich mit der Solllänge bzw Sollradius des Werkzeuges passieren soll.

OK, also entnehme ich jetzt den letzten Beiträgen das es möglich ist! Das sind schon mal gute Nachrichten. Aber dennoch bleibt bei mir das Problem bestehen dass ich keine Testumgebung habe.
Einfach so an der Maschine testen, kommt glaube ich nicht so gut. Ich denke da kann man dann auch einiges falsch machen und im schlimmsten Falle die Maschien stillegen! Ist das so?

Ich hatte jetzt Kontakt mit einem Anwendugstechniker von Siemens.
 Dieser hatte mir als einen Weg den "OPC AU Server" der Sinumerik genannt. letztendlich ist mir auch egal welcher weg zu Ziel führt.
Wäre "OPC" eine Alternative oder würdet Ihr davon abraten?
Wichtig ist mir eben das es sicher ist und man keinen Schaden an den Maschien verursachen kann.
Davon mal abgesehen, weiß ich nicht ob der OPC-Server auch bei unseren Maschinen auch integriert ist. Das müsste ich als nächstes mal rausbekommen, sonnst wäre der weg ja sinnlos. Die neueren Maschinen sollten ja nicht das Problem sein.
Vorteil bei OPC wäre für mich eben das ich da warscheinlich eher an eine Testumgebung komme. Es gibt ja diverse OPC-Server-Simulationen. Somit wäre ich auch zum testen nicht an eine Maschie gebunden!



Hat einer das auslesen der Werkzeugdaten in Kombination Delphi mit Libnodave schon mal realesiert?


@Burkhard6 du schreibst dein Programm in C?


----------



## burkhard6 (22 Januar 2020)

Ich fürchte. die TOA-Tabelle ist nicht mehr so einfach strukturiert.
DIe variable edgeData ist eine sogenannte BTSS-Variable, mit der ein Zugriff auf die NC-Datenstruktur möglich ist.
Diese Variablen werden benutzt, wenn man z.B. mit dem OEM-Paket oder "EASY Screen" eigene Masken auf der PCU realisiert. Auf der PLC wird der Zugriff über den NC_VAR-Selektor realisiert, mit dem die entsprechende interne Adressierung Area, Unit, Block, Row ermittelt werden. ACCON AG-Link nutzt die gleiche Syntax, um die entsprechenden Werte für Area.... zu ermitteln, mit denen dann der eigentliche Read-Befehl abgesetzt wird. DIe Variable numCuttEdgeParams gibt an, wieviel Parameter pro Schneide existieren (35). Daraus ergibt sich, dass die Werte der zweiten Schneide bei Offest 35 beginnen. Bei Offset 315 (9 Schneiden  * 35 Werte) beginnt ein Array von 9 Werten, wo man sieht, ob die entsprechende Scheide existiert.

Damit endet jetzt mein Wissen. Ich bekomme jetzt nicht mehr heraus, wo hier in dem Gebilde die Daten des zweiten Werkzeugs beginnen.


----------



## burkhard6 (22 Januar 2020)

Opc wird wohl auch funktionieren. Ich habe Montag zum Thema OPC Siemens im Haus. Da werde ich mal ebenfalls nachhaken, wie die WZ-Daten ausgelesen werden können.
Die Sinumerik Solution Line hat OPC eigentlich im Bauch. Ob das nur gilt, wenn ich einen PCU bzw. IPC habe, weiss ich aber nicht. Es wird über eine Option aktiviert, der Preis sollte deutlich unter 1000€ liegen. 
Zu Deiner Frage: Ich schreibe die Programme in C++ mit Visual Studio. ACCON sollte auch mit Delphi funktionieren. Wie die Syntax bei Libnodave aussieht, kann ich so nicht beantworten.
Ich glaube, die Adressierung erfolgt über Area, Unit, Block, Row. Das sollte aber kein Problem sein, die Werte kann man mitdem NCVAR-Selektor ermitteln.
Vielleicht hat ja jemand auch für Libnodave schon die Werte ermittelt und irgendwo abgelegt.
Bis auf die Geometriewerte komme ich an alle WZ-Werte inkl Standzeit, Ist-Ort etc. heran.
Ich denke,die Geo-werte werde ich auch demnächst im Griff haben.
Dann könnte ich Dir die Codeschnipsel in C geben und Du müsstest entsprechend in Delphi umschreiben. Ob Libnodave oder ACCON sollte dann vom Budget abhängen


----------



## Peter Gedöns (22 Januar 2020)

burkhard6 schrieb:


> lHabs auch auf der Steuerung im Diagnose NC-Variablen mit gleichem Ergebnis : edgeData[1,x] ist ok, abb 2 geht´s schief.



auf welcher Steuerung fragst du das so ab ? edgeData hat mehr als 2 Parameter 
ich kann mit /Tool/Compensation/edgeData[u1,c1,1]  oder [u1,cX,1]  den Werkzeugtyp aller Werkzeuge abfragen auf der Steuerung.


----------



## burkhard6 (22 Januar 2020)

Steuerung ist eine 840Dsl SW Stand4.8
Danke, hab´s gerade ausprobiert. Blöd ist, wenn man den Parameter cX nicht einfügt, rutscht der letzte Parameter an die zweite Stelle und aus  /Tool/Compensation/edgeData[u1,cX,Y] wird
 /Tool/Compensation/edgeData[u1,Y] und er bringt immer den Parameter Y des 1. Werkzeugs, weil er default c1 annimmt. :-(
Werde gleich mal versuchen,die Werte aller Werkzeuge zu lesen.
AUs welcher Beschreibung hast Du denn die Info. DokOnCD liefert mir die nicht, oder ich hab sie nicht gefunden.


----------



## Heinileini (22 Januar 2020)

burkhard6 schrieb:


> Ich fürchte. die TOA-Tabelle ist nicht mehr so einfach strukturiert.
> ... interne Adressierung Area, Unit, Block, Row ...


Unit? Block? Und ich fürchte, meine Kenntnisse sind nicht mehr up to date. 
Sie stammen noch aus einer Zeit, als der Platz für die TOA-Tabelle knapp bemessen war und man deshalb so wenig wie möglich Spalten belegt hat, um noch ein paar mehr Zeilen (D-Nrn) herauszuschinden. Unverzichtbar in der NC waren die Infos zur Identifizierung des WZs (T-Nr, Duplo-Nr), die GeometrieDaten (WZ-Typ, Länge, Radius, VerschleissLänge, VerschleissRadius) und die D-Nr der Folgeschneide.
WZ-StatusBits (z.B. gesperrt, gebrochen, verschlissen, ...), AufenthaltsOrt des WZs (Spindel, Greifer, MagazinPatz), GeometrieDaten (die nur für KollisionsBetrachtungen bei der Suche nach einem geeigneten MagazinPlatz relevant sind), Typ des WZ-Kegels, StandZeit, RestZeit und ggfs weitere Daten, die nicht pro Schneide, sondern pro WZ anfallen, standen nicht in der TOA-Tabelle, sondern in der PLC.



herik84 schrieb:


> Welche daten ich genau benötige: Ich brauche die Daten von jedem sich in der Maschine befindenden Werkzeuges. Also auch in der Spindel sowie Wechselarm.
> Länge, Radius, Standzeit usw. Das benötige ich weil ein Abgleich mit der Solllänge bzw Sollradius des Werkzeuges passieren soll.


Abgleich von SollLänge und SollRadius? Und die VerschleissWerte? RestZeiten? Status gebrochen? ...
Frage aus reiner Neugier: wozu der Abgleich? Sollen die WZ-EinstellPlätze mit den beim bzw. nach dem Einsatz ermittelten aktuellen Erkenntnissen versorgt werden? Will man ermitteln, ob z.B. die StandZeiten realistisch genug vorgegeben wurden?
In der TOA-Tabelle können auch noch Daten von WZen stehen, die sich noch nicht, nicht mehr bzw. nicht ständig in der Maschine befinden, z.B. weil sie "nur" manuell eingewechselt werden.


----------



## Peter Gedöns (22 Januar 2020)

sagen wir ist die DocOnCd V4.94


----------



## burkhard6 (22 Januar 2020)

Hatte bei mir die 4.8 SP2.
Inzwischen habe ich ein aktuelleres Listenhandbuch.


----------



## herik84 (24 Januar 2020)

burkhard6 schrieb:


> Opc wird wohl auch funktionieren. Ich habe Montag zum Thema OPC Siemens im Haus. Da werde ich mal ebenfalls nachhaken, wie die WZ-Daten ausgelesen werden können.
> Die Sinumerik Solution Line hat OPC eigentlich im Bauch. Ob das nur gilt, wenn ich einen PCU bzw. IPC habe, weiss ich aber nicht. Es wird über eine Option aktiviert, der Preis sollte deutlich unter 1000 liegen.
> Zu Deiner Frage: Ich schreibe die Programme in C++ mit Visual Studio. ACCON sollte auch mit Delphi funktionieren. Wie die Syntax bei Libnodave aussieht, kann ich so nicht beantworten.
> Ich glaube, die Adressierung erfolgt über Area, Unit, Block, Row. Das sollte aber kein Problem sein, die Werte kann man mitdem NCVAR-Selektor ermitteln.
> ...



Das wäre natürlich richtig toll wenn du mir die Codeschnipsel zur Verfügung stellen würdest. 

So, leider hat sich der Weg über OPC bei mir erledigt. Wie du schon erwähnt hast beinhaltet die 840D SL nur den OPC-Server. Damit fallen über 2/3 unserer Maschinen durch das Raster!
Also bleibt mir jetzt nur noch der Weg mit LibNoDave. Tja, aber genau hier habe ich ja nach wie vor das Problem, dass ich keine Testumgebung habe.
Burkhard??  Wie testest du denn deinen Code?

Ich habe mich jetzt nochmal mit Simulationssoftware beschäftigt. Dabei sind mir 2 "Kostenlose" Varianten aufgefallen.

CodeSysV3:



TwinCAT3:


Das was ich jetzt nicht wirklich rausfinden konnte, könnte ich jetzt so ohne weiteres Libnodave damit testen?
Im besten Fall wäre es sogar möglich ein PLC Backup einzuspielen. Dann könnte ich unter fast realen Bedinungen testen. 
Habt Ihr Erfahrungen oder weitere Infos für mich?

Achso. 
Wenn ich jetzt an einer realen Steuerung testen würde. Wie sicher ist die ganze Geschichte. Wie groß ist die Warscheinlichkeit das man einen Schaden verurchsen kann? ( Ich will nur lesend zugreifen)


----------



## Peter Gedöns (24 Januar 2020)

mit verlaub 
Wenn ich lese das Du Codesys oder Twincat führ eine nutzbare Testumgebung im Zusammenhang mit Werkzeugverwaltung und Siemens 840Dsl hältst
 Zweifle ich an deinen Kenntnissen bezüglich Sinumerik Steuerung.

Nochmal mit Sinutrain kannst du viel testen aber halt keine Kommunikation mit dem NCK per Libnodave weil die PLC nicht vorhanden ist.
Mit dem VNCK kann man eine Schnittstelle zur PLC simulieren damit müsste man auch eine Verbindung per Libnodave zusammen basteln können.
mit dem Programmierpacket HMI OA kann man auf alle NC Variablen zugreifen (ohne Libnodave) testen ist ohne reale Hardware oder VNCK aber auch nicht möglich.
Mit der neuen SimulationsSoftware für die Sinumerik ONE könntest du das Testen da dort alles vorhanden ist PLC NCK HMI . aber kostet Geld und  passt auch nicht für 840D PL oder alte 840Dsl


----------



## burkhard6 (24 Januar 2020)

Ich teste hier mit einer Teststeuerung, die bei uns im Betrieb für einen  Probelaufstand zuständig ist und somit in der Regel nicht aktiv läuft.
Die  Verbindung erfolgt mit der PLC der Teststeuerung über ACCON AGLink.  Ohne eine reale Steuerung wird es wohl nicht möglich sein, da Du nur  dort auch die entsprechenden Werkzeug- und Magazindaten hast.  PLC-Simulationen oder Fremdsysteme wie Twincat bringen da nichts, weil  Du ja Daten einer CNC brauchst. Ausserdem sind die Funktion bei Twincat  mit ADS-Befehlen ganz unterschiedlich zu Sinumerik.
Wenn Du nur Daten  der NC liest und keine Daten schreibst, sollte es wenig Probleme mit  der Steuerung geben. Man sollte allerdings im Kopf behalten, daß man auf  der gleiche Nahtstelle rumturnt, die auch die Kommunikation zwischen  CNC,PCU(IPC) und PLC benutzt.

Warum ist die OPC-Variante erledigt? Hast Du noch alte Steuerungen (Sinumerik Powerline) im Verbund?


----------



## burkhard6 (24 Januar 2020)

Hallo Peter,
ich hatte mit dem OA-Paket in der Vergangenheit immer eine Verbindug zu einer realen NC aufgebaut, die mir aber nicht immer zur Verfügung stand.
Könnte man den VNCK  bei der Entwicklung mit dem OA-Paket benutzen, um sowohl Werte aus der CNC und PLC über die CAP-Schnittstelle zu bekommen?


----------



## Peter Gedöns (24 Januar 2020)

mit dem VNCK könnte man die OA Applikationen testen 
PLC kann man nachstellen Signale aber da lauft halt keine PLC , für die Kommunikation  Libnodave -> PLC -> NCK würde es reichen.


----------



## herik84 (10 Februar 2020)

Peter Gedöns schrieb:


> mit verlaub
> Wenn ich lese das Du Codesys oder Twincat führ eine nutzbare Testumgebung im Zusammenhang mit Werkzeugverwaltung und Siemens 840Dsl hältst
> Zweifle ich an deinen Kenntnissen bezüglich Sinumerik Steuerung.



Peter, ganz so falsch liegst du da nicht. Aber ich bin hier um genau das zu ändern. Deswegen dauert es auch immer wieder bis ich hier mal antworte, denn ich mache mich in der Zeit weiter schlau.

Programmierpacket HMI OA: Danke für den Vorschlag. Problem was ich hierdabei aber sehe, ist das ich das auch nur auf 840D SL anwenden könnte. Somit würde ich nicht alle Maschinen erreichen können. Und eigentlich will ich keinerlei Änderungen an der Steuerung vornehmen müssen.



burkhard6 schrieb:


> Warum ist die OPC-Variante erledigt? Hast Du noch alte Steuerungen (Sinumerik Powerline) im Verbund?



Ja OPC ist leider gestorben, weil ich ältere Maschinen dabei habe die keinen Server integriert haben. Des weiteren... Der OPC-Server ist zwar bei der 840D SL integriert, aber eben auch nicht kostenlos.

OPC wäre glaube meine erste Wahl gewesen, aber aufgrund der kosten und der Verfügbarkeit an unseren Maschinen kein Weg mehr für mich.



Mittlerweile gibt es Neuigkeiten.
Ich konnte mir eine Maschine in der Firma zum testen sichern. Ist aktuell keine Produzierende Maschine. Sie steht quasi schon eine ganze Weile rum und ich darf sie nutzen.

Also wäre erstmal das Problem Testumgebung gelöst.

Da ich mich ja nun für LibNoDave entschieden habe, habe ich es natürlich in meinem Delphi Installiert. Beim Durchstöbern ist mir die Demo aufgefallen.

Also würde ich gerne erstmal mit der NoDaveDemo(TNODave Test-Utility) eine Verbindung erstellen.

LibNoDave bietet ja einige Protokolle an. 

MPI-Protocol
MPI-Protocol(Andrew´s Version without STX)
MPI-Protocol(Step7 Version)
MPI-Protocol(Andrew´s Version with STX)
PPI-Protocol
ISO over TCP
ISO over TCP (CP-243)
IBH-Link
IBH-Link (PPI)
S7Onlinx.dll
AS-511
Deltalogic NetLink PRO

Da ich ja wie gesagt noch einiges zu lernen habe bevor ich in die vollen gehen kann, wollte ich euch fragen ob es irgendwo eine gute Beschreibung der Protokolle gibt.
Wo die Unterschiede liegen und noch wichtiger, welche Protokolle für mich relevant sind.


----------



## burkhard6 (11 Februar 2020)

Herik, wenn Du auch auf ältere Maschinen zugreifen musst, weiss ich nicht, wie Du an die notwendigen Daten kommen kannst. Die Verbindung zwischen NC (wo die WZ-Daten liegen) und PLC könnte  bei der Powerline anders organisiert sein. (Vielleicht kann Peter da mal ein Statement zu geben..) Du greifst ja immer über die PLC auf die CNC zu und die PLC müsste auf die Bereiche sauber hinkommen. Allerdings scheint es ja bei Produkten wie "HMI auf PC" ja auch zu funktionieren.
ES gibt in der Libnodave ein Beispiel für Werkzeugdaten. Vielleicht probierst Du das mal das Beispiel an einer Powerline.


----------



## Peter Gedöns (11 Februar 2020)

die BTSS   Notation ist identisch.
Sollte mit der erweiterten Libnodave gehen.


----------



## herik84 (11 Februar 2020)

Hallo Burkhard,

  Von der erweiterten Version von Libnodave habe ich gelesen. Das ist doch dann auch die Erweiterung auf den NC-Bereich, oder?
  Allerdings das es ein Beispiel gibt für die Werkzeugdaten ist mir neu.

  Könntest du mir einen Link zukommen lassen wo ich die erweiterte Version runterladen kann?

  Aktuell nutze ich die libnodave 0.8.5.

  @ Peter
  Also heißt das jetzt, das die Werkzeugdaten eigentlich immer an der selben Stelle liegen sollten? Also die gleiche Adresse haben sollten?


----------



## burkhard6 (12 Februar 2020)

Sorry, hatte da was verwechselt. Ich hatte von einem Siemens-Kollegen die Info bekommen, dass die DotNetSiemensPlcToolBoxLibrary Libnodave benutzt und es dort ein Beispiel zum Lesen der Werkzeugdaten gibt. Ich hatte allerdings das Beispiel nicht getestet, da ich mich ein wenig davor drücke, CS-Projekte zu Kompilieren und Debugen, weil ich da nicht sattelfest bin. Ich hoffe, ich habe jetzt keinen Blödsinn geschrieben, aber ich denke, dass das Programm auch mit libnodave arbeitet. Vielleicht suchst Du mal im Forum nach "DotNetSiemensPlcToolBoxLibrary" . 
Die BTSS Notation gibt an, mit welcher Syntax die einzelnen Parameter adressiert werden können. Lt. Peter scheint es da keine Unterschiede zwischen 840D Power- und Solutionline geben.


----------



## herik84 (12 Februar 2020)

burkhard6 schrieb:


> da ich mich ein wenig davor drÃ¼cke, CS-Projekte zu Kompilieren und Debugen, weil ich da nicht sattelfest bin.



Ja, das kann ich gerade nachvollziehen.
Ich habe mir DotNetSiemensPlcToolBoxLibrary mal runtergeladen und ein wenig gestöbert. Allerdings bin ich noch nicht fündig geworden. Scheint aber auch sehr umfangreich zu sein.
Schade eigentlich das es nicht für Delphi zur verfügung steht. (Oder doch)

Kurze Info. Meine Testmaschine hängt nun endlich am Netzwerk und ich kann endlich loslegen. 
Ein Backup muss ich zwar noch ziehen, aber das sollte weniger das Problem sein. Nach dem Backup kann ich dann endlich in die Vollen gehen. 

Erstmal werde ich generell die Verbindung mit Libnodave Testen.  Dafür stehen ja schöne Anwendungen von Libnodave selber bereit. 

Wenn das passt, dann geht es weiter.

Wie weit bist du jetzt? konntest du alle Daten der Werkzeuge auslesen?


----------



## Thomas_v2.1 (12 Februar 2020)

herik84 schrieb:


> Schade eigentlich das es nicht für Delphi zur verfügung steht. (Oder doch)


Du benötigst eigentlich nur die angepasste libnodave.dll mit den ergänzten Funktionen für den NC Zugriff. Eine dll mit C-Api lässt sich in so gut wie jeder anderen Programmiersprache verwenden.


----------



## herik84 (12 Februar 2020)

Hallo Thomas.

Ok. Weißt du wo ich die angepasste dll runterladen kann?


----------



## Thomas_v2.1 (12 Februar 2020)

Ich weiß nicht in wie weit die Funktionen in der Toolbox eingepflegt wurden die ich im Rahmen eines Threads hier erstellt habe. Ich verwende diese nicht, ich weiß auch nicht was aus den Ordnern in der Toolbox überhaupt aktuell ist.
Ich vermute aber mal, die libnodave_jfkmod.dll oder die 64 Bit Variante sollte ein paar der Funktionen enthalten. Ohne Gewähr.


----------



## herik84 (12 Februar 2020)

hm. also sollte ich mich hier nochmal auf die Suche begeben und schauen wo ich die erweiterte Version herbekomme. Für Hinweise bin ich dennoch dankbar.

Wo du jetzt gerade 64Bit schreibst...   Habe ich jetzt noch garnicht bedacht gehabt. Aber eine 64bit Version wäre schon von Vorteil.


----------



## herik84 (14 Februar 2020)

Ich habe jetzt also angefangen mit meinen Versuchen mich mit der Maschine zu verbinden mit dem TestTool von Libnodave(testISO_Tcp).
  Bisher konnte ich natürlich keine Verbindung aufbauen.
  Da kommt man echt von einem Problem zum nächten.
  Hier mal meine Vorrausetzungen an der Maschine.
  PCU: Sinumerik PCU50.3-C
  NCU: NCU720.2 PN

  Ist es richtig, dass die NCU und die PCU separat am Firmennetzwerk angeschlossen werden müssen?

  Und liege ich damit richtig das ich mich erstmal mit der NCU auf dem Anschluss X130 verbinden muss? Ich will nur nochmal nachfragen, nicht das ich hier jetzt auf dem Holzweg bin.

  Nun habe ich ja noch gelesen, dass der X130 noch eingerichtet werden müsste. Als noch die IP des Firmennetzwerkes vergeben (bei uns läuft so weit ich weiß kein DHCP) und die Firewall öffnen mit dem Port 102.

  Nun ist die Frage: Wo stelle ich diese Sachen ein? Kann ich das direkt an der Steuerung machen?
  Bisher bin ich bis zu dem SNC vorgedrungen, aber dort werden ja die Netzwerkadapter der PCU angezeigt. Und der Reiter Company Network ist ausgegraut.

Hoffe ihr könnt mir dazu gute Tips geben.

Im übrigen...   Schönes Wochenende ;-)


----------



## burkhard6 (14 Februar 2020)

Die NCU und PCU sind im Firmennetz nur DHCP CLients. Sie müssen als von einem Server ihre Adresse zugewiesen bekommen. Das bezieht sich auf ETH1 und X130.
Du müsstest also eine DHCP-Server im Netz haben.
X120 und ETH2 vergeben selbst IP Adressen im Anlagen-Netz X120 ist auf Adresse 192.168.214.1 und ETH2 ist auf Adresse 192.168.214.241 vorbesetzt.
X127 ist eine Service-Schnittstelle und hat die Adresse 192.168.215.1.
Wenn Du Deinem Laptop eine feste Adresse z.B. 192.168.214.234 vorbelegst, müsstest Du die NCU erreichen können und solltest über Port 102 Verbindung aufbauen können.(Firewall!!)
Wenn Du übers Firmennetz an die NCU und PCU möchtest, könntest Du z.B. eine Fritzbox als DHCP-Server nehmen und ein kleines Mini-Netz aufbauen. Ich würde die ersten Gehversuche mit der NCU X120 machen und mir selbst die Adresse 192.168.214.234 geben. 
Ich galube , über die X127 ist eine Verbindung zur PLC auch relativ einfach möglich, Du müsstest nur die Subnetzmaske auf 255.255.0.0 setzen, wenn Du im Segment 192.168.215.xxx bist und auf die PLC unter 192.168.214.1 möchtest.

Im übrigen...   Schönes Wochenende zurück


----------



## burkhard6 (14 Februar 2020)

P.S. muss wohl an meinem Zeichensatz noch was aendern


----------



## Peter Gedöns (14 Februar 2020)

bei der X120 ist kein Firewall Port 102 ist da offen 
die X127 kann mit der kann mit Netzmaske für C Netz eingestellt werden das wird in der NCU durchgereicht.
für die X130 kann man natürlich auch eine feste IP vorgeben aber dort ist ein Firewall aktiv.

wie das alles einzustellen ist kann man in den Handbüchern nachlesen,
https://support.industry.siemens.co...n=ps&o=DefaultRankingDesc&pnid=14599&lc=de-AT


----------



## herik84 (28 Februar 2020)

Hallo Leute, 

danke schon mal für eure letzten Antworten. Sobald ich wieder an die Maschine Kann, werde ich weiter Testen. Erstmal bin ich aber Krank. ( Nein kein Corona!!)

In der Zwischenzeit habe ich mich jetzt schon mal noch ein wenig mit LibNoDave befasst. 

Es ist zwar gut das die Demo dabei ist, aber ich vermisse dennoch eine Doku! Und irgendwie findet man auch kaum mal ein Beispiel für Delphi. Alle nutzen es irgendwie immer nur im VB.

Naja. irgendwie kämpfe ich mich da schon durch. 

Jetzt habe ich aber dennoch eine Frage, wo ich jetzt noch keinen richtigen Ansatztpunkt sehe. 
Es geht um die Adressen zum abfragen der Werte.

z.B.: $TC_TP2[]   ist ja die Werkzeugbezeichnung. Damit kann ich ja in der Demo von Libnodave nix anfangen.
Gefordert sind ja an der stelle dann Area, DB, Type, Offset und Count
Area wäre ja NCK
DB ??
Typ wäre String[20]
Offset ??
Count ??

In der Literatur von Siemens habe ich jetzt nicht das Passende gefunden. Oder ich habe nach falschen Begriffen gesucht. 

Jetzt also meine Frage. Wie Bekomme ich die für mich wichtigen Daten zu Area, DB... her? Oder kann ich doch mit LibNoDave die Werte direkt mit "$TC_TP2[]" abfragen?
Wo kann ich mich dazu belesen?

Achso. Mir ist jetzt schon klar das ich jetzt nicht mit der Demo von LibNoDave auf den NCK zugreifen kann. Dazu müsste ich erstmal noch die libnodave_jfkmod.dll einbinden. Die würde ich dann aus der DotNetSiemensPLCToolBoxLibrary nehmen.


mfg


----------



## Peter Gedöns (28 Februar 2020)

herik84 schrieb:


> Hallo Leute,
> ,,,,,,
> 
> z.B.: $TC_TP2[]   ist ja die Werkzeugbezeichnung. Damit kann ich ja in der Demo von Libnodave nix anfangen.
> ...



Ich weiß nicht ob sich jemand die mühe gemacht hat das aufzuschlüsseln.
aber wenn du dir den NC Var Selector von der Toolbox installierst ,kannst du die Variablen auswählen und in dem DB der daraus generiert wird sind diese geforderten werte enthalten.


----------



## herik84 (28 Februar 2020)

Hm, ok. Von dem NC Var Selector habe ich schon gelesen.

Kann es sein das die ToolBox mit den Maschinenunterlagen mitgeliefert wurde? Ich weiß das bei den Unterlagen CD´s dabei sind. Aber was kann ich gerade nicht genau sagen. 

Erstmal recht herzlichen Dank für die Ntwort, das könnte mir sehr weiter helfen.


----------



## burkhard6 (2 März 2020)

Neben dem NC_VAR-Selektor git es noch die Möglichkeit, mit dem Softwarepaket ACCON AG-Link von Deltalogic die Variablen zu generieren. Gibt es als Demo auch mit Delphi.
Hier mal die Sequenz fÃ¼r ToolIdent:

    sprintf(cItemName, "/Tool/Catalogue/toolIdent[u1,%i]",iNum);
    RetVal = AGL_NCK_GetNCKDataRWByNCDDEItem(cItemName, &m_nckDatarwitem, &m_iErrorPos);
    RetVal = AGL_NCK_CheckVarSize(tmpConnNr, &m_nckDatarwitem, 1, 1, m_lUserVal);
    m_nckDatarwitem.Buff = m_cValue;
    RetVal = AGL_NCK_ReadMixEx(tmpConnNr, &m_nckDatarwitem, 1, 1, m_lUserVal);
    printf("Werkzeug %i hat den Namen : %s \n\n", m_nckDatarwitem.Row, m_cValue);



Die Variable 


typedef struct tagNCKDataRW
{
  agl_uint8_t         Area;                               // Area aus der gelesen / in die geschrieben werden soll (0-7)
  agl_uint8_t         Unit;                               // Unit aus der gelesen / in die geschrieben werden soll (0-31)
  agl_uint8_t         Block;                              // Baustein aus dem gelesen / in den geschrieben wird
  agl_uint8_t         RowCount;                           // Anzahl der Variablen die gelesen / geschrieben werden
  agl_uint16_t        Column;                             // Spalte die gelesen / geschrieben wird
  agl_uint16_t        Row;                                // Zeile die gelesen / geschrieben wird
  agl_int32_t         Result;                             // Ergebnis (Fehlercode) der Lese- bzw. Schreiboperation
  void*               Buff;                               // Zeiger auf Puffer fÃ¼r bzw. mit den Daten
  agl_int32_t         BuffLen;                            // LÃ¤nge des benötigten Daten und des allokierten Puffers
  agl_int32_t         DDEVarType;                         // Typ der Variablen aus nsk-Datei
  agl_int32_t         MDBVarType;                         // Typ der Variablen aus mdb- bzw. gud-Datei
} NCKDataRW, *LPNCKDataRW;

hat fast genau die Struktur, die Libnodave braucht.

Bin gerade dabei, das Beispiel der DotnetSiemensPLCToolbox ein wenig zu erweitern, um weitere Werkzeugdaten auszulesen.
Wenn ich damit durch bin, könnte ich Dir die entsprechenden Area...etc Werte nennen, wen Du mir sagtst, was genau Du brauchst.
Ich mach dann ggfs. mal ne Liste der Werte, die ich bisher lesen konnte, wenn Du möchtest.

Gruss
Burkhard


----------



## burkhard6 (2 März 2020)

Hier mal meine bisherigen Erkenntnisse:

Bezeichnung AGLink :    (Area/Unit/Block/RowCount/Column/Row)
Bezeichnung LibNoDave :    (Area/Unit/Module/LineCount/Column/Line)

Werkzeuganzahl        : "/Tool/Catalogue/numTools[u1]"         (4/1/38/1/1/1)     
Magazinanzahl        : "/Nck/Configuration/numMagsMax"        (0/1/16/1/28/1) 
Akt MagazinNo        : "/Tool/MagazineCatalogue/magVNo[u1,%i]"    (4/1/43/1/2/1)
WZ in Mag        : "/Tool/Magazine/placeData[u1,C%i,%i]"        (4/1/38/1/7/1)
WZ-Nummer        : "/Tool/Catalogue/toolNo[u1,%i]"        (4/1/38/1/3/1)
WZ-Ident        : "/Tool/Catalogue/toolIdent[u1,%i]"        (4/1/38/1/4/1)
Duplo-Nr        : "/Tool/Catalogue/nrDuplo[u1,%i]"        (4/1/38/1/5/1)
WZ in Mag        : "/Tool/Catalogue/toolInMag[u1,%i]"        (4/1/38/1/7/1)
WZ in Platz        : "/Tool/Catalogue/toolInPlace[u1,%i]"        (4/1/38/1/8/1)
WZ Status        : "/Tool/Data/toolState[u1,%i]"            (4/1/33/1/8/1)
Anzahl Schneidenparam.    : "/Nck/Configuration/numCuttEdgeParams"    (0/1/16/1/11/1)
MaxAnz Schneiden pro WZ : "/Nck/Configuration/maxnumCuttEdges_Tool[1]"    (0/1/16/1/47/1)
Anz. Anwenderdaten    : "/Nck/Configuration/numToolParams_tu"        (0/1/16/1/24/1)
WZ Typ             : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/1)
WZ Schneidenlage    : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/2)
WZ Länge 1        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/3)
WZ Länge 2        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/4)
WZ Länge 3        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/5)
WZ Radius        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/6)
WZ Eckenradius        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/7)
WZ Länge 4        : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/ 8 / 1 )
.
.
.
WZ Freischneidewinkel    : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/24)

WZ ShopmillZustand    : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/25)
oder
WZ Schnitgeschw. Manual    : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/25)

WZ Schneide gültig    : "/Tool/Compensation/edgeData[u%i,c%i,%i]    (4/1/20/1/1/X+n)

                        X = numCuttEdgeParams * maxnumCuttEdges_Tool
                        n = Schneidennummer


----------



## herik84 (2 März 2020)

burkhard6 schrieb:


> Neben dem NC_VAR-Selektor git es noch die Möglichkeit, mit dem Softwarepaket ACCON AG-Link von Deltalogic die Variablen zu generieren. Gibt es als Demo auch mit Delphi.
> 
> Burkhard



Ich hatte auch schon mal nach der Demo von AG-Link gesucht, aber soweit ich mich erinnern kann, hatte ich nur eine Normal Anwendung gefunden.
Reden wir jetzt hier also bei der Demo Von den Komponenten für Delphi? Und welche Einschränkungen hat denn die Demo?
Hättest du mal einen Link?




burkhard6 schrieb:


> Bin gerade dabei, das Beispiel der DotnetSiemensPLCToolbox ein wenig zu erweitern, um weitere Werkzeugdaten auszulesen.
> Wenn ich damit durch bin, könnte ich Dir die entsprechenden Area...etc Werte nennen, wen Du mir sagtst, was genau Du brauchst.
> Ich mach dann ggfs. mal ne Liste der Werte, die ich bisher lesen konnte, wenn Du möchtest.
> 
> Burkhard



?? Beispiel für DotNetSiemensPLCToolbox?  An was arbeitest du denn alles?

Achso, danke für deine Mühe mir soviele daten bereit zu stellen. sobald ich kann werde ich es auch nutzen;-)



Leider kann ich aktuell nicht weiter Testen (lernen).

Ich habe die Backups nach Anleitung unserer Instandhaltung gemacht. Also Sicherungen für PLC NCK und auch HMI. 
Das hat alles soweit geklappt. Dann habe ich einen USB-Stick genommen um die Sicherungen extern nochmal zu haben. 
Bei dem kopieren von der HMI-Sicherung auf dem Stick, ist die Maschine bei 5% hängen geblieben. (Nach 2h warten waren es immernoch 5%)

Naja, da ich es nicht abbrechen konnte, habe ich dann mit exit die Maschie Runtergefahren. Das war noch möglich. 
Als ich heute die Maschie Starten wollte, ist sie nicht mehr hochgefahren( Waiting for HMI).

wenn man nun mal die Softkeyleiste nach rechts drückt, dann kann man ein bisschen mehr sehen. 

Da habe ich gesegen, dass der VNC-Server der HMI nicht gefunden wird.


Könnte es sein das der CF-Speicher in der NCU aufgegeben hat?


----------



## burkhard6 (3 März 2020)

Die Version von der Deltalogik-Seite ist eine Vollversion, die als Demo arbeitet, wenn kein Lizenz-Dongle gefunden wird. Die Einschränkung besteht darin, dass in gewissen Abständen eine Meldung erscheint, die Quittiert werden muss. Wenn ma das Produkt später kauft, muss man nur eine Dll austauschen.
ZuDeinem Problem mit der Oberfläche. Kann es sein, dass mit exit die HMI beendet wird? Bei menen Maschinen mit PCU ist das so, dass die PCU ausgeschaltet wird.
Hast Du die komplette Maschine inkl Schaltschrank mal aus- und wieder eingeschaltet, damit die NCU neu hochfährt? Damit wird dann das interne HMI neu gestartet.
Der VNC schaut auf die 192.168.214.1 (internes HMI) oder 192.168.214.241 (HIM auf PCU). Verrsuch mal die NCU mit Ping zu erreichen.


----------



## herik84 (3 März 2020)

Na klar habe ich die Maschine komplett ausgeschalten. 
Der VNC schaut auf die 192.168.214.241. 
Deswegen ist ja die Vermutung das die HMI irgendwie komplett Fehlt.


----------



## burkhard6 (3 März 2020)

Die 241 ist die PCU
D.h. Der Bildschirm an der Maschine.
Da müsste man doch direkt an der Maschine sehen, on die PCU hochefahren ist.
Wenn Du die mit exit verlääst, fahrt die PCU doch eigentlich runter und muss über den Startknopf auf der PCU bzw. durch Wegnahme der Betriebsspannung wieder hochgefahren werden.
Wenn Du eine USV an der PCU hast, damit das Windows nicht hart runtergefahren wird, hilft nur Warten auf die leere Batterie der USV oder Wegnahme der Spannung direkt an der PCU.
Die neueren haben einen Reset-Schalter.


----------



## herik84 (4 März 2020)

Also die pcu sollte komplett aus gewesen sein. 
Maschine hatte ich ja aus. Also damit auch die pcu. 
Zur Sicherheit habe ich die pcu nochmal direkt ausgeschalten. (Ein schalter ist vorhanden)
Das ändert aber nichts an dem Zustand, dass kein aktiver Vnc-server gefunden wird. 
Op die pcu nun nicht richtig hochfährt, kann ich aktuell nicht sagen. 
Ich könnte nur mal testen ob ich auf die freigegebenen ordner der pcu komme. Dann sollte sie ja da sein.


----------



## herik84 (4 März 2020)

Also ich habe jetzt versucht einen Ping auf die pcu abzusetzen.   Ergebnis:
Nicht erreichbar. Also scheint wirklich die pcu nicht hochzufahren. 

Tja.  Aber wie kann ich das jetzt lösen?


----------



## Peter Gedöns (5 März 2020)

man sollte das ganze mal mit System angehen . mit einem Ping feststellen  ob eine PCU50 läuft oder nicht halte ich ja mal für sehr gewagt.

also was ist das für einem Maschine ? 
was ist das verbaut ? NCU 7X0.x   , eine PCU50  oder doch ein IPC ,
wie ist das ganze aufgebaut ?    PCU50 auf OP gebaut , oder  PCU 50 ('PC)im Schaltschrank . 
Wenn an der PCU 50 ein Schalter ist für on off ist hat die auch ein 7 Segment Display .

Also 
ich würde gerne wissen welche LEDs an der NCU sind an , was zeigt die 7 Segment anzeige der NCU .
was zeigt die 7 Segment anzeige der PCU50 ? 

an einer PCU 50 ist auch ein Display port da kann man einen Monitor anklemmen !

ich glaube auch nicht das ein ausschalten  beim Kopieren  eines  Archivs die PCU Base und das Operate auf dem Windows so zerschossen wird das es nicht mehr hoch kommt.


----------



## burkhard6 (5 März 2020)

Ob die PCU läuft, sieht man am Besten, wenn man auf den Bildschirm schaut (TCU-Varianten ausgenommen). 
Da müsste er sehen können, ob Operate hochgelaufen ist oder Windows läuft oder ob das Ding beim Booten hängt.
Dein Hinweis mit den Anzeigen auf der NCU und PCU hat natürlich die beste Aussagekraft.
Wir hatten in der Vergangenheit auch mit dem haerten Ausschalten der PCU meist keine Probleme.
Vielleicht bringen seine Aussagen neue Erkenntnisse.


----------



## herik84 (5 März 2020)

Ok, der Ping ist nur ein Indiz. 

Maschine ist eine hsc20 von dmg (sauer).
Es ist eine NCU730.2 Version A verbaut sowie eine PCU50.3-C.

Eine 7Segment Anzeige kann ich leider nicht finden. 

Monitor anstecken, das könnte ich heute abend nochmal versuchen. Das bringt bestimmt die besten Aussagen.


----------



## herik84 (6 März 2020)

Ich habe mich nochmal auf die Suche begeben nach der 7Segment anzeige und bin aucj fündig geworden. War schön vom Kabel verdeckt. 

Angezeigt wird eine 88. 
Was das allerdings zu bedeuten hat konnte ich noch nicht in erfahrung bringen. 
Unsere Instandhaltung will soch heute mal damit beschäftigen. 

Mal sehen ob sie zu einem Ergebniss kommem. 

Aber nun euch erstmal ein schönes Wochenende.


----------



## TobiasA (8 Juli 2020)

Mal rein interessehalber: Was ist eigentlich raus gekommen? Kann man mit Libnodave bzw. der DotNetLibrary Werte aus der NC lesen?


----------



## burkhard6 (9 Juli 2020)

Grundsätzlich geht es ganz gut.
Ich habe mit der DotNetSiemensPLCToolBoxLibrary mal das Beispielprogramm für die Werkzeugdaten erweitert.
Leider habe ich gerade festgestellt, dass mein Beispiel nach dem Umzug auf den neuen Rechner Fehler beim Übersetzen bringt und
ich in den letzten 2 Tagen vor meinem Urlaub keine Zeit mehr habe, den Fehler zu finden.
Bei Interesse könnte ich in ca. 3 Wochen weitere Infos hierzu liefern.

Man sollte aber immer im Hinterkopf behalten, dass man mit diesen Programmen nicht zu intensiv die NC abfragt, da man sich die Schnittstelle mit dem internen Datenaustausch der NC-Komponenten teilt und man dadurch Probleme erzeugen kann.
Siemens sieht für OEM-Anwendugen die CAP-Schnittstelle vor, die dann auch für die nötige Arbitrierung der Anfragen sorgt.
Das setzt allerdings das OEM-Paket vorraus, was mit relativ hohen Kosten verbunden ist.

Wenn ich Dir weitere Infos oder beispiele liefern soll, kannst Du Dich ja mal melden.

Gruß
Burkhard


----------



## TobiasA (9 Juli 2020)

Vielen Dank!
Werde ich mir dann mal anschauen. Wird nichts offizielles, ich habe angefangen mir einen Editor für Zyklen zu schreiben und suche nach einer Möglichkeit, da einen Debugger zu bauen mit dem ich Werte aus der NC holen und anzeigen kann. Da kann man sich ja die Bandbreite einteilen (z.B. einen Wert alle 200ms).
Bisher mache ich das z.B. über das Sinumerik Commissioning Tool, da kann man ja auch mal das ein oder andere nachschauen. Oder über ein NC-Trace. Aber es wäre natürlich interessant, die Werte abzuholen und sich direkt anzuzeigen.
Kostenpflichtige Wege fallen aus, da das ein Hobbyprojekt ist und die beste Ehefrau von allen für sowas keine Budgetfreigabe erteilt 

Danke und Grüße,
Tobias


----------

