# Programmier erfahrung



## woody (8 Mai 2015)

Ich weiss jetzt nicht ob ich ein neues Thema anfangen soll .

Da ich ja ein SPS Neuling bin würde ich gerne mal wissen ob es bestimmte Tipps und Tricks gibt bei einer Programmierung.

Gibt es eine bestimmte Reihenfolge wie man programmiert?
Ich kenn ja schon die unterschiede zwischen einer linearen Programmierung und Strukturierte ......

Ich habe bisher so gemacht das man mit einem richtimpuls startet....gut es kommt ja immer drauf an was die Anlage machen soll . 
Manchmal stelle ich mir auch immer die frage ob ich es lieber mit einem Speicherverhalten lösen soll oder mit einer Binären verknüfung..


Vielleicht kann ja der eine oder andere mal seine Erfahrung mitteilen

grüsse


----------



## de vliegende hollander (8 Mai 2015)

Hallo Woody,

Was ist dein bisherige Grundlage ?

Es ist wahrscheinlich einfacher zu helfen wenn du konkrete Beispielen oder Problemen hast.

Bram


----------



## PinkPanther32 (8 Mai 2015)

Hallo Woody, 

Ich kann dir auf jeden fall eines sagen, das wichtigste sind die Vorschriften der Kunden. Sollten da bestimmt Programmiervorschriften sein, kannst du dich da meistens nicht drüber hin weg setzen. Und ansonsten denke ich mal hat da jeder Programmierer so seine eigenen Philosophie. Der eine macht es so der andere so. So sind meine Erfahrungen. Und irgendwie führt alles ans ziel.


----------



## woody (8 Mai 2015)

Ja also einigen Vorschriften kenne ich ...es gibt da vorgaben z.b Zeiten die wir bei einer Messung einhalten müssen....

Grundlage?

Ja also ich mach ja den Maschschinenbautechniker bei der SGD! Ich weiss nicht in wie fern ihr die Hefte kennt ...


Das sind insgesammt 6 Hefte von der Speicherprogrammierebare Steuerung 


1. Aufbau und funktionsweise , Logische Verknüpfung

2. Binäre Steuerungen, Speicherverhalten, Wischfunktionen, Zeitverhalten, Zählvorgänge

3. Entwurfsverfahren zur entwiklung von Steuerprogrammen, Ablaufdiagramme, Grundlagen der Steuerungssicherheit

4. Grundlagen der Wortverarbeitung,  Verarbeitung von Analogsignalen in der Mess und Regeltechnik   ( da bin ich jetzt)

5. Realisierung von Regelungstechnischen Aufgaben 

6. Aufgabensammlung 

Ist halt alles sehr Trocken erklärt ....deshalb suche ich bei Unklarheiten nach antworten in diesem Forum. Wollte jetzt auch nicht unbedigt einen SPS Lehrgang besuchen da ich schon paar Inhalte vermittelt bekomme .
Doch irgendwann hört halt die Theorie auf . Einen Praktischen Bezug zur SPS bekomme ich erst wenn ich den Techniker habe , dann geht es Richtung Prozessoptimierung . 

Solange muss ich mir noch mit Trysim zufrieden geben ..


----------



## woody (8 Mai 2015)

Es kommen bestimmt noch einige Fragen die mir noch unklar sind.....zb.

Das Programm läuft ja Zyklisch ab..d.h. von oben nach unten 

wenn ich mir jetzt ein Fließband vorstelle an dem mehrere Stationen eine Bearbeitung stattfindet .....wie verläuft das Programm dann Zyklisch ?

Dann sind doch mehrere Netzwerke aktiv .
Wie kann ich mir das vorstellen ?


----------



## PinkPanther32 (8 Mai 2015)

Es sind keine netzwerke gleichzeitig aktiv. Jeder Baustein bzw. Netzwerk wird nacheinander abgearbeitet und das je nach Größe des Programms, bzw. der Steuerung alles im Millisekunden Bereich. Also einmal alles in einem Programm abklappern kann schon in 2 Millisekunden abgeklappert sein.


----------



## woody (8 Mai 2015)

Das ist mit dem Auge gar nicht wahrnehmbar.. 
Wenn ich in OB1
3 Bausteine aufrufe mit 
Call Fc1
Call Fc2
Call Fc3 
Dann werden zb 3 Stationen gleichzeitig bearbeitet oder Auch nacheinander? Weil i muss ja bei einer strukturierte Programmierung nach Fc3 mit  BE ENDE beenden um auf OB1 zurück zu kehren


----------



## PinkPanther32 (8 Mai 2015)

Also wenn es so im OB 1 steht wird erst der FC1 abgearbeitet, danach FC2 usw., und ein BE muss in der S7 Welt und auch in anderen Steuerungen nicht mehr Explizit dazu geschrieben werden.
Aber warum meinst du müssen die Stationen gleichzeitig ablaufen wenn alles in ms passiert?


----------



## Krumnix (11 Mai 2015)

Eine SPS arbeitet ihr Programm zyklisch ab. Dies muss in einer bestimmten Zeit erfolgen. Ansonst "hängt" das Programm und die SPS geht sicherheitshalber in den Stop-Modus. 
Das Programm läuft vom "oben" bis "unten". 
Wenn du also im OB1 mehrere Aufrufe machst, startet der Zyklus im OB1 Zeile 1. Wenn hier Call FC1 steht, "springt" die SPS in die Baustein mit der Bezeichnung FC1 und arbeitet dort alle Anweisungen ab.

Schauen wir uns die FC1 mal genauer an. 
In jedem Baustein, egal ob OB,FB,FC, arbeitet die SPS die Anweisungen von oben nach unten durch. In jeder Zeile deines Codes wird ein sogenanntes VKE gebildet. D.H. das der Zustand der vorherigen Zeile mit der Anweisung der aktuellen Bearbeitet wird und das Ergebnis, (V)er(k)nüpfungs(e)rgebnis wird dort abgelegt. Zusätzlich gibt es noch die sogenannten Akkus, in denen Ergebnisse einer Berechnung abliegen. Diese "Speicher" sind nicht dauerhaft vorhanden.
Wenn du also Ergebnisse für andere Aktionen dir merken willst, so musst du diese auf Merker oder in Datenbausteine ablegen.
Diese kannst du dann an andere Stelle im Ablaufprogramm wieder aufrufen und damit weiter arbeiten.

Daher sollte man sich am Anfang jeden Programms eine Struktur überlegen, die das Bild der Anlage entspricht. Ich lege z.B. für Bereiche oder gar für einzelne Aktoren (Motor z.B.) einen eigenen FC oder FB an. Auch lege ich mir FCs für die Betriebsarten, die Kommunikation mit der Visu, Sicherheitsüberwachung, Fehlermeldungen..... an. Diese rufe ich dann sinnvollerweise im OB1 in der richtigen Abfolge auf.
Es macht keinen Sinn, zuerst alle Motoren zu bearbeiten und dann erst den Betriebsarten-Baustein aufzurufen. Wobei das natürlich auch möglich ist....

Bei den Datenbausteinen legen ich Wert darauf, dass die Struktur genug Reserven hat, dass ich diese erweitern kann, ohne das Speicherpositionen im DB sich verschieben. Daher kann es vorkommen, das am Anfang ein DB noch 90% aus Reserve bestehen kann.


----------



## woody (12 Mai 2015)

Hi Leute... Sorry für die verspätete Rückmeldung war noch anderweitig ausgelastet mit Familie...... 
Aber jetzt geht's wieder los..... 
Super Beitrag krummnix.....

Ja das mit dem gleichzeitig bearbeiten habe ich mir so gedacht.. Zb bei mir auf Arbeit.... 

Ich hab 4 Stationen die irgendwas bearbeiten.. Die Werkstück Träger gleiten über ein transportband von Station zu Station. 
Beginne ich bei Station 1 läuft der Träger erst weiter wenn Bearbeitung fertig ist.. Dann zu Station 2 usw. 
Belegen alle Stationen einen Träger wird ebenfalls alles bearbeitet. 
Unabhängig ob die vorherige Station fertig ist oder nicht.... 
Wenn Ich die Anlage stoppe wenn alle Stationen belegt sind und ich von vorne anfangen möchte dann laufen alle 4 gleichzeitig los.... 

Hoffe ihr wisst was ich meine


----------



## zako (9 Juli 2015)

SIEMENS hat noch zum Programmierleitfaden einen Programmierstyleguide nachgeschoben.
Hier findest Du einige Tipps, wie man z.b. mit Präfixen usw umgeht und wie man möglichst "sauber" programmiert (da werden wohl immer Leute eigene Meinungen haben, aber mal eine gute Hilfe um lesbare Programme zu schreiben):

https://support.industry.siemens.com/cs/de/de/view/109478084


----------



## winnman (9 Juli 2015)

Das muss im Programm der SPS dann unterschieden werden.

Du darfst den Programm Zyklus der SPS nicht Gleichsetzen mit dem Zyklus deiner Maschine! Das sind 2 komplett verschiedene Bereiche.

Das Programm der SPS wird hier untegliedert.

Am besten ist, die Einzelnen Schritte der Maschine jeweils in "separaten Programmen" zu erfassen.
Es gibt also für jeden Bereich dann separate Einheiten.

Darüber sitzt dann das "Hauptprogramm" und das koordiniert dann den Ablauf (Transport zu den Stationen, Start der Bearbeitung an der jeweilgien Station, . . .)


----------



## tonnyy (9 Juli 2015)

Hallo


Hoffe ist ok dass ich den Thread hijacken werde 


ich frage mich welche Programmiersprache wird in der Automobilindustrie speziell in der Automatisierungstechnik häufiger verwendet - C oder C++. 
Mein Freund, der ein fortgeschrittener Programmierer ist, und ich wollten uns für eine Ausbildungsstelle bei http://www.ruhlamat.com/de/montagesysteme-und-automatisierungssysteme bewerben. Ich wollte schon etwas mehr über die ganze Automatisierung-Programmierung erfharen, eventuell was auch vorlernen...

Ich habe bereits die Grundlagen der Programmiersprache C gelernt, also kenne ich mich mit Datentypen, Funktionen, Strukturen, Zeigern ...
Nun meine eigentliche Frage soll ich meine C-Kenntnisse vertiefen oder soll ich anfangen C++ zu lernen?


----------



## Morymmus (9 Juli 2015)

Hi,

wenn ich mal ehrlich sein soll - weder noch 
Viel viel wichtiger ist meiner Meinung nach eine ordentliche Grundlage im Verständnis von Maschinen, Maschinenabläufen und Prozessen - bei den Programmiersprachen lernst Du dann fix was Du brauchst.

In dem Automotive-Betrieb in dem ich mal gearbeitet habe programmierte der eine Entwickler PC-Programme in C#, der andere war für Mikrokontroller zuständig und programmierte in soetwas wie Assembler, alles was mit SPS zu tun hatte war mein "Problem", d.h. meist in FUP - damit die anderen es wenigstens noch lesen konnten.


----------



## manseluk (10 Juli 2015)

Soweit ich weiss sind B&R-Steuerung in C programmierbar, aber diese sind noch nicht allzu stark verbreitet.
Siemens und Beckhoff arbeiten in diversen verschiedenen Sprachen, sei es grafisch, mit AWL (ähnlich wie Assembler) oder SCL / ST (ähnlich wie Pascale). Aber wenn du die Grundlagen von C beherrscht, wirst du dich hier schnell einarbeiten.

Aber wie Morymmus schon gesagt hat, ist das grundlegene Verständnis viel wichtiger. Das coden macht bei mir vieleicht noch 20% meiner Arbeitszeit aus, je besser die Planung, desto kürzer die Programmierzeit.


----------

