Gibt es im Handel erhältliche SPS, die Programme über eine API kompilieren / herunterladen können?

9

Mein Team hat beschlossen, eine SPS zur Steuerung eines industriellen Prozesses zu verwenden, der eine einfache Echtzeit-E / A für externe Geräte mit minimaler Verarbeitung erfordert. Wir erwarten jedoch, dass die genauen Ausgaben zwischen den Läufen variieren (tatsächlich wird ein bestimmter Lauf sehr selten wiederholt), und der Bediener verfügt über keine Erfahrung in der SPS- / Softwareprogrammierung.

Obwohl ich das tatsächliche Produkt nicht offenlegen kann, wäre die beste Analogie, dass wir einen industriellen Smoothie-Hersteller entwerfen, bei dem die SPS das Öffnen und Schließen verschiedener Ventile in Echtzeit genau steuert. Der Bediener verwendet unsere Software, um eine benutzerdefinierte Abfolge von Zugaben verschiedener Reagenzien und das Ein- und Ausschalten relevanter schwerer Maschinen (z. B. eines Industriemischers) zu entwerfen.

Hier ist die Herausforderung: Unser aktueller Ansatz besteht darin, einen eigenen Compiler zu schreiben, der die Anweisungen des Bedieners (Ventil A für 10 ms öffnen, Ventil B für 20 ms öffnen) in Kontaktplanlogik und SPS-Maschinencode übersetzt. Wir würden dann unser selbst kompiliertes Programm direkt über die serielle Schnittstelle in die SPS herunterladen. All dies müsste automatisiert werden, damit der Bediener erst auf eine Schaltfläche klicken muss, nachdem er seine Schrittfolge festgelegt hat.

Trotz meiner Recherchen habe ich jedoch keinen einzigen SPS-Anbieter gefunden, der beide 1) einen Compiler mit API hat oder genügend Informationen über seinen SPS-Maschinencode veröffentlicht, um einen Compiler schreiben zu können, 2) das direkte Herunterladen von Programmen in die SPS unterstützt ohne Verwendung der Programmiersoftware des Herstellers (CX-Programmierer, Atmel Studio usw.).

Ich bin zu der Überzeugung gelangt, dass wir möglicherweise den falschen Ansatz verfolgen oder zumindest nicht wissen, nach welchem ​​Produkt wir suchen sollen. Die E / A ist einfach genug, um den Aufbau eines eigenen Boards nicht zu rechtfertigen, aber die gesuchte Funktionalität, nämlich die SPS-Interaktion mit PC-Software auf hoher Ebene, scheint nicht verfügbar zu sein.

Im Idealfall möchten wir das gesamte Programm auf einmal in die SPS herunterladen und keine Anweisungen einzeln senden. Die Ausführung aller Anweisungen auf der SPS (oder dem Gerät, das wir letztendlich verwenden) muss in Echtzeit erfolgen.

Gibt es im Handel erhältliche SPS, die das Kompilieren und Herunterladen von Maschinencode unterstützen, sodass der gesamte Prozess durch ein größeres Programm automatisiert werden kann? Gibt es eine andere Möglichkeit, ein Echtzeitprogramm auf eine SPS herunterzuladen, die von einer PC-Software in einer Hochsprache geschrieben wurde?

Drachenschaf
quelle
Was ist mit der Verwendung eines Betriebssystems und lassen Sie den Benutzer Ihren Programmcode über eine benutzerdefinierte GUI bearbeiten und kompilieren, beispielsweise mit GCC, und laden Sie dann das kompilierte Programm auf Ihre "SPS" herunter.
Eggi
Können Sie Materialien oder Tutorials vorschlagen, die die RTOS-Programmierung und -Prinzipien einführen? Ich bin am besten mit der Nicht-RT-Embedded-Entwicklung und der traditionellen Kontaktplanlogik vertraut. Obwohl ich sehr an dieser Lösung interessiert bin, bin ich mir nicht ganz sicher, wo ich damit anfangen soll.
Dragonsheep
@ Was ist eine API? Wenn es sich um eine "Anwendungsprogrammschnittstelle" handelt, wie kompilieren / laden Sie sie dann herunter?
Dmitry Grigoryev
1
@Dragonsheep Ignoriere diese Idee besser. Es gibt zu viele Aspekte, die nicht branchenweit bewiesen sind, wie Henry Cun sagte. 1. Wie ändern Sie den Code vor dem Kompilieren? Irgendwo in Klartext setzen? 2. Unterstützung über Jahrzehnte mit dem OS
Eggi

Antworten:

11

Sie können hierfür definitiv eine SPS verwenden. Außer, Sie möchten den SPS-Code nicht für jedes "Smoothie-Rezept" ändern.
Sie sollten eine SPS-Anwendung schreiben, die Rezepte aus beliebigen Quellen wie SD-Karten, Netzwerkspeicher, internen Speicher oder sogar QR-Codes liest, wenn Sie Lust haben.

Oft hat PLC ist bereits eine Funktion für diese , wo ein Rezept einen Satz von Parametern ist , dass Sie (und bearbeiten mit dem HMI) laden können.

Echtzeit-E / A an externe Geräte mit minimaler Verarbeitung

Was auch immer Sie verwenden möchten, erfinden Sie keine eigene SPS . Es ist wahrscheinlich nicht die Zeit wert. Und denken Sie nicht, dass die Software oder das zusätzliche Modul teuer ist, Sie können es nicht für diesen Preis schreiben.

Jeroen3
quelle
5

Ich gehe davon aus, dass dies eine ziemlich einfache Aufgabe für eine minimale SPS ist und nicht für fortschrittliche industrielle SPS

Ich gehe auch davon aus, dass dies industriell sinnvoll ist, dh dass das Rezept vom Kunden in 10 Jahren geändert werden kann. Auch, dass seine Nützlichkeit überleben sollte, wenn Sie Ihr Geschäft aufgeben oder auf neue Produkte umsteigen.

Wie Sie sagen, benötigen viele Systeme eine spezielle Software zum Herunterladen und / oder Kompilieren. Langfristig werden Ihre Kunden feststellen, dass Windows 11,12,13 die Software nicht mehr ausführt. Um dies zu vermeiden, soll das Programm einfach ASCII sein und über eine serielle Schnittstelle gesendet werden. Dies ist seit ungefähr 50 Jahren so und zeigt keine Anzeichen eines Verschwindens.

Forth kann auf dem Ziel "kompiliert" werden, sodass der Kunde nur ASCII von einem Terminal an das Ziel senden muss. Es wird niemals überholt sein.

Teil des Forth-Ethos ist, dass Sie domänenspezifische Grundelemente ("AddBanana", "Blend", "Pour") schreiben, die Ihre Kunden als eine bestimmte Sprache für das Produkt behandeln. Während Forth von Computern als geheimnisvoll angesehen wird, ist es für Endbenutzer konzeptionell sehr einfach zu verwenden - dies wäre ein gültiges Programm.

10 grams Thickener 500 grams Banana 15 seconds Hi Blend 50 grams Blueberry 5 seconds slow Blend Pour 5 seconds wait CleanCycle

Als Beispiel könnten Sie eine kleine Arduino-basierte SPS verwenden und FlashForth laden. Es gibt viele andere Möglichkeiten, z. B. MPEForth und eine ARM-Cortex-basierte SPS

Ihre Software ist jetzt ein beliebiger Editor und ein Programm zum Senden von Serien. Hierfür gibt es Standardwerkzeuge, und lange nachdem Sie gegangen sind, kann der Kunde dafür sorgen, dass es von Grund auf funktioniert, da es so einfach ist.

Ein Fehler bei Ihrer gesamten Idee ist, dass der Kunde das Produkt programmiert und es natürlich durch falsches Handeln auffüllen kann - unabhängig davon, welchen Ansatz Sie wählen.

Da es sich nur um ASCII-Dateien handelt, ist es für Sie recht einfach, eine ausgefallene Shell für den Kunden zu erstellen, aber das Produkt funktioniert auch ohne diese.

Henry Crun
quelle
Danke für die Antwort! So etwas wie das von Ihnen vorgeschlagene Controllino ist genau das, wonach wir suchen! Eine minimalistische SPS, bei der wir die Software direkt steuern und Programme seriell herunterladen können. Wenn Sie sagen, wir haben "viele andere Möglichkeiten", welche Suchbegriffe würden Sie verwenden / welche anderen Produkte schlagen Sie vor? Mein Team ist mit der Schwerindustrie am besten vertraut, daher gingen uns die Ideen aus, nachdem wir die üblichen Siemens / Mitsubishi / Omron-Kataloge durchgesehen und nicht gefunden hatten, wonach wir suchten.
Dragonsheep
@Dragonsheep: Wir empfehlen, dass Sie ein oder zwei Tage warten, bevor Sie eine Antwort annehmen. Dies ermutigt andere zum Schreiben und Sie erhalten mehr Antworten und unterschiedliche Sichtweisen.
Transistor
Wenn dies ein interessanter Ansatz für Sie ist und Sie Geld für Tools, Fachwissen und Support bezahlen, sollten Sie mit Stephen Pelc von MPEForth sprechen. Er macht so etwas kommerziell. Auf der anderen Seite, wenn Sie Free-Beer-Software-Leute sind, dann suchen Sie nach Arduino-basierten Modulen oder SPS und FlashForth.
Henry Crun
1
Ich würde auch den Antworten von @Transistor und Jeroen zustimmen: Wenn Sie eine industrielle SPS benötigen, dann sind sie genau das, was Sie brauchen. (und zufällige Arduino plc-Module sind nicht robust genug, um werkseitige Controller zu sein, eher ein Inside-Benign-Box-Controller). Ich würde eher mit Lösungen vom Typ "etwas mit einem Betriebssystem bekommen und GCC verwenden" nicht einverstanden sein, da dies wahrscheinlich zur schlimmsten aller möglichen Welten führt.
Henry Crun
Dies ist in der Tat eine industrielle Anwendung, die wir hoffentlich an einen Kunden verkaufen können. Wir hoffen auf die mehr als 20-jährige Zuverlässigkeit, die die großen Industrieanbieter (Mitsubishi usw.) mit ihren Produkten bewiesen haben. Daher gibt es Bedenken, sich an einen dieser neueren Open-Source-Hardwareanbieter zu wenden. Gleichzeitig scheint uns Open Source in Bezug auf Software die Kontrolle zu geben, die wir suchen. Stephen scheint ein guter Mensch zu sein, den man erreichen kann. Danke für die Führung.
Dragonsheep
2

Leg dich nicht mit Arduino usw. für eine industrielle Anwendung an. SPSen sind auf Zuverlässigkeit, Robustheit, Standards und langfristige Unterstützung ausgelegt. Das Unternehmen, für das ich arbeite, betreibt seit 1987 mindestens eine Texas Instruments PLC und mehrere andere aus den frühen neunziger Jahren. Ersatzteile sind weiterhin aus industriellen Quellen bei eBay usw. erhältlich.

Verwenden Sie eine SPS und ein Industrie-HMI mit genügend Leistung, um das zu tun, was Sie benötigen. Ich habe kürzlich einen Mixer-Job abgeschlossen, bei dem wir Rezeptflexibilität mit automatisierten und manuellen Schritten wollten. Die Sequenz wird gesteuert, indem ein Array durchlaufen wird, das über das HMI programmiert wird.

  • Schrittnummer. zB '5'.
  • Beschreibung. zB 'Banane automatisch abwiegen', 'Kirschen mit manueller Ladung', 'Abkratzen'.
  • Mischgeschwindigkeit (U / min). zB '25'.
  • Mischzeit (en). zB '120'.
  • Abkratzen am Ende des Schritts erforderlich? (J / N) zB 'J'.
  • Wärme benötigt? (J / N) zB 'N'.
  • Temperatur (° C). zB '0'.

Wir haben das System mit einer Reihe von zwanzig Schritten entworfen, die auf absehbare Zeit ausreichen, aber bei Bedarf problemlos erweitert werden können. Für alle Einstellungen sind in der HMI-Anwendung Min- und Max-Werte festgelegt.

Dadurch ist das System sehr flexibel und bearbeitbar. Wir haben ein robustes System mit einer SPS und einem HMI, die von einer Vielzahl von Unternehmen bekannt und unterstützt werden.

Transistor
quelle
Danke für die Antwort. Die spezielle Anwendung, die wir haben, ist die automatisierte Biochemie. Angesichts von Hunderten von Reagenzien und möglicherweise Hunderten von Schritten in dem Prozess, den wir automatisieren, bin ich derzeit der Meinung, dass jede Art von HMI-Geräteprogrammierung hoffnungslos kompliziert wäre.
Dragonsheep
1

Sie haben kein Budget für Entwicklungshardware und -software oder für die Stückkosten der bereitgestellten Hardware angegeben, aber wenn Sie es sich leisten können, könnte Ihre Anforderung mit der CompactRIO- Hardware von National Instruments und der LabVIEW-Echtzeitsoftware sicherlich erfüllt werden .

Der CompactRIO-Controller ist ein robuster, zuverlässiger, leistungsstarker Embedded-Controller in Industriequalität mit branchenüblichen Zertifizierungen.

Es stehen eine Reihe von E / A-Modulen zur Verfügung, die in das Controller-Gehäuse eingesteckt werden. Wenn Ihr Design festgelegt ist und Sie die Kosten pro Einheit senken möchten, stehen Controller und E / A als einzelne Karten zur Integration in Ihre Hardware zur Verfügung . Sie würden Software in LabVIEW Real-Time schreiben, um sie auf dem Controller auszuführen und die Prozesssteuerung auszuführen. Dies könnte auch einer webbasierten Benutzeroberfläche zum Bearbeiten der Prozessschritte dienen oder mit einem in LabVIEW oder einer anderen Sprache geschriebenen Benutzeroberflächenprogramm kommunizieren , läuft auf einem Host-PC. Ich habe nur begrenzte Erfahrung mit SPS, aber ich denke, es ist fair zu sagen, dass diese Lösung um eine Größenordnung leistungsfähiger und flexibler wäre, wenn auch wahrscheinlich zu höheren Kosten.

Beachten Sie, dass der cRIO-Controller zwar mit einem integrierten FPGA ausgestattet ist, Sie das LabVIEW-FPGA-Modul jedoch nur kaufen müssen, wenn Sie tatsächlich FPGA-Code schreiben müssen. Es klingt so, als ob Echtzeit für Ihre Bedürfnisse in Ordnung sein sollte.

nekomatisch
quelle
0

Mein Vorschlag ist, einen Blick auf LabVIEW zu werfen. Ich denke, es würde die in Ihrem Beitrag aufgeführten Bedürfnisse befriedigen. Vermeiden Sie es, Ihren Compiler zu schreiben. Das ist viel mehr Arbeit als Sie tun müssen. Es sind viele kommerzielle SPS, die in die Rechnung passen würden. Ich denke, NI ist eine der einfacheren, mit denen man arbeiten kann. Zum Herunterladen von Benutzerprogrammen müssen Sie eine Anwendung erstellen, um dies zu erreichen.

http://www.ni.com/en-us/shop/labview.html

NI verfügt über eine breite Palette von Modulen, darunter AtoD, digitale Ausgänge, analoge Ausgänge, CAN-Schnittstelle usw. Die Software ist sehr nützlich, um gut aussehende Benutzeroberflächen zu erstellen. Der Nachteil ist, dass das nicht billig ist. If unterscheidet sich auch stark von der textbasierten Programmierung. Einige Schulungen wären erforderlich.

user125718
quelle