PLC Daten über OPC in C++ Programm bearbeiten

D_Lar

Level-1
Beiträge
16
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich mache gerade eine Praktikum bei einer kleinen Firma. Ich soll eine GUI erstellen (in C++), welche ein paar PLC-Dateien Anzeigt. Die Vorgabe ist, die PLC-Dateien über den OPC-Server zu bekommen. Mir steht ein HIM-Advanced zur Verfügung und ich programmiere mit Visual C++ 2010 Professional.

Ich weiß, dass ich einen OPC-Client einbauen muss. Aber wie genau appliziere ich den?

Seit Tagen habe ich schon im Netz gesucht, komm aber nicht weiter und bin inzwischen schon ganz frustriert, da der Druck immer mehr wächst. :sad:
Kann mir jemand helfen ????

Hat jemand vielleicht ein kleines Beispielprogramm? Das würde mir schon sehr weiterhelfen.

Gruß D_Lar
 
ItemID von PLC- Datei???

Hi, ich bin jetzt schon mal weitergekommen.

mit einem Beispiel-Client-C++Programm von :

http://sourceforge.net/projects/opcclient/

und einem OPC-Tutorial:

http://pgras.home.cern.ch/pgras/OPCClientTutorial/

habe ich einen Client erstellt, der nun mit dem SINUMERIK OPC-Server verbunden ist. Ich kann dessen Status auslesen, Gruppen erstellen, aber:

wie komm ich jetzt an die PLC-Daten dran?
In dem ich ein Item erstelle, klar, aber wie sind die ItemID aufgebaut???

Ich wäre echt dankbar wenn jemand mir da weiterhilft.
 
"/Plc/Datablock/Bit[c200,1.1]"

die Varianten findest du in einer btss_gr.hlp irgendwo im HMI-Advanced-Ordner

Hallo LowLevlMahn,

vielen dank für deine Antwort!! Ich kann Bits und Bytes damit lesen, aber sobald ich ein Word oder DoubleWord lesen will, erhalt ich nur das Value 0.

Muss man bei einem Word oder DoubleWord etwas specielles berücksichtigen?

D_Lar
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es geht also kein /Plc/Datablock/Word[c200,1]

c200 == db-nr: 200
1 = bytenr

Ja, wenn ich ein beliebiges Word so ansprechen möchte, bekomme ich als Value entweder 0 oder einen Fehlerwert (Bsp: 115487). Woran kann das liegen??? :confused:

Bin echt confused, danke für deine Hilfe LowLewelMahn!!
 
probiers mal mit dem OPC-Client...

probier mal mit einem anderen OPC-Client deine Abfrage zu tätigen

z.B. http://www.dopc.kassl.de/explorer.shtml

wenn es damit geht - liegt es an deinem Code - und ich denke das es so ist

Achtung der opc-maschineswitch hat kein Browsing d.h. du musst einfach eine Gruppe + dein Word-Item anlegen
 
probier mal mit einem anderen OPC-Client deine Abfrage zu tätigen

z.B. http://www.dopc.kassl.de/explorer.shtml

wenn es damit geht - liegt es an deinem Code - und ich denke das es so ist

Achtung der opc-maschineswitch hat kein Browsing d.h. du musst einfach eine Gruppe + dein Word-Item anlegen

Ja, an meinem Code hab ich auch zuerst gezweifelt, deshalb hab ich, um die ItemID herauszubekommen, den Client von Matrikon verwendet :

http://www.matrikonopc.com/downloads/176/software/index.aspx

Ich hab gehört, dass Siemens eine andere Wertung von Bits hat, kann das der Grund sein, dass ich meistens den Wert 0 oder einen utopisch hohen Wert bekomme?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die Word-Adressierung ist glaube Word-basiert

Ja, an meinem Code hab ich auch zuerst gezweifelt, deshalb hab ich, um die ItemID herauszubekommen, den Client von Matrikon verwendet :

und damit hat es geklappt? oder auch die "Fehlermeldung" (Fehlermeldungen sind nicht Teil des Values sondern ein Value)

was bekommst du bei?

/Plc/Datablock/Byte[c100,0] -> 0x??
/Plc/Datablock/Byte[c100,1] -> 0x??

/Plc/Datablock/Word[c100,0] -> 0x?? ?? (wie oben?)
 
OK, ich habs selber herausgefunden.:ROFLMAO:

bei einem WORD oder DOUBLEWORD oder FLOAT muss man das Zeichen > setzen:

bsp: PLC/Datablock/WORD[c100,>2]
oder: PLC/Memory/DOUBLEWORD[>123]

so klapt es. :D
 
was auch immer

OK, ich habs selber herausgefunden.:ROFLMAO:

bei einem WORD oder DOUBLEWORD oder FLOAT muss man das Zeichen > setzen:

bsp: PLC/Datablock/WORD[c100,>2]
oder: PLC/Memory/DOUBLEWORD[>123]

musste ich noch nie setzen - und ich habs jahrelang verwendet --> wie hast du das rausgefunden (doku, probieren?)
 
Zurück
Oben