.NET - C# - Apps im Maschinenbau - Konzept, Stand heute, was ist möglich?

ThomasAdler

Level-1
Beiträge
38
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich suche nach einem guten Konzept.
_KONZEPT_.jpg
SPS macht das Management, .NET, VS2013, C# die UI und das Handling mit dem MES System via XML Protokollaustausch.
Touchscreenbedienung ist ein MUSS, gerne auch über Apps.

Was suche ich?
- Konzept, Treiber, Realisierungsmöglichkeiten
- Gute WebCasts, Tutorials

A) mit Siemens S7
B) mit Codesys, Beckhoff oder xy

Danke im Voraus für hilfreiche Tipps. Beispielprojekt.

Grüße Thomas
 
Hallo,

ich habe zunächst noch 1-2 Fragen zu Deinem Konzept.

- Auf Deiner Skizze sieht das so aus, als ob die Daten von der SPS durch den Rechner an z.B. das SCADA geroutet werden sollen - ist das wirklich Deine Absicht?
- Was genau meinst Du mit "SPS macht das Management"? Ich gehe mal davon aus, das die SPS eine Maschine oder Anlage steuert?
- Inwieweit willst Du von dem PC aus auf das MES (oder Produktionsleitsystem, für alle, die wie ich erstmal googeln müssen ;)) zugreifen? Also was genau soll da passieren?
- Inwieweit greift die UI die Dir vorschwebt auf die SPS zu? Also was genau soll dem Benutzer an diesem Terminal möglich sein?
- Was genau meint Deine Schnittstelle Kunde? Was soll hier möglich sein?
- Sind die Schnittstellen SCADA, MES und Kunde Optionen oder sollen die alle realisiert werden?

Gruß

Christian
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wieso muss die GUI in C#.NET VS2013 realisiert werden? Mehraufwand der Entwicklung gegenüber einen HMI vom Markt macht imho nur bei großen Stückzahlen oder sehr, sehr speziellen Anforderungen Sinn. Und selbst bei den speziellen Anforderungen würde ich mir überlegen nicht ein normales HMI als Basis zu verwenden.
 
Beckhoff IPC oder Panel PC oder eine der größeren CXen (51XX oder 2XXX). Der SPS Teil läuft über die integrierte Soft SPS (TwinCAT). Anschluss der Peripherie entwender direkt (bei den CX) oder über EtherCAT Buskoppler beim IPC und Panel.
Kommunikationstreiber ist Beckhoff ADS. Die Schnittstelle ist offen und Beckhoff bietet die entsprechenden DLLs mit Beispielprogrammen kostenlos an. Die Integration in C# ist recht einfach, je nach Programmiererfahrung hat man schon nach 15-30 Minuten die ersten Erfolge.

Die PLC Runtime von TwinCAT gibt es zum Testen kostenlos. Die Lizenz muss dann alle 30 Tage (Bei TwinCAT 2) oder alle 7 Tage (bei TwinCAT 3) erneuert werden.

Visualisierung entweder Eigenbau (C#, VB, etc. pp) oder von einem Anbieter von SCADA Software (z.B. Atvise usw. usf.)

Tutorials / Beispiele : Beckhoff Infosys, die Webinare auf der Beckhoff Seite und Youtube.
 
- Auf Deiner Skizze sieht das so aus, als ob die Daten von der SPS durch den Rechner an z.B. das SCADA geroutet werden sollen - ist das wirklich Deine Absicht?
- Was genau meinst Du mit "SPS macht das Management"? Ich gehe mal davon aus, das die SPS eine Maschine oder Anlage steuert?
- Inwieweit willst Du von dem PC aus auf das MES (oder Produktionsleitsystem, für alle, die wie ich erstmal googeln müssen ;)) zugreifen? Also was genau soll da passieren?
- Inwieweit greift die UI die Dir vorschwebt auf die SPS zu? Also was genau soll dem Benutzer an diesem Terminal möglich sein?
- Was genau meint Deine Schnittstelle Kunde? Was soll hier möglich sein?
- Sind die Schnittstellen SCADA, MES und Kunde Optionen oder sollen die alle realisiert werden?

Nein, es soll lediglich zu einem Datenaustausch kommen.
In der Regel zu einem MES System - Socket, Serialisierung.

SPS - Management.
Steuert die Achsen, die Markiereinheit, macht den Automatisierungsprozess

UI - Teils kommen vorgaben, Variablen vom MES, die in den Prozess eingreifen müssen.
Das Ergebnis wieder an das MES muss zurückgemeldet werden.#

Identifiercode kommt vom Kunden, der auf das zu bearbeitete Werkstück aufgetragen werden muss.
Teils pro Werkstück bis zu 50 Identifier, die bei Start vom MES angefragt werden.

MES - Interface, Protokoll ist vorgegeben, die meist auf XML rausläuft, deshalb der Ansatz u.a. auch mit .NET, C#

Hoffe Du das Tipps, Beispiele.

Grüße Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich könnte hier noch VisiWin von InoSoft anführen.
Hier wird auch schon so Einiges bereit gestellt.
Du solltest aber in diesem Zusammenhang den Einwand von NoTrustNoRust nicht unberücksichtigt lassen : Das Ganze über VS als EXE-File laufen zu lassen macht nur dann Sinn, wenn die Basis deiner Maschinen / Anlagen immer ziemlich gleich ist - du dir also für die Basis eine Art Framework erstellen kannst. Dann sparst du in Folge (also nicht beim ersten Mal) eine ganze Menge Zeit ein - immer vorausgesetzt du vernagelst dich nicht mit deinem Konzept ...

Zu deiner Frage nach einem Beispiel : wie sollte das deiner Ansicht nach aussehen ...?

Gruß
Larry
 
Visualisierung entweder Eigenbau (C#, VB, etc. pp) oder von einem Anbieter von SCADA Software (z.B. Atvise usw. usf.)

Tutorials / Beispiele : Beckhoff Infosys, die Webinare auf der Beckhoff Seite und Youtube.

Hallo,

ok, kannst Du dennoch evtl. bei Youtube was konkretes für den Einstieg empfehlen. Ihr hier wisst am besten wie man reinkommt.
Wäre super in 30 Minuten einen groben Überblick zu bekommen;)

Ideal über C# Button SetzeAusgang(3)

Event - Eingang von 0->1
Event - Eingang von 1->0

Analog - Spannung von 0 auf 12 V drehen.

Ist das bei Eingangsänderung so zu sehen, dass ich wie bei einem Button Klick in eine Funktion reinkomme.

-----
z.B. Achssystem
MoveReferenz()
MovePosition(234) 234mm

Das gibt der Anwender im UI - WinForm C# oder über WPF vor.

Danke im Voraus und Grüße Thomas
 
Hallo Thomas,

Sorry, das ich immer noch nicht konkrete Beispiele in den Vordergrund stelle, aber ich finde es genauso wichtig die richtigen Fragen zu stellen ;)

UI - Teils kommen vorgaben, Variablen vom MES, die in den Prozess eingreifen müssen.
Das Ergebnis wieder an das MES muss zurückgemeldet werden.#

Das klingt für mich aber nicht nach einem UI sondern einer Schnittstelle SPS<->MES, warum muss/soll der Benutzer hier eingreifen können?
Identifiercode kommt vom Kunden, der auf das zu bearbeitete Werkstück aufgetragen werden muss.
Teils pro Werkstück bis zu 50 Identifier, die bei Start vom MES angefragt werden.

MES - Interface, Protokoll ist vorgegeben, die meist auf XML rausläuft, deshalb der Ansatz u.a. auch mit .NET, C#
Soweit ich Deine Anforderungen verstehe brauchst Du ein zuverlässiges Kommunikationsmittel MES <-> SPS wobei an der SPS eine Anzeigeeinheit für den Benutzer vorgesehen wird.
Ich möchte hier auch nochmal norustnotrust zitieren:
Mehraufwand der Entwicklung gegenüber einen HMI vom Markt macht imho nur bei großen Stückzahlen oder sehr, sehr speziellen Anforderungen Sinn.
Neben der Thematik das Rad neu zu erfinden denke ich dabei auch an den Aufwand für das Instandhaltungs-/Wartungspersonal. Letztendes nützt Dir eine Super-High-Tech-Lösung nix, wenn das Wartungspersonal anfängt Work-Arounds für Deine Abfragen zu entwickeln, weil sie das System nicht beherrschen. - Nur so ein Gedanke -
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmmm Beispiele auf Youtube weiss ich jetzt nicht. Aber die Doku zur ads.NET findest du =HIER=. Gleich mit Kurzbeispiel für das Lesen und schreiben einer Variable.

Das Erstellen einer eigenen HMI/SCADA Lösung in C#, C++ etc. erfordert viel Vorarbeit. Du musst richtig Planen und dir nach und nach ein Framework aufbauen, das du immer wieder verwenden und leicht erweitern kannst.
Wir haben das in der Firma gemacht und sind mittlerweile (nach gut 3 Jahren) so weit, das wir Standard HMI Lösungen im Visual Studio genauso schnell zusammenklicken können wie mit jedem beliebigen WYSIWYG HMI-Editor. Plus die ganzen Sonder-Controls (Erweitere Kurvendarstellung, Datenlogger, 3D Objekte, Kamera Einbindung, SAP Kommunikation ... ) die man so nicht in jeder Software findet.
Und wenn man Langeweile hat kann man noch etwas Schabernack treiben :) (Wer hat schonmal einen Industrieroboter mit einer Wiimote gesteuert?)
 
Zu deiner Frage nach einem Beispiel : wie sollte das deiner Ansicht nach aussehen ...?

Gruß
Larry


Hallo Larry,

einfach mal so.

Ideal über C# Button SetzeAusgang(3)

Event - Eingang von 0->1
Event - Eingang von 1->0

Analog - Spannung von 0 auf 12 V drehen.

Ist das bei Eingangsänderung so zu sehen, dass ich wie bei einem Button Klick in eine Funktion reinkomme.

-----
z.B. Achssystem
MoveReferenz()
MovePosition(234) 234mm

Das gibt der Anwender im UI - WinForm C# oder über WPF vor.

Grüße Thomas
 

Das klingt für mich aber nicht nach einem UI sondern einer Schnittstelle SPS<->MES, warum muss/soll der Benutzer hier eingreifen können?
Hallo,
nein, es muss schon ein PC, Win7 oder ggf. Win10 demnächst sein.

Ich gebe Achspositionen vor, beim Erreichen muss ein ID Code aufgebracht werden.
Da bietet sich eben die Schnittstelle XML Serialisierung an. Teils erhält man auch vom Kunden eine Assembly, die dann auf funktionsbasierte Schnittstellen zurückgreift, da tue ich mir noch schwerer mit einer SPS.

Ich will das Rad nicht neu erfinden, sondern mal sehen was der Markt her gibt.
Die richtigen Tools verwenden.

Wie macht das die Lebensmittel-und Automotiveindustrie heutzutage?

Es muss doch eine Art 'Patentrezept' geben, die an Unis etc. gelehrt wird.

Viele Grüße Thomas.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmmm Beispiele auf Youtube weiss ich jetzt nicht. Aber die Doku zur ads.NET findest du =HIER=. Gleich mit Kurzbeispiel für das Lesen und schreiben einer Variable.

Ja ok, das wäre ich von Beckhoff abhängig, aber durch die Assembly habe ich es leichter.

Touchscreen, HMI wird das mit Visual Studio 2013 in der Industrie verwendet und bietet es dann später auch mal die Apps (Smartphone) an.

Ich will ein zukunftssicher starten.

Wenn Beckhoff, gibt es so eine Art Staterkit? Evtl. auch für den Privatgebrauch.

Viele Grüße Thomas
 
einfach mal so.

Ideal über C# Button SetzeAusgang(3)

Event - Eingang von 0->1
Event - Eingang von 1->0

Analog - Spannung von 0 auf 12 V drehen.

Ist das bei Eingangsänderung so zu sehen, dass ich wie bei einem Button Klick in eine Funktion reinkomme.

Hallo Thomas,

das kannst du so machen. Es gibt die Möglichkeit, einen definierten Item direkt abzufragen und/oder ihn ein Event auslösen zu lassen.
Genauso kannst natürlich auch den Wert vom PC aus beschreiben.
Für beide Richtungen gibt es dann auch noch die Variante, es so zu machen, wie z.B. Flex es tut (du bekommst den letzten irgendwann einmal eingelesenen Wert bzw. der zu übertragende Wert landet irgendwann einmal in der SPS - also asynchron) oder du kannst es auch synchron tun (also der Wert, den du anfragst und erhältst ist exakt der Wert, der gerade in der SPS vorhanden ist bzw. beim Schreiben wird der Wert direkt geschrieben und du kannst im Programm den Result abfragen. Dann gibt es das noch zusätzlich über einen Trigger (also die Variablen eine Gruppe werden aktualisiert mit einem Trigger-Ereignis).

Gruß
Larry
 
@Thomas:
Der von mir vorgeschlagene Weg (VisiWin) funktioniert sowohl mit Siemens als auch mit Beckhoff.

und ...

Es gibt KEIN Patent-Rezept ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
das kannst du so machen. Es gibt die Möglichkeit, einen definierten Item direkt abzufragen und/oder ihn ein Event auslösen zu lassen.
Genauso kannst natürlich auch den Wert vom PC aus beschreiben.

Hallo Larry,

schön. Gibt es da einen Beispielcode, um das richtige Gespür zu bekommen?
Das wäre supernett.

Grüße Thomas
 
@Thomas:
Der von mir vorgeschlagene Weg (VisiWin) funktioniert sowohl mit Siemens als auch mit Beckhoff.

und ...

Es gibt KEIN Patent-Rezept ...

Code:
 public StateProcessWorkflow State
        {
            get { return StateProcessWorkflowCustomer; }
            set
            {
                StateProcessWorkflowCustomer = value;
                switch (StateProcessWorkflowCustomer)
                {
                    default:
                        System.Diagnostics.Debug.Assert(false);
                        break;
                    case StateProcessWorkflow.NotDefine:
                        break;
                    case StateProcessWorkflow.BaseInformations:
                        break;
                    case StateProcessWorkflow.TypeSelectionOrderStartReflow1:
                    case StateProcessWorkflow.TypeSelectionOrderEndReflow1:
                        State = StateProcessWorkflow.ProductionAllowed;
                        break;

Konzeptaufteilung
Zustände Maschine ------ Je nach Zustand muss am MES was mitgeteilt werden.

Sicher kein Patent Rezept, aber aus Schulungen etc. muss es doch eine Herangehensweise geben.

Grüße Thomas
 
Ich denke, du solltest dir erstmal anschauen was die ganzen Anbieter von SCADA und HMI Software so im Portfolio haben. Da gibt es meist auch Kommunikationstreiber für alle gängigen Steuerungssysteme im Programm oder du verwendest einen Standard wie OPC UA.
Bei einer Eigenbaulösung musst du die ganze Kommunikation selber regeln. Das geht mit Beckhoff ADS vieleicht ganz gut, aber spätestens wenn du auf Siemenssteuerungen zugreifen willst, musst du entweder Lösungen zukaufen oder dich z.B. in Libnodave einarbeiten (Klasse Bib, aber vom Komplexitätsgrad meiner Meinung nach doch ein paar Nummern härter als ADS)

Zudem solltest du dir auch mal Gedanken machen, wie es in Zukunft Personalmäßig bei euch aussieht. Die Wahrscheinlichkeit einen Ingenieur oder Techniker zu finden, der mit WinCC oder einer anderen HMI Software umgehen kann ist um Welten größer, als das dir ein Hochsprachen Crack über dem Weg läuft.

Momentan ist Siemens in Deutschland immernoch Marktführer (Tendenz vlt. leicht fallend, aber die anderen Hersteller werden noch Jahre brauchen um da wirklich am Sockel Wackeln zu können). Da musst du dir überlegen für wen ihr Anlagen baut.

Ein Starterkit in dem Sinne kenne ich jetzt von Beckhoff nicht, aber du brauchst ja auch keine Hardware um zu testen. Es reicht schon aus, wenn du dir TwinCAT runterlädst (am besten gleich die 3er Version) und die Runtime mit einer Test Lizenz auf deinem PC laufen lässt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es da einen Beispielcode, um das richtige Gespür zu bekommen?
Das wäre supernett.

Ja klar ... aber von mir nur VB.NET - C# kann ich zwar lesen ... Erstellen ist aber nicht unbedingt mein Ding.
Da das aber im Wesentlichen .Net ist sollte es kein Problem darstellen.
Ich suche dir mal etwas heraus ...
 
Code:
 public StateProcessWorkflow State
        {
            get { return StateProcessWorkflowCustomer; }
            set
            {
                StateProcessWorkflowCustomer = value;
                switch (StateProcessWorkflowCustomer)
                {
                    default:
                        System.Diagnostics.Debug.Assert(false);
                        break;
                    case StateProcessWorkflow.NotDefine:
                        break;
                    case StateProcessWorkflow.BaseInformations:
                        break;
                    case StateProcessWorkflow.TypeSelectionOrderStartReflow1:
                    case StateProcessWorkflow.TypeSelectionOrderEndReflow1:
                        State = StateProcessWorkflow.ProductionAllowed;
                        break;

Konzeptaufteilung
Zustände Maschine ------ Je nach Zustand muss am MES was mitgeteilt werden.

Sicher kein Patent Rezept, aber aus Schulungen etc. muss es doch eine Herangehensweise geben.

Grüße Thomas

An einer Property direkt festmachen würde ich das so aber nicht.
Ich denke mal, dass das eher so geht, das du einen Thread oder Backgroundworker hast in dem du den gewählten Arbeitsmodus abfragen wirst/mußt.
 
Zurück
Oben