# SPS oder Microkontroller kaufen?



## rise_against (27 Februar 2013)

Hallo,

ich bin beruflich SPS-Programmierer (ich verwende Beckhoff, wenns jemand kennt) und würde mir gerne für Zuhause entweder eine günstige SPS oder einen Microkontroller zulegen für kleinere "Spielereien". Ich kann leider noch nicht sagen was ich damit machen will jedoch würden mich folgende Dinge interessieren:

- Analoge und Digitale Eingänge lesen und Ausgänge schreiben
- Regelung einer Heizplatte: z.B. soll Wasser in einem Kochtopf eine bestimmte Zeit auf einer definierten Temperatur gehalten werden
- bestimmte Positonen mit einem Motor anfahren (es soll eine Zielposition angegeben werden und eine Achse soll diese Position anfahren)
- ...


Nun würde ich euch bitten mir Vorschläge zu nennen (Hersteller und Bezeichnung: z.B. Siemens Logo, im besten Fall einen Link zum Produkt  ) mit denen ich die genannten Dinge preisgünstig realisieren könnte.
Eins vorweg: Ich möchte in Strukturierten Text Programmieren, nicht mit KOntaktPlan oder FUnktionsPlan, womit die Siemens LOGO denk ich mal wegfällt.

Vielen Dank für euer Antworten im Voraus!


----------



## hucki (27 Februar 2013)

rise_against schrieb:


> Eins vorweg: Ich möchte in Strukturierten Text Programmieren, nicht mit KOntaktPlan oder FUnktionsPlan, womit die Siemens LOGO denk ich mal wegfällt.


Ich vermute mal, damit fällt so ziemlich die gesamte Siemenswelt weg und Microkontroller werden m.W.n. auch nicht in ST programmiert.

Eigentlich beschränkst Du Dich dann auf die CoDeSys-Welt, oder?


PS: Klingt für mich so'n bißchen nach: "Ich möchte die ganze Welt kennen lernen, aber auf keinen Fall was anderes außer Deutsch benutzen!"


----------



## Deltal (27 Februar 2013)

Warum keine Beckhoff oder Wago SPS?

Die Sache ist, das die SPS komponenten teuer sind, aber man ohne viel Elektronikkentnisse z.B. ein Relais ansteuern kann.

Ein µC ist supergünstig, dafür muss man halt eine Transistorschaltung berechen können um das Relais zu nutzen.

Der µC wird klassisch über ASM oder C programmiert. Sehr modern ist z.Z. der http://www.arduino.cc/ mit eigener Programiersprache, die sehr Einsteigerfreundlich ist. Dazu gibt es fertige Boards, was das löten schon stark reduziert.


----------



## rise_against (27 Februar 2013)

hucki schrieb:


> Ich vermute mal, damit fällt so ziemlich die gesamte Siemenswelt weg und Microkontroller werden m.W.n. auch nicht in ST programmiert.
> 
> Eigentlich beschränkst Du Dich dann auf die CoDeSys-Welt, oder?
> 
> ...



Ich meinte natürlich in ST oder C#. Ich will nur keine KOP oder FUP "zeichnen". (Hat mMn nichts mit programmieren zu tun)


----------



## Ottmar (27 Februar 2013)

Hi!

Nimm eine Siemens S7-1200 (z.B. CPU1211C, relativ günstig) und TIA-Portal und verwende SCL.
Diese hat 2 Analogeingänge on-board und soweit ich weiß auch schnelle Zähler, sowie schnelle Ausgänge (Schrittmotoransteuerung über Puls/Richtungsschnittstelle).
Zudem kann sie relativ günstig über den integrierten Steckplatz mit einem Erweiterungsmodul angepasst werden.


gruß,

Ottmar


----------



## marlob (27 Februar 2013)

Deltal schrieb:


> ...
> 
> Der µC wird klassisch über ASM oder C programmiert. Sehr modern ist z.Z. der http://www.arduino.cc/ mit eigener Programiersprache, die sehr Einsteigerfreundlich ist. Dazu gibt es fertige Boards, was das löten schon stark reduziert.


Für Atmel µC gibts dann auch noch Bascom-AVR. Ein Basic Compiler für diejenigen die nicht noch erst ASM oder C lernen wollen. Dafür aber Basic


----------



## MasterOhh (27 Februar 2013)

Ich selber habe einige Boards (FEZ Panda II) von GHI Electronics http://www.ghielectronics.com/ . Die Dinger sind richtige Powerhäuser. Programmiert werden sie mit Visual C# (.net Microframework) mit allem Komfort, wie Runtime Debugging usw. Wenn harte Echtzeit gefordert ist, kann man kompilierten C oder Assembler Code über RLP einbinden .....

Zum rumspielen würde was anderes als eine SPS empfehlen. Wenn man schon den ganzen Tag auf Arbeit mit den Steuerungen zu tuen hat, warum soll man das auch noch zu Hause als Hobby weiter führen? Da dann lieber Bastelelektronik um wirklich selber was auf die Beine zu stellen (und dabei noch eine Menge zu lernen, was einem auch im Beruf weiterhelfen kann). Außerdem ist das Erfolgerlebnis dann gleich viel größer wenn das eigene kleine Selbstbau-Projekt dann läuft.


----------



## GLT (27 Februar 2013)

rise_against schrieb:


> ich bin beruflich SPS-Programmierer (ich verwende Beckhoff, wenns jemand kennt)



Beckhoff
Wago 750er
Easy Control (heisst jetzt wohl EC4P)

oder als Mikrocontroller Fa. Beck


----------



## Gerhard Bäurle (27 Februar 2013)

SPS bedeuted eine fertige Elektronik, die "nur" 
programmiert werden muss.

Anderseits ist man mit ein bischen Löten sehr 
flexibel:

http://de.wikipedia.org/wiki/Raspberry_Pi

http://de.wikipedia.org/wiki/Ethernut


----------



## Blockmove (27 Februar 2013)

rise_against schrieb:


> Ich meinte natürlich in ST oder C#. Ich will nur keine KOP oder FUP "zeichnen". (Hat mMn nichts mit programmieren zu tun)



Tja dann sitzen irgendwie in den Entwicklungsabteilungen fast aller SPS-Hersteller nur Laien. Schließlich kannst du nahezu alle Systeme mit mehreren Sprachen programmieren.
Nur gut, dass deine Meinung nicht viel Gewicht hat. 

Und um nicht ganz offtopic zu werden:
Ich würd  dir auch zu einem Arduino raten.
Es gibt sehr viel (günstiges) Zubehör aus allen möglichen Themengebieten.
Du kannst dein Programm so schreiben, dass du auch die Arbeitsweise einer SPS nachbilden kannst.
Also zuerst Prozessabbild lesen, Befehle abarbeiten, Prozessabbild schreiben.

Gruß
Dieter


----------



## V W (28 Februar 2013)

Warum keine Logo? Ich persönlich habe schon Logo programmiert und sehe die Herausforderung gerade darin das man nur FUP hat und alles in einem Netzwerk programmieren muss. Da können Verriegelungen und verschiedene Startbedingungen schon zu einer Herausforderung werden. Es kommt doch darauf an wie sehr man das System ausreizt und nicht darauf mit welcher Sprache man arbeitet.


Gruß


Volker


----------



## Zottel (28 Februar 2013)

V W schrieb:


> ...sehe die Herausforderung gerade darin das man nur FUP hat und alles in einem Netzwerk programmieren muss. Da können Verriegelungen und verschiedene Startbedingungen schon zu einer Herausforderung werden.


Das klingt sich für mich nach einem eher masochistischem Reiz...


V W schrieb:


> Es kommt doch darauf an wie sehr man das System ausreizt...


Wenn man ein System ausreizen muss, hat man es wohl zu klein gewählt.

Ich persönlich würde zu Mikrocontrollern raten. Und  eher AVR oder PIC als Arduino.
Arduino scheint mir gut, wenn du ein konkretes Projekt hast, wo du den uC-Teil mit der Arduino-Hardware und gröstenteils vorhandener Software schnell abdecken kannst und dich dann auf ein Projekt konzentrierst.
Wenn du aber in viele Richtungen experimentieren möchtest, sieht es meiner Meinung nach eher so aus: Arduino-Module kosten dich für 50-80  Euro. Wenn dein Experiment abgeschlossen ist oder dein Interesse erschöpft, zerlegst du es, um den "teuren" Arduino anderweitig zu verwenden.
 Hast du aber einen AVR oder PIC eingesetzt, kostet der 2 bis 6 Euro, du belässt ihn eher im Versuchsaufbau und kannst dir Dinge bauen, die du dann wiederverwendest (Signalgeneratoren, I2C-Master, -Slave, LCD-Ansteuerung, Frequenzzähler etc.).
Software für diese Controller-Familien findest reichlich im Netz. Siehe auch www.mikrocontroller.net


----------



## repök (28 Februar 2013)

Da hat der Zottel vollkommen recht. 
Wenn man allerdings (wie ich) ein Lötmuckel ist, also mehr mit dem Zinnzeuges irgenwo rum kleckert als da was zu zu löten, dann ist wohl der arduino die erste wahl. 
Wenn man dann noch den uno nimmt kann man den mc da rausholen und einen neuen einsetzen. das dingen macht aber spass....


----------



## rise_against (28 Februar 2013)

Zottel schrieb:


> Ich persönlich würde zu Mikrocontrollern raten. Und  eher AVR oder PIC als Arduino.



Meinst du z.B.: solche: ?
http://www.conrad.at/ce/de/product/...-Speed-20-MHz-Flash-Speicher-4-kB-Speicher-RA
http://www.conrad.at/ce/de/product/...-20-Flash-Speicher-8-kB-Speicher-RAM-512-Byte
http://www.conrad.at/ce/de/product/...Microchip-PIC16F84-04P-84A-Gehaeuseart-DIP-18

Aber hier braucht man doch noch ein Programmiergerät usw. Wo bekommt man das her? Was braucht man noch zusätzlich dazu?

Und noch eine Frage zum Arduino:
Kann man damit live-Werte am PC anzeigen/ändern? z.B. Parameter vom PC aus ändern während das Programm läuft?


----------



## repök (28 Februar 2013)

Ja das kann man, der wird über usb angeschlossen. ein protokoll müsste  man sich da selbst schreiben. google weiss da aber bescheidt. 
stromversorgung  erfolgt auch (wahlweise) über die schnittstelle. also  auspacken und losgeht's. 
für jemanden der sich noch nicht mit  microcontrollern beschäftigt hat, ist das die erste wahl. ein makefile  und das ganze gerammel was ein mc so benötigt bringt der gleich mit. 
ausserdem gibt es sogenannte "shields". damit kann dann die sensorik einfach aufgesteckt, bzw angeschlossen werden.


----------



## Werner29 (1 März 2013)

Alles richtig, und wenn man Lizenzgeschützte Zusatztools hier http://store.codesys.com einkauft, dann werden die auch über so einen Dongle geschützt.


----------



## Gerhard Bäurle (1 März 2013)

Werner29 schrieb:


> Alles richtig, und wenn man Lizenzgeschützte Zusatztools hier http://store.codesys.com einkauft, dann werden die auch über so einen Dongle geschützt.



Sorry für die Einmischung, aber Ihre Antwort würde hier 

http://www.sps-forum.de/showthread.php/61641-Codemeter 

besser passen.

PS: Immer die Datenbankfehler ... :wink:


----------



## Boxy (1 März 2013)

Es gibt aber auch Microkontroller welche mit Codesys programmiert werden können 
EPIS ist da ein Name ...


----------



## Werner29 (1 März 2013)

CODESYS ist halt die richtige Antwort auf jede Frage...


----------



## Boxy (1 März 2013)

Werner29 schrieb:


> CODESYS ist halt die richtige Antwort auf jede Frage...



Na ja, nicht immer  Es gibt auch welche die kann man mit Step 7 programmieren


----------



## Perfektionist (1 März 2013)

Zottel schrieb:


> Wenn du aber in viele Richtungen experimentieren möchtest, sieht es meiner Meinung nach eher so aus: Arduino-Module kosten dich für 50-80  Euro. Wenn dein Experiment abgeschlossen ist oder dein Interesse erschöpft, zerlegst du es, um den "teuren" Arduino anderweitig zu verwenden.
> Hast du aber einen AVR oder PIC eingesetzt, kostet der 2 bis 6 Euro, ...


das Leonardoboard hab ich für 25EUR gekauft, hätte ich gewusst, dass es noch einen nano gibt, hätt ich wohl die fünf Euronen mehr auch noch investiert.

Mit PIC hab ich in der Vergangenheit auch schonmal gespielt, ist auch recht nett und pro uC tatsächlich preiswert, aber eben nicht so hübsch so von wegen USB-Anschluss ist an Board und los gehts (Thema Programmiergerät).

Die PIC-Projekte vergammeln leider grad in der Schublade, Arduino richtig auszuprobieren hab ich leider noch nicht die Zeit gefunden.


----------



## rise_against (1 März 2013)

Vielen, vielen Dank schonmal für eure Antworten!

Aber bei mir tauchen immer wieder neue Fragen auf. z.B.:



Blockmove schrieb:


> Du kannst dein Programm so schreiben, dass du auch die Arbeitsweise einer SPS nachbilden kannst.
> Also zuerst Prozessabbild lesen, Befehle abarbeiten, Prozessabbild schreiben.



Würde das in etwa so funktionieren:

z.B. beim Arduino:

ganz oben alle Eingänge einlesen mit digitalRead bzw. analogRead

dann das eigentliche Programm, wobei die Ausgänge nicht direkt gesetz werden sondern nur auf merker gelegt werden

und zum schluss die Ausgänge setzten mit digitalWrite bzw. analogWrite
und wenn ich dann zum schluss noch schreibe: delay(10); würde ich dann quasi eine SPS mit 10ms Zykluszeit nachbilden?


----------



## Perfektionist (1 März 2013)

rise_against schrieb:


> Würde das in etwa so funktionieren:
> 
> z.B. beim Arduino:
> 
> ...


fast...

Ich hab leider noch nicht die Muße gehabt, mich um die Zykluszeit einer Endlosschleife beim Arduino zu kümmern - beim PIC hab ich einen Timer-Interrupt genutzt, um die verstrichene Zeit während eines Zyklus messen zu können.

Klassisch darf ja ein Programm nicht ohne Eingang und ohne Ausgang laufen (zumindest hat mir mein Lehrer dies in den Pascal-Stunden verboten), jedoch ist dies ja gerade für diese Art der Programmierung von Automatisierungsaufgaben unausweichlich und deshalb ja von der SPS bereits vorgesehen (zyklischer Programmaufruf). Dies habe auch ich beim PIC nachgebildet, da der uC ja von sich aus kein PAE/PAA kennt, hab ich das, wie Du selbst andeutest, nachgebildet in der Art, wie Du es schilderst.


----------



## Blockmove (1 März 2013)

rise_against schrieb:


> z.B. beim Arduino:
> 
> ganz oben alle Eingänge einlesen mit digitalRead bzw. analogRead
> 
> ...



Im Prinzip ist es wirklich so einfach eine SPS zu bauen 
Zu deinen 10ms-Delay kommt natürlich auch noch die Laufzeit des uC-Programms dazu.

Gruß
Dieter


----------



## rise_against (1 März 2013)

Ich denke ich werde mich für einen Arduino entscheiden. Jedoch weiß ich noch nicht für welchen (UNO, Leonardo, Mega 2560 oder Due).
Was gibt es hier noch zu beachten außer die Anzahl der I/Os, die Betriebsspannung, den Speicher und die Taktfrequenz?


----------



## mkd (1 März 2013)

Und wie ist es mit einem netduino?
Als netduino plus sogar mit Erhernet Schnittstelle und SD Card Slot.
Hardware kompatibel zum arduino.

Darauf kann man schön einen Webserver aufsetzen und Aktoren per Smartphone schalten oder Eingänge lesen. Auch setzen der Systemzeit aus dem www ist easy. Threading, mehrere RS232, PWM, Analog Input, I2C...
Schreiben/Lesen auf der SD Card erfolgt mit den bekannten Klassen aus dem großen .net Framework.

Ausserdem lernt man ein wenig den Umgang mit dem Visual Studio, was in Zeiten von TwinCAT 3 usw. nicht schlecht sein kann.

Für knapp 50€ würde ich den netduino eher als ein arduino wählen. AVR Controller lassen sich gut "direkt", d.h. per GCC und echten Registerzugriffen Programmieren. Dazu braucht es kein Arduino Gedöns.
Wenn man ein wenig mehr vor hat, kann man ohne aufwendiges Handling einen ARM auf dem netduino Board nutzen.


Gruß


----------



## Perfektionist (2 März 2013)

rise_against schrieb:


> Ich denke ich werde mich für einen Arduino entscheiden. Jedoch weiß ich noch nicht für welchen (UNO, Leonardo, Mega 2560 oder Due).
> Was gibt es hier noch zu beachten außer die Anzahl der I/Os, die Betriebsspannung, den Speicher und die Taktfrequenz?


ich weiß zwar nicht, was mkd vor hat. Aber der Threadstart redete von was anderem...

@TE: ich hoffe mal, dass ich Dir einen "Guten Rat" mit dem Leonardo gebe (noch bessere Freunde sagen nichts). Wenn Du damit warm werden kannst, dann bleibt der Kauf eines weiteren, eventuell passenderen Arduino-Boards nicht aus 

Manko bei Leonardo: Micro-USB, also kein USB-Anschluss, der in JEDER Schublade herumliegt (bei mir kommt einer auf zwanzig).


----------



## Perfektionist (2 März 2013)

PS: was mir in der Vergangenheit auch mal sehr viel Spass bereitet hatte, ist das Lego Robotics Invention System. Ob es das heute noch so gibt - k.A., jedenfalls ist das aber eine ganz andere Preisklasse (und vergammelt grad unterm Sofa).


----------



## Gerhard Bäurle (2 März 2013)

Perfektionist schrieb:


> PS: was mir in der Vergangenheit auch mal sehr viel Spass bereitet hatte, ist das Lego Robotics Invention System. Ob es das heute noch so gibt - k.A., jedenfalls ist das aber eine ganz andere Preisklasse (und vergammelt grad unterm Sofa).



Hallo,

das wurde zwischenzeitlich von NXT abgelöst

http://de.wikipedia.org/wiki/NXT

und im Herbst 2013 kommt der Nachfolger EV3:

http://www.heise.de/hardware-hacks/...endigt-neuen-Robotikbaukasten-an-1778288.html

PS: Unser Junior träumt schon von selbst gebauten Roboter, 
der das Kinderzimmer aufräumt.

Aber Lego ist ein anderer Ansatz als "Microcontroller oder SPS". 
Es gibt für den NXT-Baustein zwar alternative Programmier-
möglichkeiten, aber je nach Sensoranzahl wird das dann doch 
schnell teuer.


----------



## rise_against (4 März 2013)

Vielen, vielen Dank nochmal für die zahlreichen Antworten.

Da wär nur noch eins:
Ich habe mir mittlerweile unzählige Tutorials (auf Youtube oder über google auf diversen Seiten) über Arduino-Boards angesehen und dabei eine Menge gelernt.
Was ich jedoch noch in keinem Tutorial gesehen habe: Wie kann ich live-Werte meines laufenden Programms am PC lesen/schreiben? Geht das mit der Ardiono Software?
Ich möchte z.B. die Drehzahl eines Motors vom PC aus ändern können.

Wär toll wenn mir jemand sagen könnte wie das funktioniert bzw. Links zu diesem Thema posten könnte.

Vielen Dank im voraus


----------



## Blockmove (4 März 2013)

rise_against schrieb:


> Wie kann ich live-Werte meines laufenden Programms am PC lesen/schreiben? Geht das mit der Ardiono Software?
> Ich möchte z.B. die Drehzahl eines Motors vom PC aus ändern können.



Wenn du die serielle Kommunikation nutzen willst, dann gibt es die Befehle Serial.Read, Serial.Print und noch noch eine ganze Menge mehr.
Als Stichwort zur Suche sollte das reichen.

Gruß
Dieter


----------



## Perfektionist (4 März 2013)

für die etwas jüngeren unter uns sei noch hinzugesetzt, dass dann zur Kommunikation mit dem Arduino ein Terminal benötigt wird. Und natürlich eine RS232-Schnittstelle am PC nebst Null-Modem-Kabelverbindung zum Arduino.


----------



## repök (4 März 2013)

ich meine der arduino meldet sich als usb->rs232? also bei meinem war es jedenfalls so. und mit der handvoll befehle konnte man sich da schnell was zusammenbauen.


----------



## rise_against (5 März 2013)

Eine Frage hätte ich noch: (Vielleicht eine etwas dumme ^^ sry)
Ich hab zuhause noch 2 Micro-USB Kabel von einer Digtalkamera und nem Handy. Kann ich den Arduino Leonardo damit bedenkenlos am PC anschließen oder gibts da ein eigenes Kabel?


----------



## repök (5 März 2013)

Einfach einstecken, dann sollte der arduino schon erwachen. Wie gesagt ein Micro-USB-Kabel sollte es sein. Ansonsten viel spass.


----------



## vollmi (5 März 2013)

Arduino benutzt üblicherweise den USB-B Stecker bzw. USB-mini beim Seeduino.

mfG René


----------



## Perfektionist (6 März 2013)

beim Leonardo und nano sind es Micro-USB. Dass der Arduino sich als USB-RS232-Device meldet, hab ich so auch noch im Hinterkopf. Mit etwas Geschick sollte es also auch eine lötfreie Lösung geben, um mit dem Dingens auf Anwenderschicht kommunizieren zu können.


----------



## Perfektionist (6 März 2013)

PS: Micro B
http://de.wikipedia.org/wiki/Micro-USB#Micro-_und_Mini-USB


----------

