# SPS (S7) mit PHP steuern?



## phpprogrammierer (30 Mai 2011)

Hallo zusammen.

Wir haben ein Lager mit einem Fördersystem. Das bedeutet, dass das Material vom LKW in eine Förderkette gehängt und zu einer bestimmten Lagerbahn transportiert wird.

Dieses System ist von der Firma D*******, die die SPS & Lagerbahn-Hardware lieferte und auch einen Rechner, der als Schnittstelle dient, um mit dem Fördersystem zu kommunizieren.

Diese Kommunikation findet so statt, dass man zu diesem besagten Rechner ein XML-Telegramm per TCP sendet und dieses ausgewertet wird. Der Rechner "spricht" dann mit der SPS.

Oder es kommen Informationen von der SPS, die der Rechner erhält und ein Telegramm mit einer Information herausschickt (bspw. "Material an Lagerbahn 0815 angekommen"), worauf man wiederum reagieren kann. (z.B. Buchung des Materials vom LKW auf Lagerbahn 0815)

Mein Chef hatte nun die Idee, den Part, den die Firma D******* übernommen hat, durch Eigenleistung zu ersetzen, falls man selber mal ein neues Lager aufbauen möchte. (Zur Zeit haben wir Beckhoff, aber künftig wollen wir S7 für neue Projekte nehmen.)

Das heißt, dass ich als Programmierer die SPS (direkt) ansprechen soll, um mit ihr zu kommunizieren. 

Damit könnte der Rechner der Firma D******* komplett wegfallen und das System noch ausfallsicherer gemacht werden, da man ja Hardware einspart.

Nun ist es aber leider so, dass ich als Programmierer (hauptsächlich PHP) davon keine Ahnung habe und noch nicht einmal im Ansatz weiß, wie ich an so eine SPS herantreten soll.

Ich stelle mir das so vor, dass in den Server (auf dem das PHP-System läuft) eine zusätzliche Steckkarte kommt, die mit der SPS verbunden wird.
Wir benötigen dann jemanden, der

1.
die SPS programmiert (Wieviel Arbeit ist das eigentlich?)

2.
eine Schnittstelle bereitstellt, über die ich in PHP (TCP, Tool für Kommandozeilen-Ebene, was auch immer) mit der SPS kommunizieren kann

Die Frage ist also: Wie geht man vor!? Ich kann mir ja nun nicht einfach einen SPS-Programmierer holen und ihn irgendwas programmieren lassen.

Es wäre bspw. praktisch, wenn es sowas wie ein Test-Systemboard geben würde, mit dem man herumfummeln kann, ums dann auf ein großes System übertragen zu können.

Oder wie? Oder was? Oder denke ich falsch?   

Wie würdet ihr vorgehen? Oder stand vielleicht mal jemand vor einer ähnlichen Herausforderung?!

mfg


----------



## weristwieGott (30 Mai 2011)

Hallo,

ich würde mir an Deiner Stelle ComDrvS7 von der Firma MHJ-Software ansehen. Du kannst eine kostenlose Demoversion von der Internetseite (www.mhj-online.de) downloaden und probieren ob Du mit der Software zurechtkommst. Leider ist in den unterstützten Programmiersprachen PHP nicht aufgeführt, vielleicht kannst Du Dich in eine andere Programmiersprache die vielleicht mit PHP Ähnlichkeit hat einarbeiten.

MfG

Michael


----------



## Jochen Kühner (30 Mai 2011)

Also Ich habe jetzt nicht ganz verstanden was du überhaupt machen willst! Wenn es um eine Visualisierung einer SPS in einer PHP Webseite geht schau dir das mal an: http://sps-forum.de/showthread.php?t=32409&highlight=php+s7

Aber Ich galube dir geht es irgendwie mehr um den Steuerpart, also so das dein PHP Programm MFR funktionalität auf der PC Seite übernimmt (oder liege Ich falsch). Ich würde das zwar nicht mit PHP machen, aber dazu denke Ich wird dann eine meist TCP/IP Kopplung zwischen der PLC und dem Programm hergestellt, d.h. dein Programm schreibt normalerweise nicht direkt in Datenbausteine auf der SPS sondern tauscht eigens dafür definierte Telegramme aus. Das müsstest du dann in PHP mit Sockets realisieren!


----------



## Larry Laffer (30 Mai 2011)

Hallo,
dann sage ich mal etwas zu dem HW-Konzept.
Ich würde es genau so ausführen, wie euer Anbieter (Lieferant) es vorgeschlagen hat. Ein abweichende Lösung halte ich nicht für praktikabel.
Ob du so etwas (wenn du bisher nie etwas ähnliches gemacht hast) allerdings kostenneutral selbst erstellen kannst kann ich mir nicht vorstellen.

Gruß
Larry


----------



## bike (30 Mai 2011)

Jetzt habe doch einige Fantasie, doch was du genau möchtest kann ich mir nicht vorstellen.
Was macht die PLC, was macht der Serverdienst des Lieferanten und was soll deine Software machen? 

Wenn ich jetzt nachdenke, dann wäre eine strukturierte Beschreibung was wann wie gemacht sinnvoll.
Für dich, der du das Projekt programmieren willst und uns hier, damit wir wissen was du programmieren willst.

Soll das ein PLS werden oder eine Aufgabener- und verteilsoftware oder was? 

Von Hochsprachen direkt in die Steuerung reinzuschreiben sollte gut und genau geplant sein.


bike


----------



## phpprogrammierer (31 Mai 2011)

Hm, sorry, ich weiß im Moment nicht, wie ich Euch mein Vorhaben genau(er) erklären soll!?  

So wie *Jochen Kühner *es beschrieben hat, ist es schon richtig: Im Endeffekt brauche ich die Programmierung einer S7, die zur "normalen" SPS-Steuerung auch eine Schnittstelle nach aussen (TCP/IP) anbietet, damit ein externes System (mein PHP mit Datenbank etc.) auf die Daten zugreifen kann.

Diese Kommunikation findet zur Zeit über Sockets statt, was auch gut funktioniert. Also wird's wohl in der "neuen Version" genauso sein, schätze ich mal.

Die Aufgabe: Mit jemandem zusammen die Programmierung einer SPS in Angriff zu nehmen und Schnittstellen zu besprechen.
Die Problematik: Ich stecke nicht drin in dieser Materie und weiß zur Zeit nicht, wie ich an so ein Projekt herangehen soll. (Es wäre bspw. nicht sinnvoll, sich einfach einen SPS-Programmierer ins Haus zu holen, ohne vorher selber mal hineingeschnuppert zu haben.)

Ziele:

1.
Elimierung des Fremdrechners, der nur als Schnittstelle zwischen SPS und PHP dient. Wenn ich weiß, wie ich die Schnittstellen der SPS ansprechen muss, könnte ich die Kommunikation auch selber mit PHP (oder von mir aus mit einer anderen Programmiersprache) erledigen.

Aber die Kommunikation könnte zumindest über den sowieso vorhandenden Server gemacht werden, so dass nicht noch ein zusätzlicher Rechner benötigt wird, so wie es jetzt der Fall ist.

IST-Zustand:
PHP-/Datenbank-Server   <-----kommuniziert mit-----> Fremdrechner <-----kommuniziert mit-----> SPS​ 
SOLL-Zustand:
PHP-/Datenbank-Server   <-----kommuniziert mit-----> SPS​
2.
Support-Anfragen und -Kosten an die Fremdfirma fallen weg, denn die bekommen nicht nur Geld, falls etwas ist, sondern auch, falls nichts ist. 

3.
Variabilität, da man nicht darauf angewiesen ist, dass die Fremdfirma Zeit für Änderungen haben.

Zur Verdeutlichung: Selbst relativ kleine Änderungen dauern bis zu 3 Monate und kosten einen fünfstelligen Beitrag! Wir sind zur Zeit völlig abhängig von der Firma, da ja nur die Firma ihre Hard-/Software kennt.

Ich hoffe, ich habe mein Anliegen verdeutlich. Falls noch etwas unklar ist, bitte nachfragen.

mfg

P.S.:
Und wenn möglich, bitte nicht mit Abkürzungen um sich werfen.  
Ich habe zwar einige gegoogelt, aber bei vielen weiß ich nicht, was sie bedeuten, da sie mehrfach verwendet werden.


----------



## bike (31 Mai 2011)

Wenn ich jetzt richtig verstehe, dann soll das Bereitstellen und Aufbereiten der Daten von eurem Rechner gemacht wird, richtig?

Dann kann das PLC Programm dir Aufschluss geben wie die Daten aussehen müssen.
Mit dieser Information kannst du einen Filter oder Wandler schreiben, der dann den Datenaustausch regelt.


bike


----------



## Larry Laffer (31 Mai 2011)

phpprogrammierer schrieb:


> Die Aufgabe: Mit jemandem zusammen die Programmierung einer SPS in Angriff zu nehmen und *Schnittstellen zu besprechen*.
> Die Problematik: Ich stecke nicht drin in dieser Materie und weiß zur Zeit nicht, wie ich an so ein Projekt herangehen soll. (Es wäre bspw. nicht sinnvoll, sich einfach einen SPS-Programmierer ins Haus zu holen, ohne vorher selber mal hineingeschnuppert zu haben.)


 
Das greife ich jetzt mal auf (auch in Anlehnung an meinen letzten Beitrag).
Du mußt das Ganze nur von der Warte der Programmierung sehen. Es gäbe hier auszuführende Funktionen / Abläufe - wie in jedem Programm. Ob man die Aufgaben in dem Programm beläßt oder sie mittels irgendwelcher SW-Schnittstellen an andere Programme oder andere Rechner weitergibt ist m.E. irrelevant - entscheidend ist : ich vergebe eine Unter-Aufgabe, erwarte die Ausführung dieser und anschließend eine Rückmeldung über die Erledigung. Das wäre der Aufbau - egal, ob du es eine andere Prozedur oder die SPS ausführen läßt.

Die SPS hat ihren Sinn und ihre Stärke in der Ablaufsteuerung und -Ausführung. Sie ist dagegen allerdings kein großer Daten-Hantierer.

Ich würde nicht von deinem Daten-Server aus dirket die SPS ansteuern - das erschwert u.U. das Debugging und du nimmst dir die Möglichkeit von manuell Eingriffen (zu welchem Zweck auch immer). Darüber hinaus sollte ja irgend etwas anzeigen, was gerade gemacht wird und vielleicht auch, was als nächstes zu machen ist. Vielleicht willst du auch "vor Ort" die Abarbeitungs-Reihenfolge ändern ...
An der Stelle würde ich also das schon genannte Zwischen-System (aus unterschiedlich Gründen) einbauen.

Was machst du übrigens mit deinem angedachten System, wenn der Datenserver oder das Netzwerk mal nicht läuft ?

Gruß
Larry


----------



## phpprogrammierer (31 Mai 2011)

Vielen Dank für Deine Ausführungen, *Larry Laffer*, aber Du vergisst vielleicht, dass das jetzt ja alles schon so vorhanden ist und ich nicht das Rad neu erfinden und Risiken eingehen werde.

Deshalb stellt sich für mich die Frage nach einem Server- oder Netzwerkausfall für das "neue" System gar nicht.
Ganz im Gegenteil: JETZT muss ich mir über einen Ausfall des Fremdrechners Gedanken machen, denn auf diesen habe ich absolut keinen Einfluß. Ich muss warten, bis ein Techniker der Fremdfirma da ist und Ersatz bereitstellt oder den Defekt behebt.

Steuere ich die SPS (in welcher Form auch immer) aber selber, bin ich für die Hardware verantwortlich und kann ohne Verzögerung eingreifen.

Dass die Neu-Programmierung und Einrichtung nicht an einem Wochenende zu machen ist und Zeit/Kosten in das Projekt gesteckt werden müssen, ist mir (uns) klar. Es wird auch Fehlschläge geben.
Doch im Endeffekt ist eine eigene Lösung günstiger und praktikabler als der Einsatz einer Fremdfirma.

@bike:
Kannst Du dazu konkrete Angaben machen? Was genau ist ein PLC-Programm? Wie sieht so ein Wandler aus? In welcher Programmiersprache müsste man ihn schreiben? Gibt's Tutorials dazu im Netz?

mfg


----------



## LowLevelMahn (31 Mai 2011)

*PLC-Programm?*

PLC == SPS (siehe Wikipedia) ist nur deutsch/englisch

*Was ist in eurer SPS drinn?*
du bist dir schon bewusst darüber das in der SPS richtige (umfangreiche) Programme laufen? Kannst du mal genau definieren was du denkst was in eurer SPS drinnsteckt?

*Wechsel Beckhoff/S7?*
am Anfang kams so rüber als sollte auch eine Wechsel auf S7 vorgenommen werden - ist das gewollt, oder nicht - falls ja braucht ihr definitiv einen SPS-Programmierer
*
Was genau macht der Rechner dieser Fremdfirma*
Steuert der selbst? visualisiert der nur viel? Also wieviel Wissen steckt in dem Rechner und der SPS?

Falls du steuernd Eingreifen willst kannst du dich definitiv von dem PHP-Gedanken verabschieden

btw: Es ist nicht unbedingt gesagt das zum Schreiben/Lesen von Daten eine SPS-Programmänderung nötig ist - also wofür der SPS-Programmierer?


----------



## phpprogrammierer (31 Mai 2011)

*Was ist in eurer SPS drinn?*
Das weiß ich nicht. Deshalb bin ich hier.

*Wechsel Beckhoff/S7?*
Chef will S7. Da wir ja sowieso nur beginnen, ist es kein Wechsel, sondern einfach nur der Start mit einer bekannten SPS-"Variante".

*Was genau macht der Rechner dieser Fremdfirma*
Genau das ist ja die große Frage, die niemand beantworten will. Wir wissen, dass darauf u.a. eine gigantische Datenbank läuft, die Unmengen an Daten schreibt, die niemand benötigt.
Für uns relevantes Wissen, das in diesem Rechner steckt, ist wohl nur die Schnittstellen-Programmierung. Alle andere Daten sind für uns irrelevant.



> Falls du steuernd Eingreifen willst kannst du dich definitiv von dem PHP-Gedanken verabschieden


Warum? Das ist alles eine Frage noch Schnittstellen-Definition. Ich bekomme ja jetzt auch Daten, die in auf meinem eigenen Datenbank-Server verarbeite.



> btw: Es ist nicht unbedingt gesagt das zum Schreiben/Lesen von Daten eine SPS-Programmänderung nötig ist - also wofür der SPS-Programmierer?


Ich zitiere mich immer ungern, aber: "Das weiß ich nicht. Deshalb bin ich hier."

Aber ich denke, dass wohl jemand der SPS mitteilen muss, wann welche Klappen sich öffnen muss, damit das Material von der Förderkette auf die Lagerbahn fällt, Steuerung der Motoren, Lichttaster usw. usw.

Wenn wir eine S7 kaufen, ist sie ja "nackt". Sie weiß nichts von Lagerbahnen, der Förderkette, Motoren usw.
Das muss eine SPS-Programmierer ihr ja beibringen.

Deshalb finde ich die Frage "also wofür der SPS-Programmierer?" irgendwie komisch...oder!?!?

mfg


----------



## LowLevelMahn (31 Mai 2011)

> *Was ist in eurer SPS drinn?*
> Das weiß ich nicht. Deshalb bin ich hier.


in deinem letzten ASCII-Art hast du noch nicht von einer SPS Ersetzung geredet - dir ist klar das Beckoff und S7 nicht wirklich kompatible sind? Da müsst ihr bestimmt alles neu/anders machen



> *Wechsel Beckhoff/S7?*
> Chef will S7. Da wir ja sowieso nur beginnen, ist es kein Wechsel,  sondern einfach nur der Start mit einer bekannten SPS-"Variante".


...also aus dem Bauch heraus...



> *Was genau macht der Rechner dieser Fremdfirma*
> Genau das ist ja die große Frage, die niemand beantworten will. Wir  wissen, dass darauf u.a. eine gigantische Datenbank läuft, die Unmengen  an Daten schreibt, die niemand benötigt.
> Für uns relevantes Wissen, das in diesem Rechner steckt, ist wohl nur  die Schnittstellen-Programmierung. Alle andere Daten sind für uns  irrelevant.


d.h. es gibt eine Oberfläche oder sowas - nirgends wird was eingegeben/gestartet - das System läuft 24h/7Tage die Woche automatisch



> > Falls du steuernd Eingreifen willst kannst du dich definitiv von dem PHP-Gedanken verabschieden
> 
> 
> Warum? Das ist alles eine Frage noch Schnittstellen-Definition. Ich  bekomme ja jetzt auch Daten, die in auf meinem eigenen Datenbank-Server  verarbeite.


falls du wirklich nur Daten abgreifst (so wie jetzt) gebe ich dir recht - aber sobald mehr Bewegung ins Spiel kommt wirst du schnell merken das Steuerungssoftware nicht die Domäne von PHP ist (ich spreche PHP fliessend)



> Aber ich denke, dass wohl jemand der SPS mitteilen muss, wann welche  Klappen sich öffnen muss, damit das Material von der Förderkette auf die  Lagerbahn fällt, Steuerung der Motoren, Lichttaster usw. usw.
> Wenn wir eine S7 kaufen, ist sie ja "nackt". Sie weiß nichts von Lagerbahnen, der Förderkette, Motoren usw.
> Das muss eine SPS-Programmierer ihr ja beibringen.
> Deshalb finde ich die Frage "also wofür der SPS-Programmierer?" irgendwie komisch...oder!?!?


Jetzt hast du ja auch klar gestellt das ihr definitiv auch die SPS-Technik und Programme ersetzen wollt - kannst du mal einen Überblick geben von wieviel SPSen,Förderbänder,Motoren,Sensoren usw. du redest - damit vielleicht eine gröbste Abschätzung funktionieren kann

Aber mit dem bishreigen (Un)Wissen über den Kern (Fremdrechner+SPS) und die verwendeten Technologien hört sich das sehr ambitioniert an


----------



## Larry Laffer (31 Mai 2011)

So ... jetzt spekuliere ich auch mal ein bißchen :

*Was genau macht der Rechner dieser Fremdfirma*
- der nimmt die aufbereiteten Aufträge (alle) entgegen und stellt sie der SPS (Stück für Stück) zur Verfügung. Wenn ich ihn machen würde könnte der Bediener hier auch zwischen möglichen Aufträgen auswählen.

*Was ist in eurer SPS drin ?*
- ich würde hier die je nach und entsprechend des Auftrages benötigten Aktionen ausführen.



> Aber ich denke, dass wohl jemand der SPS mitteilen muss, wann welche Klappen sich öffnen muss, damit das Material von der Förderkette auf die Lagerbahn fällt, Steuerung der Motoren, Lichttaster usw. usw.


- ich denke, dass das die SPS entsprechend der gemachten Vorgaben selbst entscheidet - wenn nicht wäre sie unnötig (siehe auch weiter oben)



> Ich zitiere mich immer ungern, aber: "Das weiß ich nicht. Deshalb bin ich hier."


Blöder Spruch - du mußt schon wissen, *WAS *du machen möchtest. Bei dem *WIE* könnnen wir dich ggf. unterstützen ...


----------



## bike (31 Mai 2011)

Mir kommt das so vor:
Wir machen was und später entscheiden wir, was wir wollen.

Du würdest es uns sehr viel leichter machen, wenn du zumindest die Aufgabe der Anlagen uns schilderst.
Es wird sich bestimmt jemand finden, der mit dem PLC Programm und den Daten der DB dir ein Interface schreiben.

Doch ich würde an deiner Stelle zunächst die Daten zusammen tragen was wann wie und warum zur Zeit und in Zukunft gemacht wird.
Diese Angaben mit der Produktion verfeinern und dann ein Pflichtenheft aufstellen.

Hier ins Blaue zu spekulieren bringt weder dir noch uns etwas.


bike

P.S: ob das Interface in PHP zuschreiben oder geschrieben werden soll, würde ich ebenfalls kritisch hinterfragen


----------



## phpprogrammierer (1 Juni 2011)

LowLevelMahn schrieb:


> nicht von einer SPS Ersetzung geredet - dir ist klar das Beckoff und S7 nicht wirklich kompatible sind? Da müsst ihr bestimmt alles neu/anders machen


Entschuldige, aber dann musst Du genauer lesen. Ich habe mehrmals geschrieben, dass es darum geht, bei *zukünftigen* Projekten eine Anlage ohne die Fremdfirma aufzubauen.

Es geht *nicht* darum, die jetzige Anlage zu ersetzen! Ich bin doch nicht bekloppt! 



LowLevelMahn schrieb:


> ...also aus dem Bauch heraus...


Wie das bei Chefs halt so ist. Vielleicht will er sich von der Hardware der Fremdfirma "absetzen", damit niemand sagen kann: "Ihr habt unsere Idee geklaut."

Theoretisch wäre es ja sicher möglich, die Beckhoff-SPS auszulesen und sich eine Art "Grundlage" zu schaffen, oder?
Dadurch könnte im WORST CASE ein Streit über Eigentum usw. entstehen, denn die Fremdfirma wird sicher nicht besonders begeistert sein, wenn wir sie künftig nicht mehr brauchen...



LowLevelMahn schrieb:


> d.h. es gibt eine Oberfläche oder sowas - nirgends wird was eingegeben/gestartet - das System läuft 24h/7Tage die Woche automatisch


Doch, eine Oberfläche gibt es schon. Sie zeigt bspw. Responsezeiten usw. an. Aber es ist kein Interface, bei dem man nun irgendwelche Daten eingeben muss.

Ich versuche es noch einmal zu erklären:
Es handelt sich um ein Fördersystem in einem großen Lager. Wenn ein LKW mit neuem Material ankommt, werden die Materialträger in die Förderkette gehängt und ein Knopf gedrückt, der die Kette in Betrieb setzt.

Ein Barcodescanner ermittelt die Nummer des Trägers. Diese Nummer wird per TCP/IP von dem Fremdrechner als sogenanntes Telegramm an den PHP-Server geschickt, auf dem eine Datenbank läuft, in der wiederum steht, zu welcher Lagerbahn der Träger gebracht werden soll:

Trägernummer   Lagerbahn
 000111       123
 000451       461
 000333       123
 000144       563

(Wie diese Zuweisung zustande kommt, sei mal dahingestellt. Das leistet mein PHP-System anhand des Lagerzustands, dem neu einzulagernden Material und diversen Parametern.)

Die Nummer der Lagerbahn wird per Telegramm an den Fremdrechner geschickt, der sie an die SPS weiterleitet. Diese weiß dann, wohin der eingescannte Materialträger per Förderkette transportiert werden soll.

Kommt der Materialträger 000111 an Lagerbahn 123 an, geht per Luftdruck eine "Klappe" auf und der Träger rutscht auf eine Lagerbahn.

Ich hoffe, dass das als Erklärung ausreicht!?



LowLevelMahn schrieb:


> mehr Bewegung ins Spiel kommt wirst du schnell merken das Steuerungssoftware nicht die Domäne von PHP ist (ich spreche PHP fliessend)


Das hatte ich ebenfalls schon geschrieben: Ich gehe davon aus, dass ich mit PHP *nicht direkt* mit der SPS kommunizieren kann.

ABER: Man könnte die Schnittstelle zwischen PHP und SPS selber programmieren und die Software dafür auf den sowieso vorhandenen PHP-/Datenbank-Server installieren, um (und damit wären wir beim Hauptziel dieses Vorhabens) den Fremdrechner aus der Kommunikationslinie zu entfernen.



LowLevelMahn schrieb:


> von wieviel SPSen,Förderbänder,Motoren,Sensoren usw. du redest


So ganz detailliert aus dem Kopf nicht. (Die Unterlagen sind auch recht dürftig.)
Es handelt sich um 1 Förderkette, die mit 1 SPS 200 Lagerbahnen ansteuern kann. Jede Lagerbahn hat eine Luftdruck-Klappe für den "Abwurf" und auch einen "Lagerbahn ist voll"-Sensor, der aber bei neuen Projekten sowieso "weg-optimiert" werden soll.
Die jetzige Anlage hat 11 Motoren.

Aber noch einmal: Das sind nur grobe Werte. Bei neuen Projekten könnte sich die Hardware ändern, weil mehr oder weniger Lagerbahnen genutzt werden und die Kette entsprechend länger und kürzer ist.



Larry Laffer schrieb:


> - der nimmt die aufbereiteten Aufträge (alle) entgegen und stellt sie der SPS (Stück für Stück) zur Verfügung.....


Nein, das ist nicht korrekt. Der Fremdrechner macht wirklich nichts anderes als die Schnittstelle zwischen mir (PHP) und der SPS herzustellen.
Es stimmt zwar, dass darauf eine Datenbank läuft und er auch ein paar Sachen visualisiert, aber das ist für den Betrieb der Förderkette und für uns völlig irrelevant.

Vielleicht sollte ich noch erklären, dass diese Anlage eigentlich für Wäschereibetriebe konzipiert und an unsere Anforderungen angepasst wurde.
Das System leistet also deutlich mehr, als wir eigentlich benötigen.



Larry Laffer schrieb:


> - ich denke, dass das die SPS entsprechend der gemachten Vorgaben selbst entscheidet


Ja, natürlich. Ich meinte mit "dass wohl jemand der SPS mitteilen muss", dass jemand die SPS (einmalig) programmieren muss.



Larry Laffer schrieb:


> du mußt schon wissen, *WAS *du machen möchtest.


Auch das habe ich IMHO schon mehrmals geschrieben: Ich bräuchte einen Tipp, wie ich anfangen und mich vorbereiten soll. Gibt es so etwas wie ein "Starter-Paket" oder ein besonders gutes Tutorial, das man sich durchlesen kann!?
Ich sag's noch einmal: Dass wir früher oder später einen SPS-Programmierer brauchen, davon gehe ich mal aus. (Es sei denn, ich lerne die Sprache und programmiere es selber. ) 
Aber ich möchte mir noch niemanden ins Haus holen, bevor ich nicht selber einen Überblick habe, damit der Typ mir nichts vom Pferd erzählen kann.

Ausserdem brauche ich für meinen Chef ein wenig Informationsmaterial und ich muss ihm sicher auch eine ganz grobe Planung vorlegen, wie man an so ein Projekt herangehen kann.



bike schrieb:


> Wir machen was und später entscheiden wir, was wir wollen.


Na, nun tust Du mir aber Unrecht. Ich versuche jede Frage zu beantworten und ich habe auch schon mehrmals erklärt, um was es (grob) geht.

Ob das zukünftige System nun bspw. 5 oder 10 Motoren haben wird, ist doch als Information für den ersten Einstieg wohl irrelevant. Wenn man weiß, wie's bei 2 Motoren geht, kann man's auch für 10 Motoren erweitern...



bike schrieb:


> Du würdest es uns sehr viel leichter machen, wenn du zumindest die Aufgabe der Anlagen uns schilderst.


Auch das habe ich schon mehrmals gemacht. Aber in diesem Beitrag wohl noch deutlicher als zuvor...



bike schrieb:


> Diese Angaben mit der Produktion verfeinern und dann ein Pflichtenheft aufstellen.


Du bist IMHO schon 5 Schritte voraus! Eine solche (detaillierte) Planung ohne den SPS-Programmierer zu machen, wäre unsinnig.

Ich bin hier, um *einen ersten Einblick* in die SPS-Programmierung (grundsätzliche Planung, Programmierung, Hardware-Anforderungen,...) zu bekommen!

mfg


----------



## Larry Laffer (1 Juni 2011)

phpprogrammierer schrieb:


> Ich gehe davon aus, dass ich mit PHP *nicht direkt* mit der SPS kommunizieren kann..


 


phpprogrammierer schrieb:


> Man könnte die Schnittstelle zwischen PHP und SPS selber programmieren und die Software dafür auf den sowieso vorhandenen PHP-/Datenbank-Server installieren, um (und damit wären wir beim Hauptziel dieses Vorhabens) den Fremdrechner aus der Kommunikationslinie zu entfernen..


 


phpprogrammierer schrieb:


> Der Fremdrechner macht wirklich nichts anderes als die Schnittstelle zwischen mir (PHP) und der SPS herzustellen.


 
Ich picke jetzt mal diese Passagen aus deinem Beitrag weil die im Grunde den Teil deines Konzeptes repräsentieren an dem ich mich "hochgezogen" habe ...

Nach meiner Meinung hast du hier ein philosophisches Problem. Wie du das "Interface" hier gestaltest ist natürlich (wie du schon geschrieben hast) variablel - aus eigener Erfahrung hatte ich nur empfohlen, es mit einem PC "vor Ort" zu realisieren, da dieser dann auch weitere Steuer-Funktionen übernehmen kann.
Ich bin auch hinsichtlich stabiler Verfügbarkeit eines PC-Netzwerks im Produktions-Umfeld ein "gebranntes Kind".

Was den Rest deiner Überlegungen angeht (also bezüglich der SPS) bist du m.E. "sauber". Wie schon geschreiben : das SPS-Programm hat die Aufgabe mit der lieferung entsprechend der gemachten Vorgaben umzugehen - wie es das macht ist dann das SPS-Programm ...

Gruß
Larry


----------



## phpprogrammierer (1 Juni 2011)

Larry Laffer schrieb:


> aus eigener Erfahrung hatte ich nur empfohlen, es mit einem PC "vor Ort" zu realisieren, da dieser dann auch weitere Steuer-Funktionen übernehmen kann.


Sorry, aber ich verstehe immer noch nicht, wozu Du den zusätzlichen Rechner haben willst. Das ist doch nur wieder Hardware, die kaputt gehen kann!?!

Mir ist nicht klar, was daran problematisch ist, die Steuerung der SPS (Zuweisung der Lagerbahn etc.) direkt vom Datenbank-Server aus zu machen, wenn dieser doch sowieso gebraucht wird.
Ein "Zwischenstück" ist doch nur eine weitere Fehlerquelle und verlangsamt (wenn auch nur sehr gering) die Kommunikation.



Larry Laffer schrieb:


> Ich bin auch hinsichtlich stabiler Verfügbarkeit eines PC-Netzwerks im Produktions-Umfeld ein "gebranntes Kind".


Verstehe. Aber ohne Netzwerk geht es ja sowieso nicht und dass das Netz läuft, davon muss ich einfach mal ausgehen...



Larry Laffer schrieb:


> wie es das macht ist dann das SPS-Programm ...


Und genau da liegt doch der Hase im Pfeffer. Wie macht man sowas? Welche Programmiersprache muss man können? Welche Hardware brauche ich, um mir ein kleines System für den Schreibtisch aufzubauen? Ich kann mir doch keinen S7-Chip kaufen, ein Kabel dranklemmen und darauf warten, dass sich etwas tut.
Man beginnt (so nehme ich an) doch im Kleinstformat mit einem System und erweitert dieses später. (Stichwort: Starter-Paket)

Oder anders gefragt: Wie seid ihr zur SPS-Programmierung gekommen? Wie habt ihr angefangen? Wo habt ihr die Hardware her?

mfg

Nachtrag: Um es vielleicht noch einmal zu verdeutlichen, weshalb ich hier bin...

Wenn jemand zu mir kommen und sagen würde: "Ich möchte gerne PHP lernen. Was muss ich dafür tun und was brauche ich!?"

Dann würde ich ihm sagen:
- Du brauchst einen Webserver (bspw. Apache), eine Datenbank (bspw. MySQL) und natürlich PHP. Das alles gibt's komplett als Download für den Einstieg bei w*w.apach***iends.org
- Eine Anleitung für PHP findest Du auf php.net
- Du musst aber auch HTML lernen; dafür empfehle ich de.sel*htm*.org
- Zum Schluss brauchst Du noch einen Text-Editor; nach Möglichkeit mit Syntaxhighlighting. Ich empfehle Ultr**dit, aber es gibt auch zahllos kostenlose Editoren, die Du über Google findest.

Das wären meine ersten Infos für einen Neuling. Versteht ihr jetzt, worauf ich hinaus will?!?!?


----------



## Larry Laffer (1 Juni 2011)

Sorry ... da hatte ich dann deine Frage wohl vollständig falsch verstanden.

Eine Siemens-SPS programmiert man mit Step7. Die Software erhälst du bei Siemens.
Der Aufbau der SPS sowie die weitere Hardware-Auswahl definieren sich durch das anzusteuernde Equipment.
Ich habe (wie auch die meißten anderen hier) das SPS-Programmieren als "Learning by doing" im Laufe vieler Jahre und an wachsenden Anforderungen und fortschreitender Technik erlernt. Ob dieser Weg heute noch so haltbar ist kann ich nicht mit Sicherheit sagen - allerdings habe ich es auf diese Weise schon so einigen Leuten beibiegen können (auch noch in letzter Zeit).

Wegen dem Anderen :
Wie ich schon schrieb ist das Alles philosophisch. Ich habe dir von meinen Erfahrungen (speziell mit der Verlässlichkeit von Netzwerken, die nicht Industrie-Standard sind) geschrieben. Ich bestehe nicht darauf, dass du es auch so machst ... aber da du fragtest ... 

Gruß
Larry


----------



## bike (1 Juni 2011)

phpprogrammierer schrieb:


> Wenn jemand zu mir kommen und sagen würde: "Ich möchte gerne PHP lernen. Was muss ich dafür tun und was brauche ich!?"
> 
> Dann würde ich ihm sagen:
> - Du brauchst einen Webserver (bspw. Apache), eine Datenbank (bspw. MySQL) und natürlich PHP. Das alles gibt's komplett als Download für den Einstieg bei w*w.apach***iends.org
> ...




Um PLC zu lernen brauchst du Grundlagen der Elektrotechnik.
Eine Übungs- oder Entwicklungs- oder Simulationsumgebung.
Grundlagen der Vernetzung in hetrogenen Netzwerken.
Wissen über Kommunikationsmöglichkeiten von PLCs.
Grundlagen der Datenbankprogrammierung.
Unterlagen über den Produktionsablauf und den relevanten  Produktionsparametern.



bike


----------



## phpprogrammierer (1 Juni 2011)

Larry Laffer schrieb:


> Eine Siemens-SPS programmiert man mit Step7. Die Software erhälst du bei Siemens.


Okay, ich gucke mal.



Larry Laffer schrieb:


> Der Aufbau der SPS sowie die weitere Hardware-Auswahl definieren sich durch das anzusteuernde Equipment.


Hm, das wird schon schwieriger. Ich kann mir ja nun nicht eine 300m lange Förderkette in die Wohnung hängen. Geht's nicht auch etwas kleiner?



bike schrieb:


> du Grundlagen der Elektrotechnik.


vorhanden



bike schrieb:


> Eine Übungs- oder Entwicklungs- oder Simulationsumgebung.


Und was genau? Wie sieht sowas aus? Was kostet das? Woher bekomme ich's!? (Genau darum geht's in diesem Thread!)



bike schrieb:


> Unterlagen über den Produktionsablauf und den relevanten Produktionsparametern.


Meinst Du den Produktionsablauf des Lagers, in dem die SPS zum Einsatz kommen soll oder den Ablauf "in" einer SPS??

mfg


----------



## Larry Laffer (1 Juni 2011)

Naja ... um nur etwas auszuprobieren gäbe es da bei Siemens auch noch das PLCSim (ist im Step7 Professional beinhaltet). Da kannst du mit deinem PC dann die CPU-Funktionen simulieren - du mußt dann natürlich auch die Funktion eventueller Ini's oder ähnlich übernehmen.

Ansonsten kann man es sich ja auch erstmal in klein aufbauen - also nur die CPU und ggf. eine Eingangs- und eine Ausgangskarte.

Für die CPU-Leistung sollte man allerdings schon den gedachten Aufbau berücksichtigen (also eher eine CPU 317 wie eine CPU314 oder kleiner).

Gruß
Larry


----------



## bike (1 Juni 2011)

phpprogrammierer schrieb:


> Und was genau? Wie sieht sowas aus? Was kostet das? Woher bekomme ich's!? (Genau darum geht's in diesem Thread!)


 
Es gibt bei Siemens PLCSim, oder bei MHJ oder... Software, die ein Programmablauf und auch die Kommunikation simulieren können.



phpprogrammierer schrieb:


> Meinst Du den Produktionsablauf des Lagers, in dem die SPS zum Einsatz kommen soll oder den Ablauf "in" einer SPS??
> 
> mfg




Den Ablauf des Prozesses, was in der PLC abläuft, das ist ein Programm, doch es ist wichtig zu wissen und verstehen wie der Produktionsablauf ist.


bike


P.S: sorry, doch erst jetzt habe ich deine Fragestellung verstanden


----------



## roman06 (2 Juni 2011)

*Senf dazu*

Wenn Du wirklich nur wissen wolltest, wo man ne S7 + Software herkriegt, dann ist Dir wohl schon geholfen 



> Aber ich möchte mir noch niemanden ins Haus holen, bevor ich nicht selber einen Überblick habe, damit der Typ mir nichts vom Pferd erzählen kann.


 
Hmmm. Da Du anscheinend keinerlei Ahnung von PLC äääh SPS Programmierung hast, wird Dir noch sehr sehr lange Zeit JEDER SPS Programmierer irgendwas erzählen können. Man beachte: SPS Programmierer sind nicht "per se" doof. Im Idealfall wissen sie was zu tun ist, weil man es voher klar definiert hat (was in der Realität selten ist).

Wenn Du nur was zum Spielen brauchst, dann "auf geht's, STEP7 pro gekauft und PLCSim starten". Diese Aufgabe ist aber nicht ganz trivial und nicht mit "zwei unds und einem oder" zu lösen. Wenn das ein Projekt werden soll, dann wirst Du einen "SPS Programmierer Deines Vertrauens" konsultieren MÜSSEN (nimm nicht den billigsten). Ansonsten wirst Du viel Lehrgeld zahlen, was Deinem Chef möglicherweise nicht gefällt.

Dies ist nicht böse gemeint, ich spreche aus Erfahrung, da ich selbst aus der "Hochsprachen" Programmierung (C) gekommen bin und "mal schnell eine SPS programmieren sollte". Dies ist mittlerweile allerdings 18 Jahre her und ich programmiere nur noch selten in C. 

/Ende Senf

Roman


----------



## phpprogrammierer (2 Juni 2011)

roman06 schrieb:


> Wenn Du wirklich nur wissen wolltest, wo man ne S7 + Software herkriegt, dann ist Dir wohl schon geholfen


Nein, ich wollte wissen, womit ich anfangen soll. Wie man ins Thema SPS hineinkommt. Jemanden finden, der mich die ersten paar Schritte begleitet. Mich nach Bezugsquellen für gute (elektronische) Literatur in Form von Tutorials erkundigen.

Habe ich mich denn wirklich so undeutlich ausgedrückt?? Das ist eigentlich nicht meine Art...ganz im Gegenteil.

mfg


----------



## bike (2 Juni 2011)

phpprogrammierer schrieb:


> Nein, ich wollte wissen, womit ich anfangen soll. Wie man ins Thema SPS hineinkommt. Jemanden finden, der mich die ersten paar Schritte begleitet. Mich nach Bezugsquellen für gute (elektronische) Literatur in Form von Tutorials erkundigen.
> 
> Habe ich mich denn wirklich so undeutlich ausgedrückt?? Das ist eigentlich nicht meine Art...ganz im Gegenteil.
> 
> mfg



Wenn ihr im Werk Step7 habt, dann sind auch die Dokumente zu der Software installiert.
Da gibt es ein first Steps, darin ist an einem einfachen Beispiel beschrieben was eine PLC ist und wie die funktioniert.
Wenn dir dies klar ist, dann gibt es weiterführende Literatur über Kopplung mit verschiedensten Topologien.
Wenn du dies in etwa verstanden hast, kannst du mit Beispielprojekten von BigS einen Testaufbau oder Simulation machen.
Doch sei dir klar, das dauert etwas, denn das ist echt eine Menge Stoff.
Wenn ihr Wissen im Werk aufbauen wollt, solltet der Weg so sein, damit später die Pflichtenhefte und deren Umsetzung richtig geprüft werden kann.


bike


----------



## roman06 (2 Juni 2011)

*Learning by doing *



> Nein, ich wollte wissen, womit ich anfangen soll. Wie man ins Thema SPS hineinkommt. Jemanden finden, der mich die ersten paar Schritte begleitet. Mich nach Bezugsquellen für gute (elektronische) Literatur in Form von Tutorials erkundigen.
> 
> Habe ich mich denn wirklich so undeutlich ausgedrückt?? Das ist eigentlich nicht meine Art...ganz im Gegenteil.


 
Und das am Feiertag 

Wie Larry schon gesagt hat "Learning by doing" isses (auch meiner Meinung nach). SPS Programmierung ist ein gewaltiges Thema und ich würde "klein anfangen", nicht gleich mit einem Programm mit "Auftragsverwaltung und DB Anbindung".

Wenn Du wirklich SPS Programmieren lernen willst, dann mal vielleicht so: (wenn es SIEMENS sein soll)

Kennst Du einen SPS Programmierer? Wenn ja, lass Dich von ihm in die SPS Programmierung einführen.

Wenn nicht, suche Dir selbst eine relativ einfache Aufgabenstellung. In STEP7 gibt es Beispielprogramme, ob da auch was aus dem Bereich "Fördertechnik" dabei ist weiß ich nicht.

Kauf Dir eine richtige SPS(Hardware)! PLCSim ist wirklich megastark, aber gerade als Neuling muss man wissen wie sich eine SPS "anfühlt". (Dafür werde ich jetzt wahrscheinlich geflamed) Vergiss die passende Hardware zur Ankopplung Deines PGs (Programmiergerät, Dein Rechner/Notebook) nicht.

Lies die Doku zu der gewählten Hardware, schmökere in der STEP7 Hilfe.

Trenne die Spannungsversorgung vom Netz bzw. schließe sie nicht an.

Montiere und verdrahte die Steuerung richtig. Als SPSler ist man immer auch ein Mini-Elektriker (zumindest ist das bei mir so)

Prüfe, ob Du alles richtig montiert und verdrahtet hast.

Prüfe es noch mal.

Schalte die Spannungsversorgung ein.

Lade das Programm, starte und "guck was passiert"(wie man das macht steht in der Hilfe).
Versuche zu verstehen was ein "Programmzyklus" ist, was bedeutet AWL, KOP, FUP? Was ist ein OB, FC, FB, DB? Was ist eine Flanke? Was ist ein Timer? Warum ist welche LED an der Steuerung an. Was ist ein Fehler-OB? Was ist SCL? Was sind "Bussysteme"? Was ist DP? Was ist IEC (für Siemens eher unwichtig )

Wenn Du das alles mal "so ungefähr beantworten kannst" ->
willkommen in der SPS Welt 

Und: Es gibt nicht nur Siemens Steuerungen.

@bike: Du warst schneller 

Grüße,
Roman.


----------



## Verpolt (2 Juni 2011)

Hallo,



> ...Mich nach Bezugsquellen für gute (elektronische) Literatur in Form von Tutorials erkundigen.


http://www.automation.siemens.com/m...oad_ausbildungsunterlagen/Seiten/Default.aspx


----------



## Unimog-HeizeR (5 Juni 2011)

phpprogrammierer schrieb:


> Wie macht man sowas?


Hardware, Software, und weiteres benötigtes Zubehör kaufen, Hardware zusammenstecken und Anschliessen, Software Installieren, Programmieren.


> Welche Programmiersprache muss man können?


AWL, FUP, KOP, SCL, und ein paar "Exoten" (Da musste das passende für dich finden.


> Welche Hardware brauche ich, um mir ein kleines System für den Schreibtisch aufzubauen?


Profilschiene, Netzteil, CPU, E-Karte, A-Karte, MPI-Adapter, Step7


> Ich kann mir doch keinen S7-Chip kaufen, ein Kabel dranklemmen und darauf warten, dass sich etwas tut.


Der "S7-Chip" ist sozusagen die CPU!


> Man beginnt (so nehme ich an) doch im Kleinstformat mit einem System und erweitert dieses später. (Stichwort: Starter-Paket)


Kann man so machen, ja.


> Oder anders gefragt: Wie seid ihr zur SPS-Programmierung gekommen? Wie habt ihr angefangen?


Learning by doing.


> Wo habt ihr die Hardware her?


Die "Üblichen verdächtigen", z.b.: RS, Siemens, Elektrogroßhandel, oder bei mir.

Gruß
Timo


----------



## FelixSch (6 Juni 2011)

*Workshop*

Hallo,

ich habe das Programmieren mit STEP7 mit den Büchern vom Bildungsverlag 1 BestNr.44493 und 44495 gelernt.
Diesen Büchern liegt auch eine interaktive CD bei, auf der Projekte in Form eines Workshops realisiert werden müssen. Mit Virtuellen Anlagen können die Projekte getestet werden. 
Der Workshop reicht von einfachen Verknüpfungssteuerungen über Bausteinprogrammierung, Visualisierung ... Profinet CBA.

Grüße
Felix


----------



## Semo (6 Juni 2011)

Hallo, 

vielleicht solltest du dir mal http://www.trysim.de/ anschauen.

Zum nur üben reicht erst mal sogar die Demo-Version.

Um die Eigene Anlage verstehen zu können sollte es dann  auch noch die "Lite" sein, damit die Anzahl der Elemente nicht mehr so eingegrenzt ist.

Wenn dich die Programmierumgebung von Trysim nicht unbedingt anspricht (so wie mich), kann man immer noch die "Standard" versuchen und zum Programmieren Step7 oder WinSPS(MHJ) nutzen (So hab ich mal neben der Ausbildung angefangen).

Ist viellecht besser als erst mal viel Geld für Hardware zu lassen und am Ende festzustellen, dass man es besser anders umgesetzt hätte oder aber ganz die Finger von lassen sollte. 


Gruß Christian


----------



## Topmania (20 Juni 2011)

Hallöchen, vielleicht kann ich kleine Gedankenstützen liefern.
Bin selber seit nem Jahr in S7 unterwegs und bin Hobbywebdesigner und kann dadurch auch ein wenig PHP.

Ich habe soetwas ähnliches in meiner Technikerprojektarbeit gemacht.
Da habe ich Daten aus nem Microprozessor und Sensoren (über COM z.B.) ausgelesen (mit C) und dann über TCP/IP-Sockets an folgendes vermittelt:

HTML-Website mit Ajax-Longpollingscript
http://wiki.ajax-community.de/tutorial:erste-schritte-mit-comet-longpoll
Das was mit dem Longpoll aufgerufen wurde,  war ein PHP-Socket-Client.
D.h. dieses Ajaxscript holt im Hintergrund asynchron zum Laden der Website Daten übers TCP/IP-Socket (PHP) vom C-Programm.

So jetzt OnTopic:
S7 unterstützt meines Wissens OPC. Eine Schnittstelle um Ein und Ausgänge auszuwerten und weiter zu verschicken. OPC ist offen meine ich .
http://docs.google.com/viewer?a=v&q...thsC_4MkFRnDY17emLmtbo7bnwg&safe=active&pli=1

Gesammelte Daten mit PHP-Socket kannst ja dann auch in Datenbanken etc. verteilen. Du kannst statt Ajax auch das Socket evtl. über Cron-Jobs aufrufen.
Hoffe ich konnte ein wenig helfen!


----------



## phpprogrammierer (20 Juni 2011)

Ja, siehste. Das kommt doch meinem Projekt schon sehr nahe. 

Die HTML-/JavaScript-/PHP-Seite ist wohl weniger das Problem. Jetzt kommuniziere ich ja auch mit der SPS über TCP/IP und einem PHP-Socket-Skript.

Was mir aber fehlt bzw. was als Herausforderung ansteht, ist wohl das, was Du schlicht als "C-Programm" betitelt hast.

Darf ich nach Einzelheiten fragen (ggf. per PM), ist Deine Arbeit irgendwie öffentlich? Ich denke, dass ich davon recht viel lernen kann...

cya


----------



## Topmania (20 Juni 2011)

Ich schick dir gleich ne PM mit dem Link, muss den kram noch auf meinen Festplatten suchen, ist von 2008.
Was mir noch einfällt, die Lösung habe ich auch schonmal gesehen, und ist bestimmt noch am einfachsten:
Man kann über NetPro (S7) eine Tcp/IP Verbindung herstellen und die mit nem TCP-Socketserver o.ä. verbiniden. Auf diese Art und weise kann man nämlich z.B. protokollieren. Den SocketServer, den ich in Aktion sah, ist in VB programmiert gewesen. Aber naja... geschmackssache .
So ich such mal.


----------

