# Vs2008, c#, .net - opc - sps



## ThomasAdler (15 Dezember 2010)

http://www.codeproject.com/KB/COM/opcdotnet.aspx
Hallo,
ich suche den Einstieg in PC basierte Entwicklung.
a) was brauche ich? *Wie sieht die Strategie aus?
*b) gibt es günstige Lernpakete
c) was will ich?
Über .NET, C# Ausgänge setzen, abfragen, Zustandsänderungen verfolgen.
d) .NET C# UserInterface ---- Schnittstelle ---- Steuerung
................................................. Achsen
................................................. Scanner
................................................. Etiketten, 2D Code
.NET C# UserInterface ---- Schnittstelle ---- Steuerung
.............................. OPC
.............................. DLL
.............................. XX ?
e) Wie wird Automatierungs heute gemacht?
HMI - .NET C#, Visual Basic
Steuerung SPS
Oder
der PC steuert alles incl. Userinterface.
f) OPC 
Gibt es funktionsbasierte Schnittstellen?
Datenpunkte?
Wie bekomme ich Änderungen, Events mit?
Wie kann ich Ausgänge setzen?
g) Codesys, Siemens ?
Was ist besser, einfacher?
Gibt es Libraries zu Achsen?
Grüße Thomas


----------



## godi (19 Dezember 2010)

Hallo!

Also mit Hochsprachen bzw C# hast du noch nie was zu tun gehabt?
Mit SPS Programmierung kennst dich aus?

zu a)
Wenn du noch nie was mit C# oder einer Hochsprache was zu tun hattest dann würde ich mal mit einem Buch Anfangen das dir mal die Syntax und die wesentlichen Dinge (Grundzüge der Objektorientierung) näher bringt.
Dann solltest dir noch verschiedenste Design Patterns und Architekturstile ansehen damit du nicht irgendwie wild drauf los programmierst und dann scheiterst.

zu b) naja du solltest dir im Klaren sein das der Einstieg in sinnvolle Hochsprachenprogrammierung nicht von Heute auf Morgen funktioniert. Also das du da einiges bzw sehr sehr viel Zeit investieren musst damit du auch sinnvolle Visualisierungen und andere Anwendungen entwickeln kannst.
Also so ein Lernpaket gibt es nicht wirklich weil das Thema zu umfangreich ist.

zu c und d) darüber reden wir dann weiter wenn du a und b sinnvoll erfüllt hast.
Aber zur Kommunikation mit Siemens gibt es ein opensource Projekt namens Libnodave.

e) also die Anlagensteuerung macht auf jeden Fall die SPS. Wegen Echtzeitanforderung usw.
HMI: kann über Hochsprache gemacht werden. Wird aber sehr oft über dafür vorgesehene Visualisierungssoftware wie WinCC, WinCC flexible, ... gemacht.

f) erfülle zuerst Punkt a
g) ob Siemens oder Codesys wird dir dein Kunde vorschreiben. 
Ob es Libraries zu Achsen gibt kann ich dir nicht sagen. Wird auch darauf ankommen was du genau mit dieser Library machen willst. Also die Visualisierung?

godi


----------



## ThomasAdler (19 Dezember 2010)

*VS2008, C#, .net - opc - sps*



> Also mit Hochsprachen bzw C# hast du noch nie was zu tun gehabt?
> Mit SPS Programmierung kennst dich aus?


Hallo,
 genau umgekehrt.

*Erfahrung in MFC, C++ und .NET C#*

Die Frage, wie verbinde ich beides am Sinnvollsten?
Ich finde C# halt einfacher, übersichtlicher, wenn es um XML,
MES Anbindungen geht.

Gruß, Thomas


----------



## Dr. OPC (20 Dezember 2010)

OPC Foundation definiert Interfaces, die verschiedene Funktionalitäten anbieten
1) classic DA (Data Access) Zugriff auf Daten vom Prozess
2) UA (Unified Architecture) Zugriff auf Daten, Alarme, Events, Historie

zu1) basiert auf COM/DCOM und ist eine C++ API (kann auch mit C# verwendet werden, dann sind allerding RCWs erforderlich)

zu2) geht mit allen Programmiersprachen (C, C++, C#, Java) wenn man den richtigen Kommunikationsstack (in der entsprechenden Sprache) verwendet, diese Stacks gibt es bei der OPC Foundation und sie sind alle "auf dem Kabel" kompatibel, denn alle "sprechen ein binäres Protokoll.


----------



## ThomasAdler (21 Dezember 2010)

> OPC Foundation definiert Interfaces, die verschiedene Funktionalitäten anbieten
> 1) classic DA (Data Access) Zugriff auf Daten vom Prozess
> 2) UA (Unified Architecture) Zugriff auf Daten, Alarme, Events, Historie
> 
> ...


Hallo,
gibt es Beispiele, Tutorials,
Videos, WebCasts für den Einstieg?

Wie gesagt Erfahrung in C#, MFC, C++
Wenig in SPS, Codessys.

Grüße Thomas


----------



## Dr. OPC (21 Dezember 2010)

Bester Einstieg in das gesamte OPC UA Thema gibt es hier
*Beitrags-ID:*42014088
im Customer Support von Siemens.
http://support.automation.siemens.com

Mein persönlicher Tip: ERST lesen, dann programmieren !


----------



## Dr. OPC (21 Dezember 2010)

Und den alten Krempel (classic OPC) gibt es dort auch. Ausgezeichnet erklärt, da muss man Siemens auch mal loben !!!
*Beitrags-ID:*21043779 (Visu und Anzeige)
*Beitrags-ID:*21447513 (Datenerfassung und Datenbank)

Aber wie gesagt, wenn du neu anfängst, kannst du auch gleich OPC UA machen, das ist neuer, und kann funktional alles was "classik OPC" auch konnte und noch viel mehr! 

Wichtigste Neuerung: OPC UA hat keine Abhängigkeit zu Microsoft mehr. OPC UA geht überall, in jeder Sprache, auf allen Betriebssystemen, und ist ca. doppelt so schnell wie das alte Zeug (zumindest wenn du es in C oder C++ machst).


----------



## BerndAllgäu (21 Dezember 2010)

Beckhoff!?

schau mal auf die HP von Beckhoff - hier wird quasi mit CodeSys Compiler  gearbeitet (heißt hier TwinCat - zusätzlich gibts noch nen Systemmanager für die Hardware). 

Der vorteil für dich liegt mit Beckhoff darin das es  hervoragende Librays zur Kommunikation für z.B. C#.Net usw. gibt. Hier können sogar Events bei Variablenänderungen ausgelöst werden.

Für den Einstieg brauchst du erstmal keine Hardware. Prgrammierumgebung  ist kostenlos. 30 tage lizenz für eine voll funktionsfähige Soft-SPS ist  da auch dabei. (nach den 30 tagen neu installieren - dann hast wieder  30 tage)

Library zu Achsen gibts natürlich auch - hier kannst du es bis hin zur NC gesteuerten Steuerung treiben - alles in einem System.

Ich arbeite jetzt seit fast 10 Jahren damit bin sehr zufrieden und habe o.g. Faetures mehrfach eingesetzt...

Und wenn du noch etwas Zeit hast warte auf TwinCat 3 (HP lesen!!!) - das ist dann komplett im VisualStudio 2010 integriert.

Ich hoffe das hilft dir....



P.S.: wer rächtschraibfeeler fiendet daaf sie behalden...


----------



## Dr. OPC (22 Dezember 2010)

> Der vorteil für dich liegt mit Beckhoff darin das es  hervoragende Librays zur Kommunikation


Der Nachteil des ADS Protokolls liegt darin das es KEIN Standard ist und auch von niemandem (ausser Beckhoff) unterstützt wird. Wenn du also deine Applikation nur EINMAL entwickeln willst und mit JEDER Steuerung auf dieser Welt kommunizieren möchtest dann nimmst du besser OPC. (Beckhoff bietet übrigens auch OPC UA, genauso wie Siemens und andere)

Die Frage nach Codesys und anderen Steuerungen kann dir also völlig egal sein solange sie ihre Daten über OPC anbieten, Du brauchst nur gegen eine Schnittstelle programmieren. Die einzige Frage die du dir stellen musst ist ob du "classic OPC" oder schon das neue "OPC UA" machen willst, was ich empfehlen würde.


----------



## ThomasAdler (22 Dezember 2010)

Dr. OPC schrieb:


> Bester Einstieg in das gesamte OPC UA Thema gibt es hier
> *Beitrags-ID:*42014088
> im Customer Support von Siemens.
> http://support.automation.siemens.com
> ...


 
Hallo,
ja stimmt, ist aber schon älter (2005). Hat sich seit her etwas getan?

Grüße Thomas


----------



## ThomasAdler (22 Dezember 2010)

> das neue "OPC UA" machen willst


Schon das Neue, ob mit 
Beckhoff
ELREST(WAGO) Codesys oder
Siemens.

Dennoch gibt es konkrete Beispiele ohne Hardware, Simulation, wo man einfach was sieht? Ein Gespür dafür bekommt.

Statemachine
Band läuft im Status XY
Band läuft im Status XY2 nicht an etc.

Wie wird heute primär entwickelt?
   Beckhoff und Microsoft haben die Zusammenarbeit ja verstärkt.
   Also konkret wie fließt .NET in die SPS, Maschinenbau ein

Grüße Thomas


----------



## BerndAllgäu (23 Dezember 2010)

ThomasAdler schrieb:


> Dennoch gibt es konkrete Beispiele ohne Hardware, Simulation, wo man  einfach was sieht? Ein Gespür dafür bekommt.



VOLL Funktionsfähige Soft-SPS: http://www.beckhoff.de/tcatweb/twincat_download.aspx

Online Hilfe mit vielen Beispielen: http://infosys.beckhoff.com/

Also wenn Du konkrete Besipiele suchst wirst du auf der Beckhoff Seite  fündig. 
 Es gibt Einführungsbeispiele sowie detailierte Bespiele für die  Kommunikation in allen möglichen varianten (auch OPC... *g*)



ThomasAdler schrieb:


> Wie wird heute primär entwickelt?



naja - aufgrund der steigenden flexibilität und offenheit gibt es da meiner Meinung nach keinen "Masterplan". Es gibt eben "altbewertes" da weiß man das es es funktioniert muß sich dann aber auch oft mal etwas "behelfen" um das optimum rauszukitzeln. 
Meiner persönlichen Meinung nach hat der einzug der Hochsprachen in die SPS begonnen und wird auch in Zukunft immer mehr kommen.

Die art der Entwichlung ist natürlich immer vom Endkunden abhängig. 




ThomasAdler schrieb:


> Beckhoff und Microsoft haben die Zusammenarbeit ja verstärkt.
> Also konkret wie fließt .NET in die SPS, Maschinenbau ein



Hängt natürlich ganz extrem von der Art der Anwendung ab. WAs soll ich sagen - ich habe jahrelang mit Siemens SPSen gearbeitet und bin dann vor 6 jahren mit CodeSys in Kontakt gekommen - es kam einem Quantensprung gleich - wobei ich hier den hauptvorteil in der besseren Umsetzung von SCL bzw. ST sehe. (u.v.m. !!!!!!!)

Bei .Net und Beckhoff wird das heißen das es wohl in naher Zukunft auch ein dort integriertes Visualisierungsystem (á la VisiWin) geben soll. Auch die anbindung an übergeordnete Systeme wie Datenbanken u.v.m. wird leichter werden.


Der gleiche Sprung erwartet uns jetzt wieder wenn Sprachen wie z.B. C++ in die SPS-Welt einziehen.


Bei Konkreten fragen kannst dich auch gerne per Mail melden...

Gruß Bernd


----------



## ThomasAdler (25 Dezember 2010)

Hallo Bernd,



> Der gleiche Sprung erwartet uns jetzt wieder wenn Sprachen wie z.B. C++ in die SPS-Welt einziehen.
> 
> 
> Bei Konkreten fragen kannst dich auch gerne per Mail melden...


gerne nehme ich Dein Angebot an. ​Mein Problem, ein gutes Konzept zu finden.
http://www1.minpic.de/bild_anzeigen.php?id=133596&key=63833313&ende


Hauptproblem ist, loslösen der Komponenten.
Der Tintenstrahldrucker braucht einen Ausgang, um den Druckvorgang zu starten.
Dei Daten kommen seriell rüber.
Die Achse meldet auf Position, über einen Eingang.
D.h. diese Komponenten benötigen das I_O Modul, Siemens, Beckhoff, ELREST, B&R. (was auch immer)
In dem UserInferface soll es noch grafisch dargestellt werden. (HMI)

Alles in allem ist das so verstrickt, dass es evtl. unübersichtlich wird.

Was empfiehlt hier die Theorie? Wie macht man so etwas wartbar?
Was mir nicht ganz klar ist, nehme ich

http://produkt.conrad.de/45973183/usbttl24-io-modul.htm BESSER gute SPS
http://www.wiedenbach.com/inkjetdrucker.html

Fragen
Der Druckkopf fährt x und y Posionen ab.
Eingabe durch Bediener.
Wer steuert jetzt, die SPS, der PC?
Die Druckdaten kommen von einem MES.
Also bietet sich ja .NET (C#) XML an.

Wo kommt die Statemachine rein?
Einfach ein Musterbeispiel
Kunde MES
http://de.wikipedia.org/wiki/Manufac...ecution_System

------ MeineApp (PC, C#) ----- OPC ----- SPS (Ausgänge, Eingänge, Achsen, Scanner)

------ MeineApp (PC, C#) -----steuert (Ausgänge, Eingänge, Achsen, Scanner)

Wie bekommt der PC Events mit, Eingang 3 gesetzt (Achse X auf Pos.)
Wie bekommt der PC Events mit, Eingang 7 gesetzt (Achse Y auf Pos.)

Bediener fertig Achse soll fahren?
Ausgang 7 setzen (Achse Y fährt)

Das sind meine Verständnisprobleme.

Schöne Weihnachten.

Grüße Thomas


----------



## drfunfrock (25 Dezember 2010)

Meine Erfahrung (!) ist, dass wenn du Events  vorliegen hast, sich ADS lohnt. Z.B. wenn du einen speziellen Messwert loggen willst, der völlig willkührlich kommen kann. Dann loggt man auf der SPS so etwas in ein Array. Dieses Array aber per OPS zyklisch auf den PC zu laden kostet zu viele Ressourcen. Da habe ich dann lieber mit Zeiger, Array und einer Variablen gearbeitet, die mir dann gemeldet hat, das ein oder mehrere Events vorliegen. Mit hilfe der Zeiger kann man sich dann nur den Teil vom Array herunterladen, der benötigt wird. Das geht mit OPC nicht.  

OPC ist dann gut, wenn man Variablen hat, die an einen Prozesswert gekoppelt sind, wie ein Füllstand, Spannung etc. Der OPC Server von Beckhoff koppelt übrigens per ADS-Protokoll an die SPS.


----------



## BerndAllgäu (26 Dezember 2010)

Servus Thomas,

kannst Du mir bitte noch infos schicken was konkret umgesetzt werden soll. Für wen ist die anwendung (Industrie oder "Privat").
Und was darf das z.B. kosten. Lösungen hab ich da mehrere - aber alle Entscheidungen sollten mit o.g. Punkten harmonieren.

Wenn du z.B. den Tintenstrahler von wiedenbach nimmst: Diese Drucker haben oft einen Eingang für einen inkrementalgeber oder einen Analogeingang um die druckgeschwindigkeit zu erfassen. Wenn du das nutzen willst brauchst du schon mal die geschwindigkeit und Position der Achsen. Dies setzt wiederum ein positioniersystem vorraus welches dir hier diese Daten zur verfügung stellt. Du kannst ja sonst erst vernünfig Drucken wenn das achssystem einen konstante geschwindigkeit hätte.

Gehen wir mal von der Technischen "luxusvariante" aus:

- SPS Beckhoff CX1020, PLC und NC PTP - EtherCatanschaltung
- Servoachsen (Motor und Regler) von z.B. Boschrexroth, Beckhoff - IndraDrive CS mit EtherCat Kommunikationsmodul
- Serielle Kommunikation zum Drucker Von der SPS
- EA´s mit EK1100 und EL2408 und EL1408 erfasst von der SPS (Reglerfreigaben Achsen, Druckbereit, Trigger zum Drucken)

Jetzt hat mal die SPS die Hohheit über die Hardware - hier kannst du alle zustände wie bereit, Fehler u.s.w Zyklisch auswerten.

Den Ablauf "starte die positionierung und fange an einer bestimmten position zu drucken an" würde ich auf der SPS lösen. Eine SPS ist für genau sowas gebaut.

Von deiner GUI kommen dann der Start an den Prozess (Boolsche Variable "Start", SPS meldet z.B. Boolsch "Ready", Busy" und "Done", dann kannst du noch eine Parameterschnittstelle aufmachen. über diese werden vor dem Start die Prozessdaten übermittelt.
Hat den Vorteil - die GUI wird nicht mit zyklischen operationen belastet, du hast ne saubere Trennung von Hardware und GUI. so kannst due sehr Strukturiert arbeiten.

Dieses Konzept habe ich so schon oft umgesetzt (inkl. o.g. Komponenten)


Mach Dir vorallem noch gedanken über Sicherheit, CE, Not-Aus und Schutzkonzept sowas sollte ganz am anfang mit einfließen - sonst kanns richtig teuer werden...


Gruß Bernd

Und an alle hier noch FROHE WEIHNACHTEN!!!!


----------



## BerndAllgäu (26 Dezember 2010)

drfunfrock schrieb:


> Meine Erfahrung (!) ist, dass wenn du Events  vorliegen hast, sich ADS lohnt. Z.B. wenn du einen speziellen Messwert loggen willst, der völlig willkührlich kommen kann. Dann loggt man auf der SPS so etwas in ein Array. Dieses Array aber per OPS zyklisch auf den PC zu laden kostet zu viele Ressourcen. Da habe ich dann lieber mit Zeiger, Array und einer Variablen gearbeitet, die mir dann gemeldet hat, das ein oder mehrere Events vorliegen. Mit hilfe der Zeiger kann man sich dann nur den Teil vom Array herunterladen, der benötigt wird. Das geht mit OPC nicht.
> 
> OPC ist dann gut, wenn man Variablen hat, die an einen Prozesswert gekoppelt sind, wie ein Füllstand, Spannung etc. Der OPC Server von Beckhoff koppelt übrigens per ADS-Protokoll an die SPS.



Dag geb ich Dir recht!

LG Bernd


----------



## ThomasAdler (30 Dezember 2010)

BerndAllgäu schrieb:


> Servus Thomas,
> 
> kannst Du mir bitte noch infos schicken was konkret umgesetzt werden soll. Für wen ist die anwendung (Industrie oder "Privat").
> Und was darf das z.B. kosten. Lösungen hab ich da mehrere - aber alle Entscheidungen sollten mit o.g. Punkten harmonieren.


Vorab
--> Und an alle hier noch guten RUTSCH und ein *gutes Neues 2011*!

Zunächst privat, ich möchte evtl. mich neu orientieren.
Da muss man wissen was es gibt, was heute möglich ist.
Nur wenn man wechselt kommt man auf neue, zeitnahe Entwicklungswerkzeuge.
Bin über mehrere Konzepte offen und dankbar.

Irgendwann kann dann jeder mal ein Softwarearchitekt werden.
Man muss wissen wwas es gibt, wie es anzuwenden ist, wie lange die Einarbeitung dauert.......

Grüße Thomas


----------



## ThomasAdler (30 Dezember 2010)

BerndAllgäu schrieb:


> VOLL Funktionsfähige Soft-SPS: http://www.beckhoff.de/tcatweb/twincat_download.aspx
> 
> Online Hilfe mit vielen Beispielen: http://infosys.beckhoff.com/


 


http://infosys.beckhoff.com/index.p...rt/html/tcquickstart_samplecsharp.htm&id=7860
Hallo Bernd,
ja das läuft aber nicht.
Gibt es eine Art DEMO? Was wäre hier zu tun?
Unable to load TcAdsDll.
---------------------------
OK 
Ads-Error 0x748 : Port is not open.
---------------------------
OK 
---------------------------
{"Unable to load DLL 'tcadsdll.dll': Das angegebene Modul wurde nicht gefunden. (Exception from HRESULT: 0x8007007E)"}

Grüße Thomas


----------



## BerndAllgäu (30 Dezember 2010)

Der Verweiß im VisualStudio Project neu machen....
Läuft die Soft-SPS?


----------

