DE112016003949T5 - Webbasierte programmierumgebung für eingebettete geräte - Google Patents

Webbasierte programmierumgebung für eingebettete geräte Download PDF

Info

Publication number
DE112016003949T5
DE112016003949T5 DE112016003949.2T DE112016003949T DE112016003949T5 DE 112016003949 T5 DE112016003949 T5 DE 112016003949T5 DE 112016003949 T DE112016003949 T DE 112016003949T DE 112016003949 T5 DE112016003949 T5 DE 112016003949T5
Authority
DE
Germany
Prior art keywords
program
client computer
gui
web
industrial automation
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112016003949.2T
Other languages
English (en)
Inventor
Roman Glistvain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Turck Holding GmbH
Original Assignee
Turck Holding GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Turck Holding GmbH filed Critical Turck Holding GmbH
Publication of DE112016003949T5 publication Critical patent/DE112016003949T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Programmable Controllers (AREA)
  • Stored Programmes (AREA)

Abstract

Die Erfindung bezieht sich auf eine Programmierumgebung und eine einfache Programmiersprache, welche auf Ethernet-Block-Input/Output-Geräten (Block-IO) und Hostservern läuft. In einigen Ausführungsformen umfasst das ARGEE™-System eine webbasierte Programmierumgebung, die ein GUI-Programm in ein Bytecodeprogramm einer virtuellen Maschine kompiliert; und die virtuelle Maschine, die in der Geräte-Firmware läuft und das Bytecodeprogramm ausführt, welches das von einem Benutzer erstellte GUI-Programm darstellt. Es gibt viele Programmiersprachen, die eine webbasierte Programmierumgebung bereitstellen. Einige dieser Sprachen sind für eingebettete Geräte vorgesehen. Das ARGEE™-System ist jedoch insgesamt betrachtet einzigartig, da die Programmierumgebung nicht auf demselben eingebetteten Gerät gehostet wird, das von derselben gesteuert wird. Das System reduziert die FLASH-Speicheranforderungen des Geräts, indem es die Umgebung auf einem externen Server hostet. Das System ermöglicht auch einen schnelleren Aktualisierungszyklus der Umgebungssoftware, wodurch es einfacher wird, Änderungen an Kunden zu verteilen, wenn sich die Umgebung verändert.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht Priorität, unter 35 U.S.C. § 119(e), der provisorischen US Patentanmeldung Nr. 62/211,490 , welche am 28 August 2015 von Roman Glistvain unter der Bezeichnung „WEB-BASED PROGRAMMING ENVIRONMENT FOR EMBEDDED DEVICES,“ registriert wurde, und welche hiermit in ihrer Gesamtheit durch Bezugnahme eingeschlossen wird.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Programmierentwicklungssysteme, und insbesondere auf ein System für eine webbasierte integrierte Entwicklungsumgebung (IDE), für eingebettete Geräte, wobei das System außerhalb des eingebetteten Geräts gehostet ist, und über einen Webserver innerhalb des eingebetteten Geräts kommuniziert.
  • URHEBERRECHTSVERMERK und ERLAUBNIS
  • Ein Teil dieser Patentanmeldung enthält Material, welches urheberrechtlich geschützt ist. Der Inhaber des Urheberrechts erhebt keinen Einwand gegen eine Faksimile-Reproduktion der Patentunterlagen oder der Patentanmeldung, wie sie in den Patentunterlagen oder Dateien des Bundesamts für Patente und Marken erscheint, behält sich jedoch sonst alle Urheberrechte vor. Der folgende Vermerk bezieht sich auf die Software und Daten, wie unten beschrieben und in den zugehörigen Zeichnungen illustriert: Copyright© 2014-2016, Turck, Inc., All rights reserved.
  • HINTERGRUND DER ERFINDUNG
  • Eingebettete Controller (auch eingebettete Geräte, eingebettete Controller, eingebettete Systeme oder einfach Mikroprozessoren genannt) sind im Allgemeinen Geräte, deren Hauptzweck es ist, eine unabhängige Aktion wie das Kodieren von Video, das Steuern von Robotern, das Routing von Internetverkehr usw., durchzuführen. Solche Geräte laufen autonom ohne Benutzereingriff, aber es muss eine Möglichkeit geben, diese Geräte zu konfigurieren/zu überwachen/Fehler zu beheben.
  • "Eingebettete Systeme" sind eine Art von Systemen (die häufig eine Vielzahl von eingebetteten Geräten in einem Produkt enthalten, welches zum Verkauf angeboten wird), dessen Anwendung schnell wächst und in verschiedene Märkte expandiert. Eine typische Eigenschaft von Geräten in dieser Gruppe ist die „feste Funktionalität“. Diese Geräte beginnen ihr Leben mit einer vordefinierten Gruppe von Anwendungsaufgaben und diese Gruppe kann nicht geändert werden. Auf diesen Geräten können Benutzer keine Programme von Drittanbietern hochladen und ausführen. Diese Annahme erlaubt es dem Hersteller, die Softwarekomplexität zu reduzieren und sehr kleine, kostengünstige und zuverlässige Systeme zu schaffen.
  • Die derzeitige Generation herkömmlicher eingebetteter Netzwerkgeräte verwendet standardmäßige Standardkomponenten, wie beispielsweise Betriebssysteme (OS), Dateisysteme, Webserver und SNMP-Agenten (Simple Network Management Protocol (SNMP)) ist ein Internet-Standard-Protokoll für das Verwalten von Geräten in IP-Netzwerken), um die Netzwerk- und Anwendungsaufgaben bereitzustellen. Aus verschiedenen Gründen beinhalten diese Systeme typischerweise teure und komplexe Hardwaredesigns und ineffiziente Softwaredesigns. Aufgrund dieser Ineffizienzen enthalten diese Systeme große Mengen an Code und erfordern große Mengen an RAM und hohe CPU-Geschwindigkeiten, um eine einigermaßen robuste Netzwerkinfrastruktur zu unterstützen. Dies macht die Geräte teuer und für bestimmte Anwendungen ungeeignet. Die große Menge an Code führt auch zu einer sehr langsamen Startzeit, die die Anpassung der Vernetzung an bestimmte Geräte wie Fernseher, DVD-Player und andere Arten von Geräten verhindert, die häufig aus- und eingeschaltet werden müssen und Boot-Up-Zeiten in der Größenordnung von einer Sekunde erfordern. Eine Anzahl von US-Patenten versucht, die Entwicklung von eingebetteten Controllern (auch eingebettete Geräte, Embedded Controllers oder einfach Mikroprozessoren genannt) auf verschiedene Arten zu erleichtern, einschließlich der folgenden US-Patente, von denen jedes hier durch Bezugnahme eingeschlossen ist.
  • Das US-Patent 8,209,694 von Glistvain, erteilt am 26 Juni 2012, mit der Bezeichnung "Single-stack real-time operating system for embedded systems ", ist hier durch Bezugnahme eingeschlossen. Dieses Patent beschreibt ein Echtzeit-Betriebssystem (RTOS) für eingebettete Controller, welche einen begrenzten Datenspeicher aufweisen, und eine Bibliothek von Fortsetzungen umfasst, sowie eine breite Makro-Palette welche das Fortsetzungspunktmanagement ausblenden, mit geschachtelten Blockfunktionen und einen Kommunikationstack. Das RTOS führt mindestens eine erste und eine zweite Aufgabe aus und verwendet eine Vielzahl von Aufgabenprioritäten. Die Aufgaben teilen sich nur einen einzigen Stapel. Der Aufgabenplaner schaltet die Steuerung auf die Aufgabe mit der höchsten Priorität um. Die Fortsetzungsbibliothek stellt Makros zur automatischen Verwaltung der Fortsetzungspunkte bereit. Die Yield-Funktion setzt einen ersten Fortsetzungspunkt in der ersten Aufgabe und übergibt die Steuerung an den Aufgabenplaner, woraufhin der Aufgabenplaner auf die zweite Aufgabe umschaltet und zu einem späteren Zeitpunkt die Steuerung an die erste Aufgabe am ersten Fortsetzungspunkt zurückgibt. Die geschachtelte blockierende Funktion ruft andere blockierende Funktionen von innerhalb ihres Körpers auf und übergibt die Steuerung an den Aufgabenplaner.
  • Das US Patent 7,383,368 , von Schopp, erteilt am 3 Juni, 2008 "Method and system for autonomically adaptive mutexes by considering acquisition cost value ", ist hier durch Bezugnahme eingeschlossen. Dieses Patent beschreibt ein Verfahren zum Verwalten eines mutex in einem Datenverarbeitungssystem. Für jedes mutex, werden durchschnittliche Beschaffungskosten gehalten, welche einen durchschnittlichen Verbrauch der Rechnungsressourcen anzeigen, welches durch threads verursacht wird, die versuchen den mutex zu erhalten.
  • Das US Patent 6,282,454 von Papadopoulos, et al., erteilt am 28. August 2001, unter der Bezeichnung „Web interface to a programmable controller“, wird hier durch Bezugnahme eingeschlossen. Dieses Patent beschreibt eine Schnittstelle zu einem Netzwerk aus zumindest einem programmierbaren logischen Steuersystem, welches ein Anwendungsprogramm ausführt zum Steuern der Ausgabevorrichtungen als Reaktion auf den Zustand von Eingabevorrichtungen. Die Webschnittstelle führt Webseiten von einer Ethernet Platine aus, welche direkt mit der PLC Hauptplatine verbunden ist und einen HTTP Protokoll-Interpreter, einen PLC Platinentreiber, einen TCP/IP Stapel, und ein Ethernet Platinen-Kernel umfasst. Die Webschnittstelle stellt einen Zugriff auf die PLC-Rückebene durch einen Benutzer an einem entfernten Ort über das Internet bereit. Die Schnittstelle übersetzt die im Internet verwendeten Industriestandards Ethernet, TCP/IP und HTTP-Protokolle in für die PLC erkennbare Daten. Über diese Schnittstelle kann der Benutzer alle relevanten Daten zum Betrieb des programmierbaren logischen Steuersystems abrufen. Dies unterscheidet sich von der vorliegenden Erfindung, da das Patent 6,282,454 ein Webschnittstellenmodul und eine PLC beschreibt, die über eine Rückebenenschnittstelle getrennt sind, während im Gegensatz dazu bei der vorliegenden Erfindung die Webschnittstelle innerhalb der PLC (oder einer industriellen Automatisierungssteuerung oder dergleichen Mikrocontroller) implementiert ist, nicht als ein oder mehrere separate Teile.
  • Das US-Patent 7,058,693 von Baker, Jr., erteilt am 6. Juni 2006 unter der Bezeichnung " System for programming a programmable logic controller using a web browser", ist hierin durch Bezugnahme aufgenommen. Das Patent 7,058,693 beschreibt ein Steuersystem, das eine Internet-Webschnittstelle zu einem Netzwerk von mindestens einem programmierbaren Logiksteuersystem (PLC) enthält, das ein Anwendungsprogramm zum Steuern von Ausgabegeräten als Reaktion auf den Zustand von Eingabegeräten ausführt. Die Webschnittstelle führt Webseiten von einer Ethernet®-Platine aus, die direkt mit der PLC-Rückebene verbunden ist und einen HTTP-Protokoll-Interpreter, einen PLC-Rückebenen-Treiber, einen TCP/IP-Stapel und einen Ethernet-Platinen-Kernel enthält. Die Webschnittstelle ermöglicht den Zugriff auf die PLC-Rückebene durch einen entfernten Benutzer über das Internet. Die Schnittstelle übersetzt die im Internet verwendeten Industriestandards Ethernet, TCP/IP und HTTP-Protokolle in für die PLC erkennbare Daten. In der PLC befindet sich ein Programmpaket, das für einen Benutzer über diese Schnittstelle zugänglich ist und es dem Benutzer erlaubt, Programme zu editieren, die den Betrieb des programmierbaren Logiksteuerungssystems steuern. Dies unterscheidet sich wiederum von der vorliegenden Erfindung, da das Patent 7,058,693 ein Webschnittstellenmodul und eine PLC beschreibt, die über eine Rückebenenschnittstelle getrennt sind, während bei der vorliegenden Erfindung die Webschnittstelle im Inneren der PLC (oder der industriellen Automatisierungssteuerung oder andere Mikrocontroller) implementiert ist, nicht als ein oder mehrere getrennte Teile.
  • Systeme nach dem Stand der Technik umfassen:
    • (1) statPLC-Web, wird als Browser-basierte Programmierung beschrieben, wobei man mit einem bevorzugten Web-Browser auf den statPLC-Webserver zugreift und mit der Verarbeitung beginnt. (Siehe www.autstat.com/index.php/statplc-web.html, aufgerufen am 19. August 2015, die eine Postanschrift bei Baier Automation & Statistics, Ufergasse 68, 3500 Krems, Österreich angibt) Es gibt keine genaue Informationen über die Weise, in der das Hosting arbeitet, aber basierend auf den verfügbaren Informationen ist es wahrscheinlich, dass es auf die folgende Weise funktioniert: Der Benutzer führt eine Browseranwendung auf seinem lokalen Clientcomputer aus, wodurch eine Anwendung auf einem webbasierten Servercomputer zum Bearbeiten und Kompilieren von Programmen ausgeführt wird, um ausführbaren Code zu erhalten, der dann vom webbasierten Server in das für den Benutzer lokale eingebettete Gerät geladen wird. Die Tatsache, dass das statPLC-Web die C-Entwicklung unterstützt, deutet darauf hin, dass es eine Art C-Kompilierer vorhanden ist, und es ist unwahrscheinlich, dass der C-Kompilierer auf der Cortex M3 CPU läuft, die sie angeblich unterstützen.
    • (2) Tri-Logic (ein Java-Applet, das aufgrund von Java-Beschränkungen innerhalb des Geräts gehostet wird), das Simulationen unterstützt (siehe www.triplc.com/trilogi3.htm, aufgerufen am 19. August 2015, die eine Postanschrift bei 1685 H ST # 198, Blaine WA 98230, USA, angibt).
    • (3) ICPDAS WISE (gehostet in dem Gerät). (Siehe wise.icpdas.com/Introduction.html, die ein Sitz in Nr. 111, Guangfu N. Road, Hukou Township, Hsinchu County 30351, Taiwan, R.O.C. angibt).
    • (4) MBLOGIC-Kontaktplan-Editor im Web (gehostet auf demselben Gerät). (Siehe mblogic.sourceforge.net/techdemo/ladtest/ladderhelp.html)
    • (5) Leiter mit Kompilierer auf der Client-Seite, um Code für das Zielgerät zu erzeugen (Arduino/AVR). (Siehe github.com/tadpol/Avrian-Jump.) Dies kann mit der Überwachung von Leitern in Echtzeit unter Verwendung von Javascript (das auch einige Simulationen bereitstellt) kombiniert werden. (Siehe mblogic.sourceforge.net/techdemo/techdemo.html.)
    • (6) Verwalten von localStorage, um den Verlust der Arbeit mit der Programmierumgebung zu vermeiden (sogar das Verwalten mehrerer Sitzungen innerhalb desselben Browsers). (Siehe mblogic.sourceforge.net/techdemo/techdemo.html.)
    • (7) Fernzugriff auf Geräte (siehe research.microsoft.com/pubs/161386/gibraltar.pdf und www2014.kr/wp-content/uploads/2014/05/companion_p135.pdf, Zugriff am 19. August 2015)
    • (8) Beck PLC (Web PLC) Hosting ist auf dem Gerät selbst, wobei das Gerät es ermöglicht, Informationen auf einen zentralen Beck-Server für IOT-Funktionalität hochzuladen. (Siehe www.beck-ipc.com/files/manual/com.tom_WEB-PLC_GettingStarted_V16.pdf,)
  • Gemäß Wikipedia (en.wikipedia.org/wiki/Ladder_logic, auf die am 19. August 2015 zugegriffen wurde) war „Ladder Logic“ ursprünglich ein Verfahren in schriftlicher Form, um den Entwurf und die Konstruktion von Relaisschränken zu dokumentieren, wie sie in der Fertigung und Prozesssteuerung verwendet werden. Jedes Gerät im Relaisschrank würde durch ein Symbol im Kontaktplan dargestellt sein, wobei Verbindungen zwischen diesen Geräten gezeigt wurden. Außerdem werden andere Elemente außerhalb des Relaisschranks, wie Pumpen, Heizungen usw., ebenfalls in dem Leiterdiagramm gezeigt.
  • Die Leiter-Logik hat sich zu einer Programmiersprache entwickelt, die ein Programm durch ein grafisches Diagramm darstellt, das auf den Schaltplänen der Relais-Logik-Hardware basiert. Die Leiterlogik wird verwendet, um Software für speicherprogrammierbare Steuerungen (PLC) zu entwickeln, die in industriellen Steuerungsanwendungen verwendet werden. Der Name basiert auf der Beobachtung, dass Programme in dieser Sprache Leitern ähneln, mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen. Während Leiterdiagramme einst die einzige verfügbare Notation für die Aufzeichnung programmierbarer Steuerungsprogramme waren, sind heute andere Formen in IEC 61131-3 standardisiert.
  • Dementsprechend besteht ein Bedarf an verbesserten Verfahren und Geräten zum Entwickeln von Software für PLC.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in einen industriellen Automatisierungscontroller (IAC) bereit, wobei in einigen Ausführungsformen die IAC einen Webserver innerhalb der IAC umfasst. In einigen Ausführungsformen umfasst das Gerät: einen Clientcomputer, der ein Clientcomputer-Dateisystem enthält; ein Softwareprogramm, das sich auf dem Clientcomputer befindet und ausführt, um eine Programmierumgebung einschließlich eines Programmeditors und Kompilierers zu erzeugen, wobei die Programmierumgebung außerhalb des von der Programmierumgebung gesteuerten industriellen Automatisierungscontrollers liegt und ein Softwareprogramm, welches sich innerhalb des industriellen Automatisierungscontrollers befindet und darin ausgeführt wird. In einigen Ausführungsformen erzeugt der Kompilierer ein Bytecodeprogramm, das vom Clientcomputer in die IAC heruntergeladen werden kann und dann in der IAC ausführbar ist. In einigen Ausführungsformen umfasst die Programmierumgebung eine Import/Export-Einheit, die es einem Benutzer ermöglicht, Projektdateien über das Clientcomputer-Dateisystem zu speichern/zu laden. Wenn das Softwareprogramm von einem Hostserver erhalten und in den Clientcomputer geladen wird, dann wird, sobald die Programmierumgebungssoftware von dem Hostserver ein erstes Mal in den Clientcomputer geladen wird, die Verbindung zu dem Hostserver optional getrennt, da der Hostserver für den Betrieb der Programmierumgebung nicht mehr erforderlich ist. In einigen Ausführungsformen umfasst die Programmierumgebungssoftware auch einen Simulator, der es dem menschlichen Benutzer ermöglicht, das kompilierte Bytecodeprogramm in dem Clientcomputer zu simulieren.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein nicht flüchtiges computerlesbares Medium bereit, auf dem Anweisungen für eine Programmierumgebung gespeichert sind, die ein geeignet programmiertes Clientcomputersystem zur Durchführung eines Verfahrens veranlassen, wobei das Verfahren umfasst: Auslösen und Empfangen von Informationen über den Benutzer eines Menschen, graphische Benutzerschnittstellen (GUI), die ein erstes GUI-Softwareprogramm zum Steuern eines industriellen Automatisierungscontrollers angeben; Kompilieren des ersten GUI-Softwareprogramms in ein Bytecodeprogramm unter Verwendung des Clientcomputersystems; Kommunizieren zwischen einem Web-Browser in dem Clientcomputersystem und einem Webserver, der in der industriellen Automatisierungssteuerung implementiert ist; Laden des Bytecodeprogramms von dem Clientcomputersystem in den industriellen Automatisierungscontroller; und Präsentieren einer Programmierumgebung für den menschlichen Benutzer von dem Clientcomputer, wobei die Programmierumgebung die Kommunikation zwischen dem Web-Browser in dem Clientcomputersystem und dem Webserver umfasst, der in der industriellen Automatisierungssteuerung implementiert ist.
  • In einigen Ausführungsformen werden die Anweisungen für die Programmierumgebung in den Clientcomputer von einem nicht flüchtigen computerlesbaren Medium geladen, das mit einem Hostserver verbunden ist, der dann optional von dem Clientcomputer getrennt wird, während die Programmierumgebung mit dem industriellen Automatisierungscontroller kommuniziert. In einigen Ausführungsformen werden die Anweisungen für die Programmierumgebung in den Clientcomputer von einem nicht-flüchtigen computerlesbaren Medium ohne einen Hostserver geladen.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein computerimplementiertes Verfahren zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in eine PLC bereit. Dieses Verfahren umfasst: Laden eines Web-Server-Programms in Firmware in einem Mikroprozessor (z. B. in einigen Ausführungsformen eine programmierbare Logiksteuerung (PLC)), die in einer eingebetteten Umgebung verwendet wird; Verbinden der PLC mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Hervorrufen und Empfangen von Informationen einer graphischen Benutzerschnittstelle (GUI) von einem menschlichen Benutzer durch den Clientcomputer, die ein erstes GUI-Softwareprogramm spezifizieren, das zum Steuern des Mikroprozessors zu verwenden ist; Kompilieren des ersten GUI-Softwareprogramms in einem Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb der PLC befindet, in dem Clientcomputer; Laden des Bytecodeprogramms von dem Clientcomputer und/oder dem Hostserver in den Mikroprozessor; und Präsentieren einer Programmierumgebung, die Simulationsmerkmale von der PLC enthält, von dem Clientcomputer zu dem menschlichen Benutzer.
  • Figurenliste
    • 1 zeigt ein Blockdiagramm eines Systems nach dem Stand der Technik 101, wobei eine traditionelle Webanwendung auf dieselbe Domäne zugreift, auf der sie gehostet wird. Alle Benutzeraktionen werden an denselben Server gesendet, auf dem die Anwendung gehostet wird;
    • 2 zeigt ein Blockdiagramm eines Systems nach dem Stand der Technik 201, das einen weiteren üblichen Ansatz zeigt, bei dem die Anwendung von dem mit dem Clientcomputer 111 des Benutzers verbundenen Web-Server 112 über das Internet ausgeführt wird und der ausführbare Code in das eingebettete Gerät 99 vom Webserver (entweder direkt oder indirekt) durch den Clientcomputer 111 geladen wird.
    • 3A zeigt ein Blockdiagramm eines Systems 301, das ARGEE™-Programmierung verwendet, gemäß einigen Ausführungsformen der vorliegenden Erfindung, in denen die Situation völlig anders ist.
    • 3B zeigt ein Blockdiagramm eines Systems 302, das ARGEE™-Programmierung verwendet (es stellt einen Modus des Systems 301 dar, in dem nach der anfänglichen Verbindung mit dem Host-Server, in dem die Programmierumgebung in den Clientcomputer 111 heruntergeladen wird, der Host-Server 112 getrennt wird, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 4 zeigt ein Blockdiagramm eines Systems 401, das ARGEE™-Programmierung verwendet, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 5 zeigt ein Blockdiagramm eines Systems 501, das ARGEE™-Programmierung verwendet, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 6A zeigt einen linken Teil 601 eines Screenshots einer Ausführungsform eines Codeeditors 600 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 6B zeigt einen rechten Teil 602 eines Screenshots einer Ausführungsform eines Codeeditors 600 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 7A zeigt einen linken Teil 701 eines Screenshots einer Ausführungsform eines Code-Debuggers 700 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 7B zeigt einen rechten Teil 702 eines Screenshots einer Ausführungsform eines Code-Debuggers 700 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 8 zeigt ein Screenshot eines Flussdiagramms 801 aus einem Flussdiagrammeditor gemäß einigen Ausführungsformen der vorliegenden Erfindung.
    • 9 zeigt ein Screenshot eines Flussdiagrammeditors 901 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Obwohl die folgende detaillierte Beschreibung viele Einzelheiten zum Zweck der Veranschaulichung enthält, wird ein Durchschnittsfachmann erkennen, dass viele Variationen und Änderungen der folgenden Details innerhalb des Schutzumfangs der Erfindung liegen. Spezifische Beispiele werden verwendet, um bestimmte Ausführungsformen zu veranschaulichen; die in den Ansprüchen beschriebene Erfindung soll jedoch nicht nur auf diese Beispiele beschränkt sein, sondern umfasst vielmehr den vollen Umfang der beigefügten Ansprüche. Dementsprechend werden die folgenden bevorzugten Ausführungsformen der Erfindung ohne Einschränkung der Allgemeinheit und ohne Beschränkung der beanspruchten Erfindung dargelegt. Ferner wird in der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen auf die beigelegten Zeichnungen Bezug genommen, die einen Teil davon bilden und in denen zur Veranschaulichung spezifische Ausführungsformen gezeigt sind, in denen die Erfindung praktiziert werden kann. Es versteht sich, dass andere Ausführungsformen verwendet werden können und strukturelle Änderungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen.
  • Es ist insbesondere vorgesehen, dass die vorliegende Erfindung Ausführungsformen mit Kombinationen und Unterkombinationen der verschiedenen hierin einzeln beschriebenen Ausführungsformen und Merkmale enthält (das heißt, anstatt jede Kombination von Elementen aufzulisten, beinhaltet diese Beschreibung Beschreibungen von repräsentativen Ausführungsformen und betrachtet Ausführungsformen die einige der Merkmale einer Ausführungsform in Kombination mit einigen der Merkmale einer anderen Ausführungsform umfassen, einschließlich Ausführungsformen, die einige der Merkmale einer Ausführungsform kombiniert mit einigen der Merkmale von Ausführungsformen umfassen, die in den Patenten und Veröffentlichungen beschrieben sind, welche hiermit in der vorliegenden Anmeldung unter Bezugnahme eingeschlossen sind). Ferner enthalten einige Ausführungsformen weniger als alle Komponenten, die als Teil einer der hierin beschriebenen Ausführungsformen beschrieben sind.
  • Die erste(n) Ziffer(n) der in den Figuren erscheinenden Bezugszeichen entsprechen im Allgemeinen der Figurennummer, in der diese Komponente zuerst eingeführt wird, so dass durchgehend die gleiche Bezugsziffer verwendet wird, um auf eine identische Komponente Bezug zu nehmen, die in mehreren Figuren erscheint. Signale und Verbindungen können mit der gleichen Bezugsnummer oder dem gleichen Bezugszeichen bezeichnet werden, und die tatsächliche Bedeutung ergibt sich aus ihrer Verwendung im Zusammenhang mit der Beschreibung.
  • In einigen Ausführungsformen umfasst die vorliegende Erfindung eine webbasierte Programmiersprache (einige Ausführungsformen werden manchmal als ARGEE™ bezeichnet), die für Fachleute entworfen wurde, die mit der Leiterlogik-Programmierung von PLC vertraut sind. Die ARGEE™-Programmiersprache basiert auf einem „Bedingung“ -> „Aktionen“ -Paradigma. Dies bedeutet, dass die virtuelle Maschine Programmbedingungen zyklisch auswertet und zugehörige Aktionen ausführt, die unterschiedliche Ergebnisse haben, je nachdem, ob die jeweilige Bedingung wahr ist oder nicht. Dieser Ansatz ähnelt der Leiterlogik-Programmierung.
  • In einigen Ausführungsformen ruft die vorliegende Erfindung Informationen über eine grafische Benutzerschnittstelle (GUI) hervor und empfängt diese von einem menschlichen Benutzer, wobei die Informationen verwendet werden, um das zu erzeugen, was hier als „GUI-Programm“ bezeichnet wird (das heißt, ein Programm, das vom bzw. dem Benutzer über die grafische Benutzerschnittstelle erzeugt bzw. angezeigt wird und nicht das Programm, das dem Benutzer die GUI präsentiert).
  • Die ARGEE™-Programmierspräche der vorliegenden Erfindung stellt Funktionen zum Kontrollieren von Zeitgebern, Zählern, Operationen durch Verwendung von Ganzzahlarithmetik bereit. Die Programmiersprache ermöglicht den Datenaustausch mit übergeordneten PLC sowie die Steuerung lokaler/entfernter Sensoren, die an das PLC-Gerät angeschlossen sind.
  • In einigen Ausführungsformen stellt die ARGEE™ -Programmierumgebung eine Import/Export-Einheit bereit, die es dem Benutzer ermöglicht, Dateien auf der lokalen Festplatte des Clientcomputers zu speichern/zu laden oder sie auf die über das Netzwerk zugänglichen entfernten Computer zu speichern/zu laden. Jedes Directory (lokal oder entfernt), auf das über das Dateisystem des Clientcomputers zugegriffen werden kann, kann zum Laden/Speichern der Projektdateien verwendet werden.
  • In einigen Ausführungsformen gibt es zwei Hauptteile des ARGEE™-Systems:
    1. (1) Das erste Element ist die ARGEE™-Programmierumgebung, die das GUI-Programm in ein „Bytecode“ -Programm der virtuellen Maschine kompiliert.
    2. (2) Das zweite Element ist die virtuelle Maschine, die sich in dem Gerät befindet, das zyklisch das Bytecodeprogramm ausführt, das von der ARGEE™-Programmierumgebung erzeugt und hochgeladen wurde.
  • ARGEE™-Programmierumgebung
  • Eines der Entwurfsziele bei der Erstellung der ARGEE™-Programmierumgebung bestand darin, eine Umgebung zu schaffen, die unabhängig vom Betriebssystem ist, das heißt eine Umgebung, die betriebssystemunabhängig ist und die keine Softwareinstallation von Seiten des Kunden auf seiner Maschine erfordert. Aus diesem Grund wurde die webbasierte Programmierumgebung gewählt.
  • Die Programmierumgebung ist vollständig Javascript-basiert und wird vollständig im Browser ausgeführt. Der Browser reagiert auf Benutzeraktionen zum Editieren des Programms, zum Kompilieren des Programms, zum Testen des Programms.
  • Der Kompilierer ist auch in die Umgebung integriert und läuft in dem Browser. Er parst das Benutzerprogramm und erzeugt ein Bytecodeprogramm, welches von der virtuellen Maschine auf dem Gerät ausgeführt wird, oder, als Alternative, vom Simulator, welcher im Clientcomputer residiert.
  • Der Debugger extrahiert zyklisch Informationen, im Hintergrund, vom Gerät. In einigen Ausführungsformen enthalten diese Informationen:
    1. 1) Werte aller Programm-, I/O- und PLC-Variablen,
    2. 2) Bedingungen, welche im letzten Abtastzyklus aktiv waren.
    Auf der Basis dieser Informationen, erzeugt der Debugger eine Echtzeitaufnahme der Variablen und wie sie sich ändern, sowie welche Bedingungen in jedem spezifischen Zeitpunkt wahr sind.
  • Die Umgebung ist so konstruiert, dass wenn der Code editiert wird, auch wenn der Browser die Verbindung zu dem Gerät verliert oder wenn der Browser geschlossen wird, kein Code verloren geht. Der Code ist im localStorage des Browsers gespeichert und wird beim folgenden neuen Start der Umgebung zurückgewonnen.
  • Virtuelle Maschine
  • Das Hauptziel bei der Entwicklung der ARGEE™ Programmierumgebung war die Minimierung des RAM/Flash-Platzbedarf innerhalb des Geräts.
  • Um dieses Ziel zu erreichen muss der Großteil der speicherintensiven Rechenarbeit in die Umgebung versetzt werden. Die Umgebung führt das gesamte Editieren, Kompilieren und Debuggen aus. Nur eine sehr kleine Anzahl an Befehlen wird mit dem tatsächlichen Gerät inzwischen ausgetauscht. Während des gesamten Editierprozesses tauscht das Gerät keine Information mit dem Browser. Das zeitweilige Speichern des Programms geschieht innerhalb des Browsers. Nach einer erfolgreichen Kompilation, wird das Bytecode, zusammen mit dem optionalen Programmtext in das Gerät hochgeladen.
  • Das Gerät führt eine Stapel-basierte virtuelle Maschine aus, welche sehr einfach ist und nur wenige Opcode aufweist.
  • ARGEE™ Simulation
  • In einigen Ausführungsformen stellt die ARGEE™ Programmierumgebung einen eingebauten Simulationsmodus bereit. Im Simulationsmodus wählt der Entwickler ein Gerät, welches simuliert werden soll und die Umgebung wirkt als ob sie mit einem echten Gerät sprechen würde. Das Programm kann alle Eingang/Ausgang (IO)-Punkte und PLC-Variablen innerhalb der simulierten Umgebung manipulieren. Der Benutzer kann Eingabepunkte und/oder PLC Variablen aufzwingen und die Ausführung des Programms auf dieser Weise testen. In einigen Ausführungsformen wird die Simulation durch Ausführen der virtuellen Maschine innerhalb der Umgebung erhalten.
  • ARGEE™ Hosting
  • Obwohl das Gerät, welches das ARGEE™ Programm ausführt einen eingebetteten Webserver enthält, ist die ARGEE™ Umgebung nicht auf dem Gerät selbst gehostet. Sie ist auf einem externen Server gehostet. Dies erfolgt aus folgenden Gründen:
    1. 1) Um die Speichererfordernisse auf dem eingebetteten Gerät zu minimieren, und
    2. 2) Um kürzere Aktualisierung/Distributionszyklen der Umgebung zu einer großen Anzahl von Kunden zu ermöglichen. Da der Gerätabschnitt minimiert ist und das Ziel ist, möglichst wenige Änderungen vorzunehmen, wird die Großzahl der Änderungen in der Umgebung erwartet. Daher wird durch Entkoppeln des Umgebungs-Hosting vom Gerät dem Kunden ermöglicht die Umgebung zu verändern, ohne die Firmware innerhalb des Geräts selbst ändern zu müssen, was schwierig (wegen der geographischen Lage des Geräts) und gefährlich sein kann (weil alle betroffene Geräte vom Prozess getrennt werden müssen, den sie gerade steuern).
  • Die Umgebung wird vom Hostserver in einem Mal heruntergeladen und wird im Browser ausgeführt. In einigen Ausführungsformen wird der Hostserver nie nach dem Herunterladen kontaktiert.
  • Die 1 zeigt ein Blockdiagramm eines Systems 101 des Stands der Technik, wobei eine traditionelle Webanwendung auf die selbe Domäne zugreift, auf welcher sie gehostet ist. Alle Benutzeraktionen werden zu dem selben Server gesendet, auf welchem die Anwendung gehostet ist.
  • Die 2 zeigt ein Blockdiagramm eines Systems 201 des Stands der Technik, welches einen anderen üblichen Ansatz zeigt, in welchem die Anwendung vom Webserver 112 ausgeführt wird, welcher mit dem Clientcomputer 111 des Benutzers über das Internet verbunden ist, und der ausführbare Code ist in das eingebettete Gerät 99 vom Webserver (entweder direkt oder indirekt durch den Clientcomputer 111) geladen.
  • Die 3A zeigt ein Blockdiagramm eines Systems 301, welches die ARGEE™ Programmierumgebung nach einigen Ausführungsformen der vorliegenden Erfindung verwendet, in welchem die Situation völlig anders ist. In 3A ist ein Mikrocomputer gezeigt, welcher als eingebetteter Controller 399 benutzt werden kann oder benutzt wird (zum Beispiel in einigen Ausführungsformen ist das Gerät 30 ein industrieller Automationscomputer (IAC), wie ein programmierbarer Logikcontroller (PLC) oder andere geeignete integrierte Schaltungs-Chip(s)). In einigen Ausführungsformen, wird ein Softwareprogramm, welches eine Programmierumgebung steuert, in den Clientcomputer 111 geladen (in einigen Ausführungsformen wird das Softwareprogramm, welches die Softwareprogrammierumgebung steuert (SWPE 322, gezeigt durch gestrichelte Linien, da es nur das erste Mal geladen wird und danach im Clientcomputer 111 residiert) von einem Hostserver 112 in den Clientcomputer 111 heruntergeladen 321). In einigen Ausführungsformen führt der Clientcomputer 111 die Software aus, welche die Programmierumgebung steuert, welche Benutzeraktionen von einem menschlichen Benutzer hervorruft und empfängt (einige Ausführungsformen umfassen andere Interaktionen, welche auch zum Interagieren mit dem eingebetteten Gerät 399 verwendet werden). In einigen Ausführungsformen umfasst das eingebettete Gerät 399 ein kleines Webserver-Programm, welches in seiner Firmware eingebettet ist, welches Benutzeraktionen vom Clientcomputer 111 empfängt. Zusätzlich führt das eingebettete Gerät 399 eine Stapel-basierte virtuelle Maschine (VM) 340 aus, welche sehr einfach ist und nur wenige Opcode aufweist.
  • 3B zeigt ein Blockdiagramm eines Systems 302, das die ARGEE™ Programmierumgebung verwendet (es stellt einen Modus des Systems 301 dar, in dem, nach der anfänglichen Verbindung mit dem Hostserver, in dem die Programmierumgebung in den Clientcomputer 111 heruntergeladen wird, der Hostserver 112 getrennt werden kann, wobei die Programmierumgebung zwischen dem Clientcomputer 111 und dem eingebetteten Gerät 399 läuft, das einen Web-Server und eine Simulation/Virtuelle Maschinen-Software aufweist, die darin läuft, gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • 4 zeigt ein Blockdiagramm eines Systems 401, das die ARGEE™ Programmierumgebung verwendet, gemäß einigen Ausführungsformen der vorliegenden Erfindung, in welchen der Clientcomputer 111 verwendet wird, um mehrere eingebettete Geräte 399 zu steuern und interaktiv zu debuggen. In ARGEE™, fordert die Umgebung den Benutzer auf, das eingebettete Gerät auszuwählen, das zu steuern ist. Dadurch kann der Benutzer die gleiche Umgebung verwenden, um mit allen Geräten in seiner Anlage zu sprechen. In einigen Ausführungsformen sind andere Aspekte des Systems 401 wie oben in den Beschreibungen von 3A und 3B beschrieben.
  • Da sich die extern gehostete Umgebung aufgrund von Clientaktionen nicht dynamisch ändert, ist es möglich, die Umgebung automatisch ohne eine Internetverbindung zu verwenden. Wenn der Benutzer den „Hostserver“ zum ersten Mal besucht, wird die Umgebung automatisch im Browser des Benutzers zwischengespeichert. Später kann der Benutzer die URL ohne Internetverbindung erneut eingeben und die Umgebung wird aus dem Cache geladen. Dieser Prozess wird automatisch von jedem HTML5-kompatiblen Browser verwaltet.
  • Die Verwendung einer Umgebung ohne Internetverbindung ist in bestimmten industriellen Automatisierungsorganisationen wichtig, da bestimmte Bereiche der Anlage aufgrund von Sicherheitsmaßnahmen oder des geografischen Standorts möglicherweise keinen Zugang zum Internet haben. Dies ist in 3B gezeigt, wobei der Clientcomputer eine Verbindung mit dem eingebetteten Gerät herstellen kann (z. B. in einigen Ausführungsformen, eine PLC), selbst wenn die globale Netzwerkverbindung nicht länger verfügbar ist, da die Programmierumgebung auf dem Clientcomputer zwischengespeichert wird.
  • Wie in 4 gezeigt, ist es möglich, mehrere ARGEE™-Programme zu editieren/kompilieren/debuggen und eine Verbindung zu mehreren Geräten unter Verwendung verschiedener Browserfenster herzustellen, die alle auf einem einzigen Clientcomputer 111 laufen. Bei einigen Ausführungsformen wird dies durch Verwendung unterschiedlicher Speicherbereiche in localStorage erreicht, die von HTML5 pro Domäne bereitgestellt werden. In einigen Ausführungsformen wird jeder Bereich durch die IP-Adresse des Geräts identifiziert, auf das zugegriffen wird.
  • Die 5 zeigt ein Blockdiagramm eines Systems 501, das die ARGEE™-Programmierumgebung verwendet, gemäß einigen Ausführungsformen der vorliegenden Erfindung. In einigen Ausführungsformen umfasst der industrielle Automatisierungscontroller (IAC; z. B. das eingebettete Gerät) 399 einen kleinen eingebetteten Webserver, der die Kommunikation mit dem Clientcomputer 111 ermöglicht, auf dem ein Webbrowser läuft. Der Web-Browser in dem Clientcomputer 111 bietet eine flexible Möglichkeit zum Bereitstellen einer GUIbasierten Schnittstelle für Interaktionen mit dem menschlichen Benutzer. In einigen Ausführungsformen enthält der Clientcomputer 111 auch einen Programmeditor (der eine GUI enthält, die von einem menschlichen Benutzer Informationen hervorruft und empfängt, die verwendet werden, um ein grafisches High-Level-Programm zu erstellen, von dem, was der IAC ausführen wird), einen Kompilierer (der das High-Level-Grafikprogramm in ein Bytecodeprogramm kompilieren wird, das in dem IAC geladen und ausgeführt werden kann) und einen Debugger, sowie einen Simulator, der die Ausführung des Bytecodeprogramms so simuliert, als ob es innerhalb der IAC 399 ausgeführt wäre, sodass dem Benutzer ermöglicht wird, Dinge zu beobachten und zu steuern, die in dem IAC 399 auftreten würden, wenn das Bytecodeprogramm dort ausgeführt wäre. In einigen Ausführungsformen umfasst der IAC 399 einen FLASH-Speicher oder einen anderen nichtflüchtigen wiederschreibbaren internen Speicher.
  • Einige neuen Aspekte der vorliegenden Erfindung
  • Die „ARGEE™ Hosting Sektion“ bezieht sich auf industrielle Automation. Die Situation ist ziemlich einzigartig, da die Programmierumgebung außerhalb des Geräts gehostet ist. Es können auch Anwendungen in anderen Bereichen geben, in welchen das Hosting-Modell ähnlich ist, jedoch nicht in Programmierung/PLC-Umgebungen, welche auf diese Weise operieren.
  • Dieses Hosting-Modell erlaubt der Erfindung folgende drei Ziele zu erreichen:
    1. 1) Die vorliegende Erfindung reduziert die Speicheranforderungen des eingebetteten Geräts,
    2. 2) Die vorliegende Erfindung ermöglicht kürzere Aktualisierungszyklen des Umgebungsprogramms selbst, da die Umgebung verändert werden kann, ohne die Firmware im Gerät zu beeinflussen.
    3. 3) Die vorliegende Erfindung erleichtert die Verteilung von Änderungen in der Umgebung zu einer großen Anzahl von Kunden, da die Geräte nicht bei jeder Umgebungsänderung aktualisiert werden müssen.
  • ARGEE™ Programmierumgebung
  • Einführung
  • Die ARGEE™ Programmierumgebung umfasst eine einfache Programmiersprache, welche auf Multiprotokollplattform-Geräte laufen kann. Sie umfasst eine webbasierte Programmierumgebung welche das Schreiben von Programmen in der Form einer Reihe von Bedingung->Aktion-Anweisungen erlaubt. Die Webumgebung kann den Code in ein Bytecode einer virtuellen Maschine kompilieren, welche in der eingebetteten Firmware läuft.
  • Die Umgebung stellt Funktionen bereit, um Zeitgeber, Zähler und Operationen durch Ganzzahlarithmetik zu steuern.
  • Zwei Ausführungsformen, welche die ARGEE™ Programmierumgebung betreffen, umfassen:
    1. 1) Eigenständiges Gerät: Ein Gerät, welches bestimmte Aktionen auf seine eigene IO Daten ausführen kann. Dieses Gerät kann auch Daten von übergeordneten PLC empfangen bzw. an übergeordnete PLC senden. Verwendungsfälle:
      1. a. Eigenständiger Proportional-Integral-Differential (PID) Controller,
      2. b. Vorverarbeitung von Eingang/Ausgangs-Daten (I/O), vor dem Senden an den PLC, oder
      3. c. Komplexe IO-Verarbeitung, wenn der PLC ausgeschaltet wird, um das System in einen bekannten Zustand zu bringen.
    2. 2) BEEP (Backplane Ethernet Extension Protocol) mit der ARGEE™ Programmierumgebung: ein ARGEE™ Gerät, welches BEEP-fähige entfernte I/O Knoten steuern kann.
  • Produktanforderungen
  • In einigen Ausführungsformen wird ein eigenständiges ARGEE™ Bauteil in die Firmware des PLC oder eines anderen eingebetteten Controllers integriert.
  • Gemeinsame Funktionalitäten
    1. 1) In einigen Ausführungsformen werden kompatible eingebettete Geräte (wie PLC) eine virtuelle Maschine ausführen, welche ARGEE™ Bytecode ausführen kann.
    2. 2) In einigen Ausführungsformen wird ein beliebiger kompatibler Browser benutzt (wie zum Beispiel, Firefox V26, Chrome v32 und ähnliche). Binäre Übertragungen werden zum Informationenaustausch verwendet. Es werden JavaScript™ Generatoren verwendet.
    3. 3) In einigen Ausführungsformen kann die virtuelle Maschine auf lokale I/O, Programmvariablen, PLC-Variablen zugreifen (Kommunikation mit übergeordneten PLC ModbusTCP, ProfiNET und EIP).
  • Eigenständiges Gerät
  • In einigen Ausführungsformen kann auf die ARGEE™ Programmierumgebung nicht vom Gerät aus zugegriffen werden, da die HTML/JS Dateien nicht Teil der Gerätefirmware sind (sie sind auf dem Clientcomputer des Entwicklers gespeichert, der sich mit einer virtuellen Maschine verbinden kann, welche innerhalb des Geräts läuft).
  • Die ARGEE™ Programmierumgebung kann auf einem Hostserver gehostet werden und der Entwickler kann den Hostserver verwenden, um die Umgebung ein Mal herunterzuladen; diese wird dann automatisch zwischengespeichert und kann auch ohne Internetverbindung verwendet werden (durch Verwendung von HTML5 Cache Manifest-Dateien).
  • Um auf die ARGEE™ Programmierumgebung in der Version eines eigenständigen Geräts zugreifen zu können, muss die ARGEE™ Programmierumgebung geöffnet und die IP-Adresse des zu programmierenden ARGEE™ Geräts eingegeben werden.
  • ARGEE™ Programmiersprache
  • In einigen Ausführungsformen umfasst die ARGEE™ Programmiersprache die Variablentypen der Tabelle 1. Tabelle 1
    Typ Beschreibung Typ Zugelassene arithmetische Ausdrücke Spezifische Aktionen Bytegröße
    Ganzzahlige Variablen Variablen, welche im PP Programm definiert sind Alle diese Variablen sind 32-bit Ganzzahlen mit Vorzeichen Alle arithmetischen Ganzzahlen Zuweisung 4
    Retain Ganzzahl Variablen, welche automatisch in Flash gespeichert werden Alle diese Variablen sind 32-bit Ganzzahlen mit Vorzeichen Alle arithmetischen Ganzzahlen Zuweisung 8 Byte (4 Byte Daten 4 Byte zusätzlicher Informationen)
    PLC Variablen Variablen Zuordnung zu übergeordnete PLC (Modbus/TCP oder Ethernet/IP) Datenaustausch mit einer ganzzahligen Variable, im Programm zugreifbar. Werden ganzzahligen Variablen im Programm zugeordnet Alle arithmetischen Ganzzahlen Zuweisung 20
    Zeitgeber/Zäh ler Zeitgeber/Zähler und können mit geeigneten Funktionen verwendet werden, wie „abgelaufen“, „Zähl“ und geeignete Aktionen, wie „Timer Ein“. Komplexe Datentypen Nur als Argument von Funktionen wie „abgelaufen“ und „Zähl“ verwendet Spezifische Aktionen: Timer Ein, Timer Aus, Start Timer, Aufzählen, Runterzählen, 16
    Status Ganzzahlige Variable welche verwendet wird, um Zustände in der Statusmaschine zu definieren. Verhält sich identisch wie bei einer normalen ganzzahligen Variable, mit zwei Ausnahmen: 32-bit Ganzzahl Alle arithmetischen Ganzzahlen Zuweisung 4
    1) Initialisieren: listet Zustände
    2) Im Debugger wird ein Zustandsname auftreten, welcher mit dem aktuellen Wert übereinstimmt
    Lokale I/O Eingänge/Ausgänge/Diagnostis che Punkte Werden ganzzahligen Variablen im Programm zugeordnet Alle arithmetischen Ganzzahlen Zuweisung (nicht zugewiesen aus 1 KB RAM)
    Systemvariabl en PLC Verbunden 32-bit Ganzzahl Nur 1 Bit wird verwendet um den verbundenen PLC Zustand anzuzeigen 4
    Systemvariabl en Max Zykluszeit (seit Programmstart) 32-bit Ganzzahl, gibt Zeit in ms an Zeit vom vorgehenden Zyklus zum aktuellen Zyklus 4
  • In einigen Ausführungsformen ist die Zuordnung von PLC Variablen wie in Tabelle 2 gezeigt: Tabelle 2
    Feldbus Beschreibung von Zuordnungspunkten
    Ethernet/IP Falls das ARGEE™ Programm geladen ist, werden die Verbindungspunkte 101, 110 PLC <->ARGEE™ Daten austauschen. Daten starten vom Offset 0 für Eingangsverbindungen (Daten zu PLC) und Ausgangverbindungen (Daten vom PLC).
    Modbus/TCP ARGEE™ System wird seine Daten in Registern übertragen:
    1) 0x4000 (ro) für Eingangsdaten (ARGEE™-> PLC)
    2) 0x4400 (rw) für Ausgangsdaten (PLC-> ARGEE™)
  • Programmierparadigma:
    1. 1) Bedingung → Aktionen-Paradigma
    2. 2) Bedingung - Boolescher Ausdruck: muss zwischen wahr und falsch auswerten
    3. 3) Aktionen: Operationen, welche Variablen und Ausdrücke betreffen können.
      1. a. Einige Aktionen können Nebenwirkungen haben, auch wenn die Bedingung falsch ist.
      2. b. Falls keine Aktion in der Bedingung Nebenwirkungen haat, wird die Programmausführung schneller.
  • Ausdrücke:
    1. 1) Ausdrücke bestehen aus
      1. a. Operanden:
        1. i. Programmvariablen,
        2. ii. PLC Variablen,
        3. iii. Zeitgeber/Zählervariablen
        4. iv. Lokale I/O
      2. b. Operationen:
        1. i. Numerische Mathematische: +, -, *, /, %
        2. ii. Boolesche Mathematische: &, |, !
        3. iii. Vergleich: >, <, =, >= ,<=
        4. iv. Integrierte mathematische Funktionen: min, max, abs
        5. v. Zustandsänderung: F_COS
          1. 1. Diese Funktion prüft, ob der Zustand der Variable sich zwischen dem vorgehenden und dem aktuellen Abtastzyklus verändert hat.
        6. vi. Zeitgeber/Zähler:
          1. 1. Abgelaufen,
            1. a. Prüft, ob der Zeitgeber oder Zähler-Akkumulator über den vorbestimmten Wert ist.
          2. 2. Zählt
            1. a. Gibt den aktuellen Zeitgeber oder Zählerwert an Beachte: In einigen Ausführungsformen, ist Bitwise Arithmetik (zum Beispiel Bitwise und, bitwise oder, bitwise not, shifts) nicht unterstützt.
    2. 2) In einigen Ausführungsformen sind die Aktionen wie in Tabelle 3 wiedergegeben:
    Tabelle 3:
    Aktion Bedingung=FALSCH Bedingung=WAHR
    Zuweisung Keine Aktion Weist eine Zielvariable einem Ergebnis einer Ausdruckprüfung zu
    Spule Setzt eine Variable zurück zu 0 Setzt die Variable auf 1
    Zeitgeber Start Keine Aktion Falls der Zeitgeber nicht gestartet ist, startet es denselben.
    Andernfalls startet es den Zeitgeber wieder. Der Zeitgeber wird im Hintergrund ausgeführt bis der Akkumulator >= beim vorbestimmten Wert „Abgelaufen“ ist
    Zeitgeber Ein Setzt den Akkumulator und das Done-Flag zurück Falls Zeitgeber Flag 0 ist, Zeitgeber läuft. Der Zeitgeber wird jede Millisekunde akkumuliert bis der Akkumulator >= beim vorbestimmten Wert „Abgelaufen“ ist. In diesem Falle wird das Done Flag erhoben.
    Zeitgeber Aus Falls Zeitgeber Flag 0 ist, Zeitgeber läuft. Der Zeitgeber wird jede Millisekunde akkumuliert bis der Akkumulator >= beim vorbestimmten Wert „Abgelaufen“ ist. In diesem Falle wird das Done Flag erhoben. Setzt den Akkumulator und das Done-Flag zurück
    Bemerkung - -
    Aufzählen Erhöht den Zählerwert jedes mal wenn die Bedingung von falsch zu wahr wechselt
    Runterzählen Reduziert den Zählerwert jedes mal wenn die Bedingung von falsch zu wahr wechselt (Beachte: die Voreinstellung kann einen negativen Wert haben)
    Reset - Startet den Zähler neu bei - 0
    Trace - Zeichnet eine Trace-Information in einem Trace-Puffer auf
  • Anforderungen einiger Ausführungsformen der virtuellen Maschine /Umgebung.
    1. 1) In einigen Ausführungsformen Code + RAM - 6 kB Voreinstellungen für Timer/Zähler/ PLC-Variablen / RemoteIO-Variablen, RAM zum Speichern von Werten aller Variablen.
    2. 2) In einigen Ausführungsformen Programmtext plus Mensch-Maschine-Schnittstelle (HMI)-Text = 256 KB
    3. 3) Wenn eine Division durch Null festgestellt wird, wird das Programm gestoppt und der Division-durch-Null-Fehler wird im Ereignisprotokoll aufgezeichnet.
  • Recovery-Tool:
  • In einigen Ausführungsformen startet das ARGEE™-Programm die Ausführung 10 Sekunden nach dem Einschalten. Dies gibt dem Programmierer die Möglichkeit, den Befehl „Zurück zu den Standardwerten“ über ein eingebettetes Geräteschnittstellentool zu senden. Das Tool wird Standardeinstellungen einstellen.
  • Programmierumgebung:
  • Code-Editor
  • 6A zeigt den linken Teil 601 eines Screenshots einer Ausführungsform eines Codeeditors 600 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • 6B zeigt den rechten Teil 602 eines Screenshots einer Ausführungsform eines Codeeditors 600 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • In einigen Ausführungsformen ermöglicht der Codeeditor 600 das Hinzufügen / Entfernen/Bewegen von Variablen, Bedingungen und/oder Aktionen.
  • Im linken Teil 601 des Codeeditors 600 sind Definitionen von Variablen angegeben. Es gibt drei Haupttypen von Variablen:
    1. 1) Programmvariablen (Bezugsnummer 1 in 6A): Alle Ganzzahlen, Timer/ Zähler, Zustandsvariablen und Retain Ganzzahlen sind hier definiert.
    2. 2) PLC-Variablen (Bezugsnummer 2 in 6A): Diese werden verwendet, um die Kommunikation mit einem übergeordneten PLC zu definieren. Für jede PLC-Variable muss der Programmierer Folgendes definieren:
      1. a. Sektion (aus der Perspektive des übergeordneten PLC) - Eingabe -> Daten, die an die PLC gesendet werden, Ausgabe - Daten, die von den PLC empfangen werden.
      2. b. Byte-Offset, Bit-Offset, Anzahl der Bits: Position in der Sektion
      3. c. mit/ohne Vorzeichen
    3. 3) Zustandsnamen (Bezugsnummer 3 in 6A): eine große Aufzählung, die Zustandsnamen für alle Zustandsmaschinen enthält. Innerhalb Bedingungen/Aktionen ist es möglich, „Ctrl-S“ zu drücken, um die Liste der Zustände zu beginnen, die der Variablen zugewiesen / geprüft werden sollen. Mit Zustandsnamen werden Zustandsvariablen initialisiert.
  • Auf dem rechten Teil 602 des Bildschirms des Codeeditors 600 befindet sich ein Programmeditor:
    1. 1) Ein Klick auf die Schaltfläche „Add condition“ (Bezugsnummer 9 in 6B) ermöglicht das Hinzufügen einer neuen Bedingung am Ende des Programms.
    2. 2) Um die Bedingung zu definieren, muss das Feld (Bezugsnummer 4 von 6B) bearbeitet werden.
    3. 3) Um Aktionen zur Bedingung hinzuzufügen, geben Sie den Bedingungstyp an, indem Sie aus der Aufzählung neben der Schaltfläche „Aktion hinzufügen“ auswählen und auf die Schaltfläche „Aktion hinzufügen“ (Bezugsnummer 8) klicken.
    4. 4) Verschiedene Aktionen erfordern unterschiedliche Parameter. Zum Beispiel erfordert die Aktion „Timer-Start“ das Timer-Argument und die Ablaufzeit in Millisekunden (Bezugsnummer 6 in 6B). Ein Klick auf den Bedingungslink (Bezugsnummer 5 in 6B) öffnet ein Popup-Menü für die Bedingungsverarbeitung. Dies ermöglicht, die Bedingung unter Verwendung von Ausschneiden/Einfügen zu bewegen sowie die Bedingung über oder unter die aktuelle Bedingung zu verschieben.
    5. 5) Durch Klicken auf dem Aktionslink (Bezugsnummer 7 in 6B) öffnet sich ein Popup-Menü zur Aktionsverarbeitung. Dies ermöglicht es, Aktionen durch Ausschneiden und Einfügen zu verschieben.
    6. 6) Tastaturkürzel, die in jedem Bearbeitungsfeld im Programmeditor verwendet werden können:
      1. a. „Ctrl-q“ liefert die Liste der Variablen Programm/PLC/Timer:
      2. b. „Ctrl-I“ liefert die Liste der LocalIO-Variablen

    Hinweis: LocalIO-Datenpunkte werden aus der Gerät-MPl IO-Datenbank extrahiert.
  • Die Datenpunktnamen sollten mit dem Web/IOA übereinstimmen.
    • c. „Ctrl-f” liefert eine Liste von integrierten Funktionen
    • d. „Ctrl-s“ liefert die Liste der Zustandsnamen
  • Das Auswählen eines der Elemente dieser Listen fügt es in das aktive Editierfeld ein. Nachdem das Programm erstellt worden ist, wird durch Drücken von „Ausführen“ der Bytecode erstellt, auf die virtuelle Maschine hochgeladen, die Ausführung gestartet und ein Boot-Projekt erstellt. Wenn in einigen Ausführungsformen nach dem Drücken der Schaltfläche „Ausführen“ Fehler festgestellt werden, werden sie direkt unter der Schaltfläche „Kompilieren“ angezeigt. Nur ein Fehler wird jeweils angezeigt. Wenn mehr als ein Fehler vorliegt, wird durch Beheben des aktuell angezeigten Fehlers und erneutes Kompilieren der nächste Fehler angezeigt.
  • Falls die Kompilierung erfolgreich ist, wird der Status den verbleibenden Platz in jeder Sektion anzeigen. Im Falle einer erfolgreichen Kompilierung würde die IDE Parameter von dem Gerät erneut herunterladen und sie in der Parametersektion des Programms speichern. Dies stellt sicher, dass, wenn zwischenzeitlich ein anderer Browser zum Konfigurieren der Parameter verwendet wird, die Änderungen konsistent sein werden.
  • Code-Debugger
  • Sobald das Programm läuft, kann der Benutzer auf „Test“ klicken, um den Debugger-Bildschirm aufzurufen. Der Debugger-Bildschirm (siehe 701 und 702 in den 7A und 7B) zeigt eine Echtzeitansicht von Programmvariablen, Timer/Zählervariablen, PLC-Variablen, lokalen IO-Stellen sowie eine statische Ansicht des Programms. Die Variablenwerte Werden automatisch aktualisiert. Der Debug-Bildschirm zeigt auch an, welche Bedingungen in Echtzeit „wahr“ sind. Die Bedingungen, die „wahr“ sind, werden mit grüner Hintergrundfarbe angezeigt.
  • Die 7A zeigt einen linken Teil 701 eines Screenshots einer Ausführungsform eines Code-Debuggers 700 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • Die 7B zeigt den rechten Teil 702 eines Screenshots einer Ausführungsform eines Code-Debuggers 700 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • In einigen Ausführungsformen bietet der Debug-Bildschirm (701 und 702 des Code-Debuggers 700) auch die Möglichkeit, Programmvariablen zu modifizieren: Ganzzahl/Retain/Status-Variablen.
  • Durch Drücken von „Modify Variables“ gelangt man zum Editorbildschirm, wo der Benutzer Variablen ändern kann. Durch Drücken von „Finish Modifications“ werden diese Variablen in das Programm übertragen. Nur die aktualisierten Variablen werden übergeben (nicht alle Variablen). Es ist zu beachten, dass, wenn Retain Ganzzahlen auf diese Weise aktualisiert werden, der neue Wert innerhalb von einer Sekunde nach dem Drücken von „Finish Modifications“ in den FLASH-Speicher synchronisiert wird.
  • Mensch-Maschine-Schnittstellen (HMI)
  • Um einfache Visualisierungen bereitzustellen, kann eine webbasierte HMI verwendet werden. In einigen Ausführungsformen kann die ARGEE™ HMI mehrere Bildschirme erstellen, welche jeweils Ausdrücke unter Verwendung von Programmvariablen anzeigen können, und es kann auch die Möglichkeit geschaffen werden, Werte einzugeben, die in die Programmvariablen übertragen werden.
  • In einigen Ausführungsformen gibt es fünf Typen von Elementen einer Mensch-Maschine-Schnittstelle (Human Machine Interface, HMI):
    1. 1) Anzeige einer Nummer oder eines Zustands: zeigt einen Ausdruck an, der Programmvariablen beinhaltet. Der Ausdruck kann ARGEE™-Sprachkonstrukte verwenden. Hier können Statusvariablen angezeigt werden, mit denen vordefinierte Strings angezeigt werden, die einer Ganzzahl zugeordnet sind.
    2. 2) Anzeige einer Nummer mit gültigem Bereich: Gibt an, ob ein Ausdruck innerhalb eines gültigen Bereichs liegt oder nicht. Wenn der Ausdruck innerhalb eines gültigen Bereichs liegt, ist die Hintergrundfarbe des Feldes grün, andernfalls rot. Die Farbe des Bildschirms ändert sich ebenfalls, um die Farbe des Ausdrucks wiederzugeben. Um Verwechslungen zu vermeiden, sollte nur ein Feld „Status mit gültigem Bereich“ in einem Bildschirm verwendet werden.
    3. 3) Eingabe einer Nummer: ein Eingabefeld, das einen Wert angeben kann, für den eine geeignete Programmvariable eingestellt werden soll.
    4. 4) Eingabe des Zustands: Eingabe eines bestimmten ausgewählten Zustands, auf den eine bestimmte Zustandsvariable eingestellt werden sollte. Dies kann verwendet werden, um einen Status des Programms anzugeben oder um eine Zustandsvariable für eine „string-basierte“ Auswahl eines Betriebsmodus (Rezept) zu verwenden, in dem das Programm sich befinden kann.
    5. 5) Button: wird verwendet, um Ausdrücke des Typs „Variable“ vorzuschlagen. Bitte beachten Sie, dass das Element „Button“ an eine Programmvariable angehängt werden sollte.
  • In einigen Ausführungsformen, wenn das HMI die Eingabe eines Werts einer RetainVariablen erlaubt, wird die Retain-Variable innerhalb einer Sekunde nach der Übermittlung mit dem FLASH-Speicher synchronisiert.
  • Umgang mit Retain-Variablen
  • In einigen Ausführungsformen stellen die Embedded-Device-Blockstationen kein einfach zu verwendendes Verfahren zur Handhabung von Retain-Variablen, wie zum Beispiel Flash-Sync-on-Power-Loss oder batteriegepufferte RAM, bereit. Daher führt die virtuelle ARGEE™-Maschine in einigen Ausführungsformen die Synchronisierung von Retain-Variablen mit einem FLASH-Speicher basierend auf dem folgenden Algorithmus durch:
    1. 1) Wenn die HMI (Modify Variables im Testmodus) Variablen sendet, werden sie sofort in den FLASH-Speicher geschrieben.
    2. 2) Wenn die Retain-Variable innerhalb des Programms geändert wird, wird der Flash-Schreibzyklus um bis zu drei Minuten verzögert.
    3. 3) Die Retain-Variablen werden im FLASH-Speicher in vier verschiedenen Sektoren nach dem Journaling Prinzip gespeichert, wodurch ein bekannter Zustand wiederhergestellt werden kann falls die letzte Schreiboperation fehlgeschlagen hat, und bietet die Möglichkeit, die Betriebszeit des FLASH-Speichers zu verlängern. Durch die Verwendung der dreiminütigen Intersync-Verzögerung garantiert es mindestens zwei Betriebsjahre, selbst wenn der Benutzer in jedem Abtastzyklus in eine Retain-Variable schreibt.
  • Trace-Funktionalität
  • In einigen Ausführungsformen bietet die vorliegende Erfindung die Möglichkeit, Trace-Anweisungen in den Code einzufügen, um das wahre Laufzeitverhalten des Programms zu zeigen. Wenn Trace-Anweisungen vorhanden sind, wird ein neues Menüelement „Show Trace“ angezeigt, wenn man sich im ARGEE™-Modus in „Test“ befindet. Die letzten 100 Spuren werden zusammen mit dem Code, auf den sie sich beziehen, in Echtzeit angezeigt. Die letzte Spur wird oben angezeigt. Wenn man auf diesem Bildschirm „Stop trace“ drückt, wird der Snapshot der letzten bis zu 4096 Traces angezeigt. „Resume Trace“ zeigt die letzten 100 Spuren in Echtzeit an. Wenn man „Show Variables“ drückt, schaltet das Programm zurück auf den Variablenanzeigebildschirm.
  • I/O-Variablenformate
  • In einigen Ausführungsformen stellt die ARGEE™-Umgebung eine Liste aller I/O-Datenpunkte bereit, die ein bestimmtes Gerät zeigt. Diese Datenpunkte stellen die Informationen jedoch möglicherweise nicht in dem Format dar, das der Benutzer erwartet. Alle IO-Datenpunkte sind vorzeichenlose ganze Zahlen, sodass, wenn der Datenpunkt einen vorzeichenbehafteten Wert aufweist, muss daher zusätzliche Arbeit geleistet werden, um den negativen Wert zu extrahieren. Um diese Probleme zu vermeiden, wurde in einigen Ausführungsformen eine neue Reihe von IO-Variablenformaten eingeführt:
    • Beliebige Adressierung innerhalb eines Abschnitts:
      • IO.Slot2.Input.X -> Extrahiere ein spezifisches Bit X aus dem Eingabeabschnitt.
      • IO.Slot2.Input.X.Y -> Extrahiere eine vorzeichenlose spezifische Ganzzahl, die „Y“ Datenbits vom Eingangsteil hat, beginnend mit der Bitstelle „X“.
      • IO.Slot2.Input.X.Y.s. -> Extrahiere eine vorzeichenbehaftete Ganzzahl, die „Y“ Datenbits vom Eingangsteil hat, beginnend mit der Bitstelle „X“.
      • IO.Slot2.Input.X_Z.Y -> Extrahiere eine vorzeichenlose spezifische Ganzzahl, die „Y“ Datenbits vom Eingabeabschnitt hat, beginnend mit der Byteposition „X“, Bitposition „Z“.
      • IO.Slot2.Input.X_Z.Y.s -> Extrahiere eine vorzeichenbehaftete Ganzzahl, die „Y“ Datenbits von der Eingangssektion hat, beginnend mit der Byteposition „X“, Bitposition „Z“.
  • Adressierung relativ zu einem bekannten Element des Abschnitts:
    • IO.Slot1.Input.Read_data_1_1.s -> Extrahiert eine vorzeichenbehaftete Ganzzahl aus dem Element „IO.Slot1.Input.Read_data_1_1“
    • IO.Slot1.Input.Read_data_1_1.X -> Extrahiert a spezifisches Bit X aus dem Element „10.Slot1.Input.Read_data_1_1“.
    • IO.Slot1.Input.Read_data_1_1.X.Y -> Extrahiert eine vorzeichenlose Ganzzahl mit „Y“ Datenbits „IO.Slot1.Input.Read_data_1_1“ beginnend mit der Bitposition „X“.
    • IO.Slot1.Input.Read_data_1_1.X.Y.s.s -> Extrahiert eine vorzeichenbehaftete Ganzzahl mit „Y“ Datenbits „IO.Slot1.Input.Read_data_1_1“ beginnend mit der Byte-Position „X“, Bit-Position „Z“.
    • IO.Slot1.Input.Read_data_1_1.X_Z.Y -> Extrahiert eine vorzeichenlose Ganzzahl mit „Y“ Datenbits „IO.Slot1.Input.Read_data_1_1“ beginnend mit der Byte-Position „X“, Bit-Position „Z“.
    • IO.Slot1.Input.Read_data_1_1.X_Z.Y.s. -> Extrahiert eine vorzeichenbehaftete Ganzzahl, die „Y“ -Bits von Daten
    • „IO.Slot1.Input.Read_data_1_1“ hat, beginnend mit der Bitposition „X“.
  • Löschen des ARGEE™-Programms
  • In einigen Ausführungsformen wird durch Erstellen eines „New Project“ und Drücken von „Run“ ein beliebiges ARGEE™-Projekt gestoppt und die Station in den Zustand „ARGEE™ nicht geladen“ versetzt.
  • 2.11 Zurücksetzen eines ARGEE™-Programms (Zurücksetzen aller Variablen auf Standardwerte)
  • In einigen Ausführungsformen startet das Drücken von „Run“ das ARGEE™-Programm neu (mit Ausnahme von Retain-Variablen). Um Retain-Variablen zurückzusetzen, müssen sie einzeln vom Debug- oder HMI-Bildschirm zurückgesetzt werden.
  • Quellcode-Schutz
  • In der ARGEE™-Hauptumgebung unter „Project“ -> „Run Without Source“, kann man das Hochladen des Binärcodes ohne den Quellcode erzwingen. Auf diese Weise hat der Endbenutzer keinen Zugriff auf die Quelle und kann das Programm nicht einfach durch Laden der ARGEE™-Umgebung ändern. Der Integrator kann ein vollständiges Projekt in eine separate Datei exportieren. Wenn kein Quellcode heruntergeladen wird, kann auf die HMI-Funktionalität nicht zugegriffen werden.
  • Passwortschutz der Umgebung
  • Wenn ein Webpasswort eingestellt ist, kann der Benutzer nicht auf die Programmierumgebung zugreifen und kann den neuen Code nicht herunterladen, bis er das korrekte Passwort eingibt. Der Benutzer kann auch keine neuen Werte von Variablen über die HMI übermitteln (obwohl die view-only Hauptansichten der HMI weiterhin zugänglich sind). Dies ist ähnlich der Web-Server-Implementierung, bei der jeder aktuelle Werte von Parametern einsehen kann, sie aber nicht ändern kann, falls das Passwort nicht eingegeben wird.
  • Anwendungsbeispiele für Passwort/Quellcode Einschränkungen
    1. 1) Keine Sicherheit.
      1. a. Jeder kann Änderungen am Code vornehmen und Variablen im HMI senden.
    2. 2) Der Entwickler möchte, dass nur befugte Personen Änderungen am Programm vornehmen/Variablen im HMI eingeben.
      1. a. Passwort setzen, MIT Quellcode laufen
    3. 3) Der Entwickler möchte nicht, dass irgendjemand den Quellcode ändert, niemand kann auf die Umgebung zugreifen.
      1. a. Passwort setzen, OHNE Quellcode laufen
      2. b. Keine HMI-Funktionalität
    4. 4) Der Entwickler möchte eine HMI-Funktionalität bereitstellen und dennoch verhindern, dass jemand den Quellcode ändert.
      1. a. In einigen Ausführungsformen ist dies nicht möglich.
  • Flussdiagramm-Version des Programmeditors
  • Um die Akzeptanz der ARGEE™-Umgebung und das Verwenden von Demos zu erleichtern, ermöglichen einige Ausführungsformen, ein einfaches Flussdiagramm zu erstellen, das Codesprosse ausdrückt. Die Idee dahinter ist es, die Syntax der Sprache mithilfe von Dropdown-Boxen zu verbergen und die manuelle Eingabe fast vollständig zu eliminieren, indem alle I/O-Punkte und Timer/ Zähler/Variablen vordefiniert werden. Der Flussdiagramm-Editor bietet einige Timer und Zähler mit konfigurierbaren Voreinstellungen an. Es unterstützt einige vordefinierte Variablen und benutzerdefinierte konstante Werte, um die Bereiche dieser Variablen oder analogen Eingänge zu überprüfen. Die Programmierumgebung kann für einfache digitale Logiksysteme oder einfache analoge Steuerungen verwendet werden, bei der das System analoge Eingänge mit bestimmten Schwellenwerten vergleicht und dadurch Aktionen auf digitale Eingänge/Ausgänge ausführt. In einigen Ausführungsformen wird die Programmierumgebung auch dazu verwendet, bestimmte Datenaustauschvorgänge mit der übergeordneten PLC abzuwickeln.
  • Die 8 zeigt ein beispielhaftes Ablaufdiagramm 801, das eine einfache Kühlschranktür-Überwachungsanwendung gemäß einigen Ausführungsformen der vorliegenden Erfindung beschreibt.
  • In einigen Ausführungsformen wird der Flussdiagrammcode während der Kompilierung in den entsprechenden ARGEE™-Code übersetzt. Die Projektdatei spezifiziert den Editor, der verwendet wird und zeigt den Code in geeigneter Weise an (abhängig davon, ob ein Flussdiagramm-Editor oder der vollständige ARGEE™ Editor verwendet wird).
  • Falls das Programm im Flussdiagrammeditor entwickelt wird, wird die Flussdiagrammansicht im Debugger-Bildschirm verwendet.
  • Die 9 zeigt eine Ausführungsform eines Flussdiagrammeditors 901 gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • In einigen Ausführungsformen kann der Kunde mit der Flussdiagrammumgebung beginnen und später in die vollständige Sprachumgebung upgraden. In einigen Ausführungsformen ist die Umwandlung unidirektional (nachdem der Kunde zu der vollen Programmiersprache gewechselt hat, ist es unmöglich, in die FlussdiagrammUmgebung zurückzukehren). Wenn die Schaltfläche „Convert to ARGEE™ Program“ gedrückt wird, und der Bestätigungsdialog angezeigt wird.
  • Menüeinträge
  • Tabelle 4 stellt einige Menüeinträge dar, welche in einigen Ausführungsformen verwendet werden.
  • Tabelle 4:
    Ebene Eintrag Beschreibung Standardbil dschirm
    Code Editieren Project Öffnet einen Projektbildschirm
    Edit Code Programm-Editor (startet standardmäßig mit Flowchart wobei ein Druckknopf im Editor zum vollständigen Spracheditor wechseln lässt) Standard
    Test Öffnet das Debuggen
    Run Kompiliert und startet die Programmausführung
    Edit HMI Einstellung der HMI Bildschirme
    View HMI View HMI screens with real-time variable values
    About Version der Umgebung Version des ARGEE™ Kernels Link zu der Umgebung.
    Projekt Import/ Export Ermöglicht das Speichern/Laden von ARGEE™ Projektdateien über das Dateisystem des Computers (der Computer auf dem die Umgebung läuft) Standard
    New Project Löschen des aktuellen Projekts und Starten eines neuen
    Settings Einstellung des Browser-Typs. Dieser ist der erste eingetragene Bildschirm, wenn das ARGEE™ System zum ersten Mal auf einer spezifischen Maschine für einen spezifischen Target gestartet wird.
  • ARGEE™ Dateiformat
  • In einigen Ausführungsformen können ARGEE™-Projektdateien über eine Web-Umgebung hochgeladen/heruntergeladen werden. Die ARGEE™-Datei enthält die folgenden Abschnitte:
    1. 1) ARGEE™ Bytecode, der von der VM ausgeführt wird
    2. 2) ARGEE™-Programmtext und HMI-Bildschirme
    3. 3) I/O-Parameter-Objekte: Anzahl der Module in der Target-Modul-Liste, die Target-Modul-Liste selbst, die Parameterdaten aller Module in der Target-Modul-Liste.
    4. 4) Bibliothekscode, Beschreibungen (für zukünftige Erweiterungen)
  • I/O-Parameter und ARGEE™
  • In einigen Ausführungsformen, da I/O-Parameter Teil des ARGEE™-Dateiformats sind, wird das Boot-Projekt in einigen Ausführungsformen I/O-Parameter laden mit dem, was beim Start im Projekt gespeichert ist.
  • Erweiterung auf GW-Statuswort
  • In einigen Ausführungsformen bedeutet Bit 1 (beginnend mit 0): ARGEE™ Boot Project Loaded.
  • ARGEE™- und PLC IO-Verbindung
  • Das Starten von ARGEE™ wird um zehn Sekunden verzögert, um zu ermöglichen, dass ein Löschbefehl in den TBEN-S-Stationen gesendet wird. Der PLC kann erkennen, ob die ARGEE™-Anwendung läuft oder nicht, indem sie das entsprechende Bit im GW-Statuswort überprüft (siehe oben).
  • ARGEE™ Sicherheit
  • Um es einem Kunden oder einem Hacker zu erschweren oder unmöglich zu machen, das ARGEE™-Programm ohne irgendeinen sichtbaren Hinweis für den Endbenutzer zu laden, werden die folgenden Aktionen ausgeführt:
    1. 1) Falls das ARGEE™-Programm geladen ist:
      1. a. Normale EIP-Verbindungspunktkombinationen 101, 102 oder 103, 104 sind nicht zulässig. Wurde mit diesen Punktkombinationen bereits eine Verbindung hergestellt, wird diese beendet. i. Erlaubtes ARGEE™-Verbindungspunktpaar 101, 110.
      2. b. Reguläre Modbus / TCP-Register sind nicht zugänglich. Jeder Zugriff führt zu einer Ausnahme. Alle Befehle mit Ausnahme von Lesen/Schreiben von Halteregistern führen zu einer Ausnahme. i. Nur ARGEE™ MBTCP-Register können gelesen / geschrieben werden (siehe Abschnitt 2.3 „ARGEE™ Programmiersprache“ für Details).
      3. c. Profinet-Zugriff ist deaktiviert.
    2. 2) Falls das ARGEE™ Programm nicht geladen ist:
      1. a. Reguläre EIP-Verbindungspunktpaare 101, 102 oder 103, 104 sind akzeptabel. i. Die Verbindung zum ARGEE™-Verbindungspunktpaar 101, 110 ist nicht zulässig.
      2. b. Reguläre Modbus / TCP-Register sind zugänglich. Alle Funktionscodes sind zugänglich. Der Zugriff auf ARGEE™-Systemspezifische Register führt zu einer Ausnahme.
      3. c. Profinet ist zugänglich.
  • Ein Verfahren zum Entladen des ARGEE™-Programms findet man in Abschnitt 2.10 Löschen des ARGEE™-Programms.
  • Die Absicht der Sicherheitmaßnahmen besteht darin, sicherzustellen, dass der Kunde weiß, dass ein Gerät ein benutzerdefiniertes Logikprogramm ausführt. Wenn ein Hacker ein benutzerdefiniertes Programm in das Gerät lädt, werden die Standard-PLC-Verbindungen fehlschlagen und der Kunde wird über ein verdächtiges Verhalten bewusst sein. Da das Nicht-ARGEE™-Gerät ohne eine PLC-Verbindung nicht arbeiten kann, wird erwartet, dass der Kunde immer weiß, ob das ARGEE™-Programm geladen ist oder nicht.
  • Unterscheidung zwischen regulärem Gerät und ARGEE™-Gerät
  • Wenn der Kunde ein ARGEE™-Gerät mit dem PLC verwenden möchte, sollten EDS-Dateien (elektronische Datenblätter) nicht verwendet werden und das ARGEE™-Gerät sollte als ein GENERIC ETHERNET-Gerät in Rockwell-Umgebung geladen werden. Zur Unterscheidung zwischen ARGEE™-Verbindungen und Nicht-ARGEE-Verbindungen siehe Abschnitt 2.21.
  • Simulation
  • In einigen Ausführungsformen stellt die ARGEE™-Umgebung eine eingebaute Simulation für eine Anzahl von Geräten bereit. Wenn der Benutzer „sim.html“ zum ersten Mal aus dem Umgebungsverzeichnis startet, erscheint eine Liste von simulierten Geräten und der Benutzer kann auswählen, welches Gerät er simulieren möchte. Dieselbe Liste wird angezeigt, wenn der Benutzer ein neues Projekt durch Drücken von „New Project“ startet.
  • In einigen Ausführungsformen funktioniert die Simulation nur im ARGEE™-Modus (nicht im Flussdiagrammmodus) und die Simulation versucht, sich so nah wie möglich an dem realen Gerät zu verhalten. Man kann Programme erstellen, Programme debuggen, Projekte mit Simulation importieren/exportieren. Simulierte Projekte können in das eigentliche Gerät importiert werden.
  • In einigen Ausführungsformen, um Eingaben/Diagnosen zu simulieren, klickt der Benutzer auf „Modify Variables“ in dem „Test“-Modus und alle Eingabe/ Diagnose-I/O-Datenpunkte können editiert werden, um eine korrekte Simulation bereitzustellen.
  • Es ist zu beachten, dass in einigen Ausführungsformen Parameterdaten in dem simulierten Projekt leer sind. Die realen Geräteparameter müssen beim Importieren eines simulierten Projekts eingestellt werden, und das reale Projekt muss erneut kompiliert/wieder exportiert werden, um korrekte Parameterwerte in das Programm zu speichern.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung eine webbasierte Programmierumgebung bereit, die außerhalb des eingebetteten Geräts gehostet wird, das sie steuert. Sie befindet sich auf einem „Hostserver“. Die Umgebung wird zum Entwickeln/Laden/Debuggen eines Benutzerprogramms in ein eingebettetes Gerät verwendet. Sobald auf die Umgebung einmal über den Hostserver zugegriffen wird, ist die Verbindung zum „Hostserver“ für den Betrieb der Umgebung nicht mehr erforderlich.
  • In einigen Ausführungsformen umfasst das ARGEE™-System eine einfache Programmiersprache, die auf Ethernet-Block-Ein-/Ausgabe-Geräten (Block-IO) läuft. In einigen Ausführungsformen umfasst das ARGEE™-System zwei Teile: (1) eine webbasierte Programmierumgebung (z. B. 322 in den 3A und 3B), die das GUI-Programm zu einem Bytecodeprogramm der virtuellen Maschine kompiliert; und (2) eine virtuelle Maschine (z. B. VM 340 in den 3A und 3B), die innerhalb der Geräte-Firmware läuft und das Bytecodeprogramm ausführt, das ein Programm darstellt, das der Benutzer erstellt hat. Es gibt eine große Anzahl von Programmiersprachen, die eine webbasierte Programmierumgebung bereitstellen. Einige dieser Sprachen betreffen eingebettete Geräte. Das ARGEE™-System (z. B. das System 301/302 der 3A und 3B), insgesamt betrachtet, ist insofern einzigartig, als die Programmierumgebung nicht auf demselben eingebetteten Gerät gehostet wird, das es steuern soll. Das ARGEE™-System reduziert die Flash-Anforderungen des Geräts, indem es die Umgebung auf einem externen Hostserver hostet. Das ARGEE™-System ermöglicht auch einen schnelleren Aktualisierungszyklus der Umgebungssoftware, wodurch es einfacher wird, Änderungen an Kunden zu verteilen, wenn sich die Umgebung ändert.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in ein eingebettetes Gerät bereit. Dieses Gerät enthält: einen Hostserver; ein Softwareprogramm, das sich auf dem Hostserver befindet und dort ausgeführt wird, das sich außerhalb des eingebetteten Geräts befindet, das von der Programmierumgebung gesteuert wird; und ein Softwareprogramm, das sich auf dem eingebetteten Gerät befindet und dort ausgeführt wird, wobei nach dem ersten Zugriff auf die Programmierumgebung durch den Hostserver die Verbindung (z. B. 321 in 3A) mit dem Hostserver nicht mehr für den Betrieb der Programmierumgebung benötigt wird.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein nichtflüchtiges computerlesbares Medium bereit, auf dem Anweisungen gespeichert sind, die ein geeignet programmiertes Computersystem veranlassen, ein Verfahren durchzuführen, wobei das Verfahren umfasst: Laden eines Programmierumgebungssoftwareprogramms von einem Hostserver in einen Clientcomputer; Hervorrufen und Empfangen von Informationen einer graphischen Benutzerschnittstelle (GUI) von einem menschlichen Benutzer, die ein erstes GUI-Softwareprogramm spezifizieren, um eine programmierbare Logiksteuerung (PLC) zu steuern; Kompilieren des ersten GUI-Softwareprogramms in ein Bytecodeprogramm unter Verwendung eines Clientcomputers, der sich außerhalb der PLC befindet; Laden des Bytecodeprogramms von dem Clientcomputer in die PLC; Trennen des Hostservers vom Clientcomputer; und Darstellen einer Programmierumgebung für den menschlichen Benutzer von dem Clientcomputer, während der Clientcomputer von dem Hostserver getrennt ist.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein computerimplementiertes Verfahren zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in ein eingebettetes Gerät bereit. Dieses Verfahren beinhaltet das Laden eines Web-Server-Programms in Firmware innerhalb eines Mikroprozessors, der in einer eingebetteten Umgebung verwendet wird; Verbinden des Mikroprozessors mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Hervorrufen und Empfangen von Informationen einer graphischen Benutzerschnittstelle (GUI) von einem menschlichen Benutzer durch den Clientcomputer, wobei diese ein erstes GUI-Softwareprogramm spezifizieren, das zum Steuern des Mikroprozessors zu verwenden ist; Kompilieren des ersten GUI-Softwareprogramms in einem Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb des Mikroprozessors befindet, in dem Clientcomputer; Laden des Bytecodeprogramms von dem Clientcomputer in den Mikroprozessor; und Präsentieren an den menschlichen Benutzer einer Programmierumgebung, die Simulationsmerkmale enthält, von dem Mikroprozessor über das Web-Browser-Programm.
  • Einige Ausführungsformen beinhalten ferner das Laden eines Simulatorprogramms in den Clientcomputer, wobei der Simulator zum Ausführen von Bytecodeprogrammen, zum Setzen von Variablen im Mikroprozessor gemäß den von einem menschlichen Benutzer in den Clientcomputer ausgelösten und empfangenen Daten und zum Lesen von Daten von den Variablen konfiguriert ist, als ob die Variablen im Mikroprozessor wären, und zum Senden der gelesenen Daten an den menschlichen Benutzer.
  • Einige Ausführungsformen umfassen ferner das Bereitstellen eines Hostservers, der mit dem Internet verbunden ist; Herunterladen eines ersten Satzes von Software auf den Clientcomputer von dem Host-Server, wobei der erste Satz von Software umfasst: einen Kompilierer, der geeignet ist, auf dem Clientcomputer Bytecodeprogramme zu erzeugen, die in dem Mikroprozessor ausgeführt werden (oder alternativ in dem Simulator-Programm das auf dem Clientcomputer ausgeführt wird).
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in einem industriellen Automatisierungscontroller bereit. Dieses Gerät enthält einen Hostserver, der eine herunterladbare Software hostet, die nach dem Herunterladen und Ausführen die webbasierte Programmierumgebung in einem Clientcomputer erzeugt; ein Client-PC (Personalcomputer) mit einem Webbrowser, der die webbasierte Programmierumgebung vom Hostserver herunterlädt und ausführt, wobei, sobald die webbasierte Programmierumgebung einmal von dem Hostserver geladen worden ist, die Verbindung mit dem Hostserver für die Operation der webbasierten Programmierumgebung nicht mehr erforderlich ist; eine Programm-Kompilierer-Einheit, die in der webbasierten Programmierumgebung läuft, die ein benutzerspezifiziertes industrielles Automatisierungs-Controller-Quellprogramm kompiliert und ein kompiliertes Bytecodeprogramm aus dem benutzerspezifizierten Quellprogramm ausgibt; ein Programmlader in der webbasierten Programmierumgebung, der das Bytecodeprogramm von dem Clientcomputer in den industriellen Automatisierungscontroller lädt; und ein Softwareprogramm, das sich auf der industriellen Automatisierungssteuereinheit befindet und dort ausgeführt wird, wobei, sobald die Programmierumgebungssoftware in den Clientcomputer geladen ist, die Verbindung zu dem Hostserver und dem Clientcomputer getrennt wird, da der Hostserver nicht mehr für den Betrieb des Servers benötigt wird Controller für die industrielle Automatisierung. Einige Ausführungsformen umfassen ferner eine grafische Benutzerschnittstellen-(GUI) -Einheit in dem Clientcomputer, die von einem menschlichen Benutzer Informationen auslöst und empfängt, die ein GUI-anzeigbares Quellenprogramm für industrielle Automatisierungssteuerungen erzeugen. Einige Ausführungsformen umfassen ferner eine Anzeigeeinheit auf dem Clientcomputer, die das GUI-anzeigbare Quellensteuerprogramm für industrielle Automatisierungssteuereinheiten in einer „Leiterlogik“ -Form mit zwei vertikalen Schienen und einer Reihe von horizontalen Sprossen zwischen ihnen anzeigt, wobei die horizontalen Sprossen in einer Bedingung „Aktionen“ formatieren, wobei jede Sprosse von einem Zustand auf einer der beiden vertikalen Schienen mit einer entsprechenden Aktion auf der anderen vertikalen Schiene verbunden ist. Einige Ausführungsformen umfassen ferner eine Simulatoreinheit in dem Clientcomputer, die von einem menschlichen Benutzer Spezifikationsinformationen auslöst und empfängt, die Daten spezifizieren, die von der industriellen Automatisierungssteuerung erfasst werden könnten, die das kompilierte Bytecodeprogramm unter Verwendung der Spezifikationsinformationen ausführt, um Simulationsdaten zu erhalten. Ergebnisdaten, die die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt. Einige Ausführungsformen umfassen ferner eine Simulatoreinheit in dem Clientcomputer, die von einem menschlichen Benutzer Spezifikationsinformationen auslöst und empfängt, die Daten spezifizieren, die von der industriellen Automatisierungssteuerung erfasst werden könnten, die das kompilierte Bytecodeprogramm unter Verwendung der Spezifikationsinformationen ausführt, um Simulationsdaten zu erhalten. Ergebnisdaten, die die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt. Einige Ausführungsformen umfassen ferner eine Anzeigeeinheit auf dem Clientcomputer, die das anwenderspezifische Quellenprogramm der industriellen Automatisierungssteuerung in einer „Leiterlogik“ -Form mit zwei vertikalen Schienen und einer Reihe von horizontalen Sprossen zwischen ihnen anzeigt, wobei die horizontalen Sprossen in einer Bedingung „Aktionen“ formatieren. In einigen Ausführungsformen ist das Softwareprogramm, das sich in der industriellen Automatisierungssteuerung befindet und dort ausgeführt wird, während der Herstellung eingebaut. In einigen Ausführungsformen wird das Softwareprogramm, das sich auf der industriellen Automatisierungssteuerung befindet und dort ausgeführt wird, von dem Clientcomputer in die industrielle Automatisierungssteuerung heruntergeladen.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein nicht flüchtiges computerlesbares Medium bereit, auf dem Anweisungen gespeichert sind, die ein geeignet programmiertes Computersystem veranlassen, ein Verfahren durchzuführen. Dieses Verfahren umfasst das Hervorrufen und Empfangen von Informationen einer graphischen Benutzerschnittstelle (GUI) von einem menschlichen Benutzer, die ein erstes GUI-Softwareprogramm spezifizieren, um einen industriellen Automatisierungscontroller (IAC) zu steuern; Kompilieren des ersten GUI-Softwareprogramms in ein Bytecodeprogramm unter Verwendung eines Clientcomputers, der sich außerhalb der IAC befindet; Laden des Bytecodeprogramms von dem Clientcomputer in die IAC; und Präsentieren einer Programmierumgebung für den menschlichen Benutzer von dem Clientcomputer, wobei die Programmierumgebung, die in dem Clientcomputer läuft, einen Simulator enthält, der die IAC simuliert, die das Bytecodeprogramm ausführt. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um das Verfahren ferner dazu zu veranlassen, Informationen über eine graphische Benutzerschnittstelle (GUI) in dem Clientcomputer von einem menschlichen Benutzer hervorzurufen und zu empfangen, um ein GUI-anzeigbares Quellprogramm für industrielle Automatisierungssteuerungen zu spezifizieren. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu veranlassen, dass das Verfahren ferner das Anzeigen des von der GUI aus anzeigbaren industriellen Automatisierungssteuerungsquellenprogramms in einer textbasierten Form mit einer Spalte von Bedingungen und an dem Clientcomputer umfasst mindestens eine entsprechende Aktion für jede Bedingung. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das Anzeigen vom Clientcomputer des benutzerspezifizierten industriellen Automationscontrollerquellenprogramm in einer „Leiterlogik“-Form, mit zwei vertikalen Holmen und dazwischenliegende horizontale Sprossen veranlasst, wobei die horizontalen Sprossen in einem „Bedingung->Aktionen“ Format vorliegen.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein computerimplementiertes Verfahren zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in einem eingebetteten industriellen Automatisierungscontroller (IAC) -Gerät bereit, wobei das Verfahren das Vorhandensein von Firmware im IAC umfasst, wobei die Firmware ein Web-Server-Programm und Software zum Ausführen eines Benutzer-Bytecodeprogramms enthält; Laden eines Web-Server-Programms in Firmware innerhalb eines Mikroprozessors, der in einer eingebetteten industriellen Automatisierungsumgebung verwendet wird; Verbinden des Mikroprozessors IAC mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Hervorrufen und Empfangen von Informationen über eine graphische Benutzerschnittstelle (GUI), durch den Clientcomputer von einem menschlichen Benutzer, wobei diese ein erstes GUI-Softwareprogramm spezifizieren, das verwendet werden soll, um den Mikroprozessor zu steuern; Kompilieren des ersten GUI-Softwareprogramms in einem Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb des Mikroprozessors befindet, in dem Clientcomputer; Laden des Bytecodeprogramms von dem Clientcomputer in den IAC; und Ausführen des Bytecodeprogramms in dem IAC Mikroprozessor. Einige Ausführungsformen umfassen ferner das Präsentieren von dem Clientcomputer an den menschlichen Benutzer einer Programmierumgebung, die Simulationsmerkmale enthält. Einige Ausführungsformen umfassen ferner das Simulieren in dem Clientcomputer und das Interagieren mit dem menschlichen Benutzer als Teil der Programmierumgebung, die durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator zum Ausführen von Bytecodeprogrammen konfiguriert ist, um Variablen gemäß von der GUI empfangenen Daten einzustellen und um Daten von den Variablen zu lesen und die gelesenen Daten an die GUI zu senden. Einige Ausführungsformen umfassen ferner das Verbinden des Clientcomputer mit einem Hostserver, der über das Internet verbunden ist; Herunterladen eines ersten Satzes von Software auf den Clientcomputer von dem Host-Server, wobei der erste Satz von Software umfasst: einen Kompilierer, der geeignet ist, auf dem Clientcomputer das Kompilieren auszuführen, um einen Bytecodeprogramme zu erzeugen, der in dem Mikroprozessor das Simulatorprogramm und das Web-Server-Programm ausführt. Einige Ausführungsformen umfassen ferner das Anzeigen des GUI-anzeigbaren industriellen Automatisierungssteuerungsquellenprogramms von dem Clientcomputer in einer „Leiterlogik“ -Form mit zwei vertikalen Holmen und einer Reihe von horizontalen Sprossen zwischen ihnen, wobei die horizontalen Sprossen in einem „Bedingung-> Aktionen“ Format sind. In einigen Ausführungsformen umfasst das Hervorrufen und Empfangen über die grafische Benutzerschnittstelle (GUI) von Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, das Anzeigen von dem Clientcomputer eines textbasierten Formulars mit einer Mehrzahl von Bedingungen und einer entsprechenden Vielzahl von Aktionen; und Empfangen von dem menschlichen Benutzer als Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, die mit dieser Aktion verbunden ist. In einigen Ausführungsformen umfasst das Auslösen und Empfangen über die grafische Benutzerschnittstelle der (GUI) Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, das Anzeigen von dem Clientcomputer einer „Leiterlogik“ -Form mit mindestens einem vertikalen Holm und eine Reihe von horizontalen Sprossen, wobei die horizontalen Sprossen in einem „Bedingung->Aktionen“-Format sind; und Empfangen von dem menschlichen Benutzer als Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, die mit dieser Aktion verbunden ist.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in ein eingebettetes Gerät bereit, wobei das Gerät Folgendes umfasst: Mittel zum Laden eines Webserver-Programms in Firmware in einem verwendeten Mikroprozessor in einer industriellen Automatisierungsumgebung; Mittel zum Verbinden des Mikroprozessors mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Mittel zum Auslösen und Empfangen von Informationen von einem menschlichen Benutzer über eine graphische Benutzerschnittstelle (GUI) durch den Clientcomputer, Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, das zur Steuerung des Mikroprozessors zu verwenden ist; Mittel zum Kompilieren des ersten GUI-Softwareprogramms in dem Clientcomputer in ein Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb des Mikroprozessors befindet; Mittel zum Laden des Bytecodeprogramms von dem Clientcomputer in den Mikroprozessor; und Mittel zum Ausführen des Bytecodeprogramms in dem Mikroprozessor. Einige Ausführungsformen enthalten ferner Mittel zum Simulieren in dem Clientcomputer und zum Interagieren mit dem menschlichen Benutzer als Teil der Programmierumgebung, die durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator zum Ausführen von Bytecodeprogrammen zum Einstellen von Variablen gemäß den von dem GUI Server empfangenen Daten konfiguriert ist, und um Daten von den Variablen zu lesen und die gelesenen Daten an die GUI zu senden. Einige Ausführungsformen umfassen ferner Mittel zum Verbinden vom Clientcomputer über das Internet mit einem Hostserver; und Mittel zum Herunterladen eines ersten Satzes von Software auf den Clientcomputer von dem Host-Server, wobei der erste Satz von Software umfasst: einen Kompilierer, der auf dem Clientcomputer ausgeführt werden kann, um das Kompilieren durchzuführen, um ein Bytecodeprogramm zu erzeugen, das in dem Mikroprozessor ausgeführt wird, das Simulatorprogramm und das Web-Server-Programm. Einige Ausführungsformen umfassen ferner Mittel zum Anzeigen des GUI-anzeigbaren industriellen Automatisierungssteuerungsquellenprogramms von dem Clientcomputer in einer „Leiterlogik“ -Form mit zwei vertikalen Schienen und einer Reihe von horizontalen Sprossen zwischen ihnen, wobei die horizontalen Sprossen in einem „Bedingung ->Aktionen“ Format vorliegen. In einigen Ausführungsformen umfassen die Mittel zum Hervorrufen und Empfangen über die graphische Benutzerschnittstelle (GUI), von Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, Mittel zum Anzeigen von dem Clientcomputer einer textbasierten Form einer Vielzahl von Bedingungen und Aktionsformaten; und Mittel zum Empfangen von dem menschlichen Benutzer als Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, die mit dieser Aktion verbunden ist.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in einem industriellen Automatisierungscontroller bereit, wobei das Gerät umfasst: einen Hostserver, der herunterladbare Software hostet, die bei Ausführung die webbasierte Programmierumgebung erstellt; einen Clientcomputer mit einem Web-Browser, der die webbasierte Programmierumgebung von dem Hostserver herunterlädt und ausführt, wobei, sobald die webbasierte Programmierumgebung ein erstes Mal von dem Hostserver geladen worden ist, die Verbindung zu dem Hostserver für den Betrieb der webbasierten Programmierumgebung nicht mehr erforderlich ist; eine Programm-Compiler-Einheit in der webbasierten Programmierumgebung, die ein benutzerspezifiziertes industrielles Automatisierungscontroller-Quellprogramm kompiliert und ein kompiliertes Benutzer-Bytecodeprogramm aus dem benutzerspezifizierten Quellprogramm ausgibt; ein Programmlader, der das Benutzer-Bytecodeprogramm von dem Clientcomputer in den industriellen Automatisierungscontroller lädt; und ein eingebautes Softwareprogramm, das sich in der industriellen Automatisierungssteuerung befindet und dort ausgeführt wird, wobei, sobald die Programmierumgebungssoftware in den Clientcomputer geladen ist, die Verbindung zu dem Hostserver und Clientcomputer getrennt wird, da der Hostserver nicht mehr für den Betrieb der industriellen Automatisierungssteuerung benötigt wird. Einige Ausführungsformen umfassen ferner eine grafische Benutzerschnittstellen-(GUI) -Einheit in dem Clientcomputer, die von einem menschlichen Benutzer Informationen auslöst und empfängt, die ein GUI-anzeigbares Quellenprogramm für industrielle Automatisierungssteuerungen erzeugen. Einige Ausführungsformen enthalten ferner eine Anzeigeeinheit auf dem Clientcomputer, die das GUI-anzeigbare Quellensteuerprogramm für industrielle Automatisierungssteuerungen in einer textbasierten „Leiterlogik“ - Form mit einer Spalte von Bedingungen und mindestens einer entsprechenden Aktion für jede Bedingung anzeigt. Einige Ausführungsformen umfassen ferner eine Simulatoreinheit in dem Clientcomputer, die von einem menschlichen Benutzer Spezifikationsinformationen auslöst und empfängt, die Daten spezifizieren, die von der industriellen Automatisierungssteuerung erfasst werden könnten, die das kompilierte Bytecodeprogramm unter Verwendung der Spezifikationsinformationen ausführt, um Simulationsdaten zu erhalten, die die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt. Einige Ausführungsformen umfassen ferner eine Simulatoreinheit in dem Clientcomputer, die von einem menschlichen Benutzer Spezifikationsinformationen hervorruft und empfängt, die Daten spezifizieren, die von der industriellen Automatisierungssteuerung erfasst werden können, die das kompilierte Bytecodeprogramm unter Verwendung der Spezifikationsinformationen ausführt, um Simulationsdaten zu erhalten, die die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt. Einige Ausführungsformen enthalten ferner eine Anzeigeeinheit auf dem Clientcomputer, die das benutzerspezifizierte Quellprogramm der industriellen Automatisierungssteuerung in einer textbasierten Form mit einer Spalte von Bedingungen und mindestens einer entsprechenden Aktion für jede Bedingung anzeigt. Einige andere Ausführungsformen umfassen ferner eine Anzeigeeinheit auf dem Clientcomputer, die das anwenderspezifische Quellenprogramm der industriellen Automatisierungssteuerung in einer „Leiterlogik“ -Form mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen anzeigt, wobei die horizontalen Sprossen in einem Format „Bedingung -> Aktionen“ vorliegen.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein nichtflüchtiges computerlesbares Medium bereit, auf dem Anweisungen gespeichert sind, die ein geeignet programmiertes Computersystem veranlassen, ein Verfahren durchzuführen, wobei das Verfahren umfasst: Hervorrufen und Empfangen von Informationen einer grafischen Benutzerschnittstelle (GUI) von einem menschlichen Benutzer, die ein erstes GUI-Softwareprogramm spezifizieren, um ein erstes einer Vielzahl von industriellen Automationscontrollern (IAC) zu steuern, und GUI-Informationen, die ein zweites GUI-Softwareprogramm spezifizieren, um einen zweiten der Mehrzahl von IACs zu steuern; Kompilieren des ersten GUI-Softwareprogramms in ein erstes Bytecodeprogramm unter Verwendung eines Clientcomputers, der sich außerhalb des ersten IAC befindet; Laden des Bytecodeprogramms von dem Clientcomputer in den ersten IAC; Kompilieren des zweiten GUI-Softwareprogramms in ein zweites Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb des zweiten IAC befindet; Laden des zweiten Bytecodeprogramms von dem Clientcomputer in den zweiten IAC; und Präsentieren einer Programmierumgebung für den menschlichen Benutzer von dem Clientcomputer, wobei die Programmierumgebung, die in dem Clientcomputer läuft, einen Simulator enthält, der den ersten IAC simuliert, der das erste Bytecodeprogramm ausführt. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das Steuern der Vielzahl von IACs über Browser-Software und das Handhaben von IAC-Kommunikationen über individuelle Internetprotokoll (IP) -Adressen jedes der mehreren IACs umfasst. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das Verwenden einer webbasierten Implementierung in dem Clientcomputer zum Programmieren der Vielzahl von IACs umfasst, wobei die Programmierumgebung eine zwischengespeicherte Version einer Webseite in einem Clientcomputer aufweist. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das gleichzeitige Programmieren der mehreren IACs von dem einzelnen Clientcomputer umfasst. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um das Verfahren ferner dazu zu veranlassen, über eine graphische Benutzerschnittstelle (GUI) in dem Clientcomputer Informationen von einem menschlichen Benutzer auszulösen und zu empfangen, um eine GUI zu spezifizieren. Einige Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das Anzeigen des GUI-anzeigbaren Quellensteuerprogramms von dem Clientcomputer umfasst für die industrielle Automatisierungssteuerung in einer textbasierten Form mit einer Spalte von Bedingungen und mindestens eine entsprechende Aktion für jede Bedingung. Einige andere Ausführungsformen des nichtflüchtigen computerlesbaren Mediums umfassen ferner Anweisungen, um zu bewirken, dass das Verfahren ferner das Anzeigen von dem Clientcomputer des vom Benutzer spezifizierten industriellen Automatisierungssteuerungsquellenprogramms in einer „Leiterlogik“ -Form mit zwei vertikalen Holmen und eine Reihe von horizontalen Sprossen zwischen ihnen und wobei die horizontalen Sprossen im Format „Bedingung->Aktionen“ vorliegen.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein computerimplementiertes Verfahren zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in eine eingebettete Vorrichtung bereit, wobei das Verfahren umfasst: ein Web-Server-Programm in Firmware innerhalb eines Mikroprozessors in einer industriellen Automatisierungsumgebung; Verbinden des Mikroprozessors mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Hervorrufen und Empfangen durch den Clientcomputer von einem menschlichen Benutzer von Informationen über eine graphische Benutzerschnittstelle (GUI), Informationen, die ein erstes GUI-Softwareprogramm und ein zweites GUI-Softwareprogramm spezifizieren, die verwendet werden, um den ersten und den zweiten Mikroprozessor jeweils zu steuern; Kompilieren des ersten GUI-Softwareprogramms in einem ersten Bytecodeprogramm unter Verwendung des Clientcomputers in dem Clientcomputer; Kompilieren des ersten GUI-Softwareprogramms in einem ersten Bytecodeprogramm unter Verwendung des Clientcomputers in dem Clientcomputer; Laden des ersten Bytecodeprogramms von dem Clientcomputer in den ersten Mikroprozessor; Laden des zweiten Bytecodeprogramms in den zweiten Mikroprozessor von dem Clientcomputer; Ausführen des ersten Bytecodeprogramms in dem ersten Mikroprozessor; und Ausführen des ersten Bytecodeprogramms in dem ersten Mikroprozessor. Einige solcher Ausführungsformen umfassen ferner das Laden von Web-Browser-Software von einem Hostserver in den Clientcomputer, wobei die Web-Browser-Software die Beschränkungen in dem Verfahren steuert. Einige Ausführungsformen umfassen ferner das Simulieren in dem Clientcomputer und das Interagieren mit dem menschlichen Benutzer als Teil der Programmierumgebung, die durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator zum Ausführen von Bytecodeprogrammen konfiguriert ist, um Variablen gemäß von der GUI empfangenen Daten einzustellen. und um Daten von den Variablen zu lesen und die gelesenen Daten an die GUI zu senden. Einige Ausführungsformen umfassen ferner das Verbinden von dem Clientcomputer mit einem Hostserver über das Internet; Herunterladen eines ersten Satzes von Software auf den Clientcomputer von dem Host-Server, wobei der erste Satz von Software umfasst: einen Kompilierer, der auf dem Clientcomputer ausgeführt werden kann, um das Kompilieren durchzuführen, um ein Bytecodeprogramm zu erzeugen, das in dem Mikroprozessor läuft, das Simulatorprogramm, und das Webserver-programm. Einige Ausführungsformen umfassen ferner das Anzeigen des GUI-anzeigbaren industriellen Automatisierungssteuerungsquellenprogramms von dem Clientcomputer in einer „Leiterlogik“ -Form mit zwei vertikalen Holmen und einer Reihe von horizontalen Sprossen zwischen ihnen, wobei die horizontalen Sprossen in einem „Bedingung-Aktionen“ Format vorliegen. In einigen Ausführungsformen umfasst das Hervorrufen und Empfangen über die grafische Benutzerschnittstelle (GUI) Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, das Anzeigen von dem Clientcomputer einer „Leiterlogik“ -Form mit zwei vertikalen Holmen und einer Reihe von horizontalen Sprossen zwischen ihnen, wobei die horizontalen Sprossen in einem „Bedingung->Aktionen“-Format sind; und Empfangen von dem menschlichen Benutzer als Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, die mit dieser Aktion verbunden ist.
  • In einigen Ausführungsformen stellt die vorliegende Erfindung ein Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden und Debuggen eines Benutzerprogramms in eine eingebettete Vorrichtung bereit, wobei die Vorrichtung Folgendes umfasst: Mittel zum Laden eines Webserver-Programms in Firmware in einem verwendeten Mikroprozessor in einer industriellen Automatisierungsumgebung; Mittel zum Verbinden des Mikroprozessors mit einem Clientcomputer, auf dem ein Web-Browser-Programm ausgeführt wird; Mittel zum Hervorrufen und Empfangen von Informationen von einem menschlichen Benutzer über eine graphische Benutzerschnittstelle (GUI) durch den Clientcomputer, Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, das zur Steuerung des Mikroprozessors zu verwenden ist; Mittel zum Kompilieren des ersten GUI-Softwareprogramms in dem Clientcomputer in ein Bytecodeprogramm unter Verwendung des Clientcomputers, der sich außerhalb des Mikroprozessors befindet; Mittel zum Laden des Bytecodeprogramms von dem Clientcomputer in den Mikroprozessor; und Mittel zum Ausführen des Bytecodeprogramms in dem Mikroprozessor. Einige Ausführungsformen enthalten ferner Mittel zum Simulieren in dem Clientcomputer und zum Interagieren mit dem menschlichen Benutzer als Teil der Programmierumgebung, die durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator zum Ausführen von Bytecodeprogrammen zum Einstellen von Variablen gemäß den von der GUI empfangenen Daten konfiguriert ist, und um Daten von den Variablen zu lesen und die gelesenen Daten an die GUI zu senden. Einige Ausführungsformen umfassen ferner Mittel zum Verbinden von dem Clientcomputer mit einem Hostserver über das Internet; Mittel zum Herunterladen eines ersten Satzes von Software auf den Clientcomputer von dem Host-Server, wobei der erste Satz von Software enthält: einen Kompilierer, der auf dem Clientcomputer ausgeführt werden kann, um das Kompilieren durchzuführen, um ein Bytecodeprogramm zu erzeugen, das in dem Mikroprozessor ausgeführt wird; das Simulatorprogramm und das Web-Server-Programm. Einige Ausführungsformen umfassen ferner Mittel zum Anzeigen des GUI-anzeigbaren Quellensteuerprogramms für industrielle Automatisierungscontroller von dem Clientcomputer in einer textbasierten Form mit einer Spalte von Bedingungen und mindestens einer entsprechenden Aktion für jede Bedingung. In einigen Ausführungsformen umfasst das Mittel zum Hervorrufen und Empfangen über die grafische Benutzerschnittstelle von (GUI) Informationen, die ein erstes GUI-Softwareprogramm spezifizieren, Mittel zum Anzeigen eines textbasierten Formulars mit einer Spalte aus dem Clientcomputer mit Bedingungen und mindestens eine entsprechende Aktion für jede Bedingung; und Mittel zum Empfangen von dem menschlichen Benutzer als Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, die mit dieser Aktion verbunden ist.
  • In einigen Ausführungsformen umfassen die technischen Probleme, die durch die vorliegende Erfindung gelöst werden, das Programmieren, das Laden von Programmcode und das Debuggen eines industriellen Automatisierungscontrollers (der unter Verwendung eines programmierbaren Logikcontrollers oder einer anderen geeigneten Architektur implementiert werden kann), während eine Verkleinerung des Geräts-Flash-Speichers oder eines anderen nichtflüchtigen Speichertyps (der Speicher, der die Steuerprogrammsoftware enthält) des industriellen Automatisierungscontrollers ermöglicht wird. Die technische Lösung ermöglicht es einem menschlichen Benutzer, Programme auf einem webbasierten Clientcomputer zu entwickeln, der mit einer Vielzahl von eingebetteten oder industriellen Automatisierungscontrollern („IACs“) verbunden ist, und zwar jeweils an einem Ort, der relativ weit vom menschlichen Benutzer entfernt ist, und wobei jeder der Mehrzahl von Controllern einen anderen Typ oder eine andere Version von Code-Programmen benötigt, wobei dann die verschiedenen Programme zu den verschiedenen Controllern heruntergeladen und der Code simuliert/debuggt in der Mehrzahl von Controllern unter der Kontrolle und Beobachtung des menschlichen Benutzers am webbasierten Computer erfolgt. Zusätzlich enthalten einige Ausführungsformen einen zentralen Server, der die Software-Programmierumgebung (SWPE) in den Clientcomputer herunterlädt. Die SWPE ist webbrowserbasiert, so dass sie unabhängig vom Betriebssystem ist und keine Installation von Software erfordert; stattdessen wird der SWPE im Browser ausgeführt, unabhängig davon, welcher Computertyp für den Clientcomputer verwendet wird. Da der größte Teil der Funktionalität in dem Clientcomputer implementiert ist, kann in einigen Ausführungsformen die Größe des Flashspeichers oder einer anderen Art von nichtflüchtigem Speicher in den IACs minimiert werden. In einigen Ausführungsformen beträgt die Größe des FLASH-Speichers, des elektrisch löschbaren programmierbaren Read-only Speichers (EEPROM) oder eines anderen nichtflüchtigen Speichers 1 Kilobyte (kB) oder weniger, in anderen Ausführungsformen 8 kB oder weniger, in weiteren Ausführungsformen 16 kB. In weiteren Ausführungsformen beträgt die Größe des FLASH-Speichers, des elektrisch löschbaren programmierbaren Speichers (EROM) oder eines anderen nichtflüchtigen Speichers 64 kB oder weniger, in zusätzlichen Ausführungsformen 128 kB oder weniger, in noch weiteren Ausführungsformen 256 kB oder weniger und in noch weiteren Ausführungsformen, 512 kB oder weniger, und in noch weiteren Ausführungsformen ein Megabyte (MB) oder weniger.
  • Es ist zu beachten, dass die vorliegende Beschreibung nur beispielhaft und nicht einschränkend ist. Obwohl mehrere Merkmale und Vorteile der verschiedenen hier beschriebenen Ausführungsformen in der vorstehenden Beschreibung aufgeführt worden sind, werden viele weitere Details der Struktur und Funktion der verschiedenen Ausführungsformen dem Fachmann beim Lesen der vorstehenden Beschreibung als naheliegend erscheinen. Der Umfang der Erfindung muss daher nur in Bezug auf die anliegenden Ansprüche bestimmt werden, zusammen mit dem gesamten Umfang der Äquivalenten denen diese Ansprüche entsprechen. In den anliegenden Ansprüchen werden die Begriffe „einschließend“ und „in welchem“ als Äquivalente der entsprechenden englischen Begriffe „umfassend“ und „wobei“ verwendet. Außerdem werden die Begriffe „erste“, „zweite“ und „dritte“, usw., nur als Markierungen verwendet, und wollen nicht numerische Anforderungen auf deren Objekte aufzwingen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62211490 [0001]
    • US 8209694 [0007]
    • US 7383368 [0008]
    • US 6282454 [0009]
    • US 7058693 [0010]

Claims (26)

  1. Gerät zum Bereitstellen einer webbasierten Programmierumgebung, um das Programmieren, Laden und Debuggen eines Benutzerprogramms in einem industriellen Automatisierungscontroller zu ermöglichen, wobei eine begrenzte Programmspeicherkapazität auf dem industriellen Automatisierungscontroller vorhanden ist, wobei das Gerät umfasst: einen Hostserver, welcher herunterladbares Software hostet, welches, wenn ausgeführt, die webbasierte Programmierumgebung erzeugt; einen Clientcomputer, mit einem Webbrowser, welcher die webbasierte Programmierumgebung vom Hostserver herunterladet und ausführt, wobei der Clientcomputer ein Clientcomputer-Dateisystem umfasst, und wobei, nachdem die webbasierte Programmierumgebung vom Hostserver ein erstes Mal heruntergeladen worden ist, die Verbindung mit dem Hostserver für die Funktion der webbasierten Programmierumgebung nicht mehr benötigt wird; eine Programmkompiliereinheit in der webbasierten Programmierumgebung, welche ein benutzerdefiniertes industrielles Automatisierungscontroller-Quellprogramm kompiliert, und ein kompiliertes Benutzer-Bytecodeprogramm aus dem benutzerdefinierten Quellprogramm ausgibt; eine Import/Export-Einheit in der webbasierten Programmierumgebung, welche Projektdateien über das Clientcomputer-Dateisystem speichert und lädt; eine Programmladeeinheit in der webbasierten Programmierumgebung, welche das Benutzer-Bytecodeprogramm in den industriellen Automatisierungscontroller vom Clientcomputer lädt; und ein Softwareprogramm, welches auf dem industriellen Automatisierungscontroller installiert und ausgeführt wird, wobei, nachdem die Programmierumgebungssoftware in dem Clientcomputer geladen worden ist, die Verbindung zwischen Hostserver und Clientcomputer unterbrochen wird, da der Hostserver nicht mehr für den Betrieb des industriellen Automatisierungscontrollers benötigt wird.
  2. Gerät nach Anspruch 1, ferner umfassend: eine Graphische-Benutzer-Schnittstellen-Einheit (GUI) im Clientcomputer, welche von einem menschlichen Benutzer Informationen hervorruft und empfängt, welche ein GUIanzeigbares industrielles Automatisierungscontrollerquellprogramm erzeugen.
  3. Gerät nach Anspruch 2, ferner umfassend: eine Anzeigeeinheit auf dem Clientcomputer, welche das GUI-anzeigbare industrielle Automatisierungscontrollerquellprogramm in einer textbasierten „Leiterlogik“-Form mit einer Spalte von Bedingungen und zumindest einer entsprechenden Aktion für jede Bedingung darstellt.
  4. Gerät nach Anspruch 3, ferner umfassend: eine Simulationseinheit im Clientcomputer, welche von einem menschlichen Benutzer Spezifikationsinformationen hervorruft und empfängt, welche Daten spezifizieren, welche vom industriellen Automatisierungscontroller detektiert werden können, welcher industrielle Automatisierungscontroller das kompilierte Bytecodeprogramm durch Verwendung der Spezifikationsinformationen ausführt, um Simulationsergebnisdaten zu erhalten, welcher die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und welcher die Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt.
  5. Gerät nach Anspruch 1, ferner umfassend: eine Simulationseinheit im Clientcomputer, welche von einem menschlichen Benutzer Spezifikationsinformationen hervorruft und empfängt, welche Daten spezifizieren, welche vom industriellen Automatisierungscontroller detektiert werden können, welcher industrielle Automatisierungscontroller das kompilierte Bytecodeprogramm durch Verwendung der Spezifikationsinformationen ausführt, um Simulationsergebnisdaten zu erhalten, welcher die Simulationsergebnisdaten mit erwarteten Ergebnisdaten vergleicht und welcher die Ergebnisse des Vergleichs an den menschlichen Benutzer ausgibt.
  6. Gerät nach Anspruch 1, ferner umfassend: eine Anzeigeeinheit auf dem Clientcomputer, welche das benutzerdefinierte Quellprogramm des industriellen Automatisierungscontrollers in einer „Leiterlogik“-Form mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen, wobei die horizontalen Sprossen in einem „Bedingung -> Aktionen“ Format sind.
  7. Gerät nach Anspruch 1, wobei das Softwareprogramm, welches auf dem industriellen Automatisierungscontroller installiert und ausgeführt wird während des Herstellungsprozesses installiert wird.
  8. Gerät nach Anspruch 1, wobei das Softwareprogramm, welches auf dem industriellen Automatisierungscontroller installiert und ausgeführt wird in den industriellen Automatisierungscontroller vom Clientcomputer heruntergeladen wird.
  9. Nichtflüchtiges computerlesbares Medium, auf welchem Anweisungen gespeichert sind, welche ein geeignetes programmiertes Computersystem dazu veranlassen, ein Verfahren auszuführen, um das Programmieren, Laden und Debuggen eines Benutzerprogramms in einem industriellen Automatisierungscontroller zu ermöglichen, welcher eine begrenzte FLASH-Speicherkapazität auf dem industriellen Automatisierungscontroller aufweist, wobei das Verfahren umfasst: Laden einer webbasierten Programmierumgebung in einen Clientcomputer, welcher ein Clientcomputer-Dateisystem umfsst, und aus der webbasierten Programmierumgebung, Ausführen des Folgenden: Hervorrufen und Empfangen, von einem menschlichen Benutzer, von Graphische-Benutzer-Schnittstelle (GUI) Informationen, welche ein erstes GUI-Softwareprogramm definieren, um einen ersten einer Mehrzahl von industriellen Automatisierungscontrollern (IACs) zu steuern und GUI-Informationen, welche ein zweites GUI-Softwareprogramm definieren, um einen zweiten der Mehrzahl von IACs zu steuern; Kompilieren des ersten GUI-Softwareprogramms in ein erstes Bytecodeprogramm durch Verwendung eines Clientcomputers außerhalb des ersten IACs; Laden des Bytecodeprogramms in den ersten IAC vom Clientcomputer; Kompilieren des zweiten GUI-Softwareprogramms in ein zweites Bytecodeprogramms durch Verwendung des Clientcomputers, welcher sich außeralb des zweiten IAC befindet; Laden des zweiten Bytecodeprogramms in den zweiten IAC vom Clientcomputer; und Präsentieren einer webbasierten Programmierumgebung an den menschlichen Benutzer von Seiten des Clientcomputers, wobei die Programmierumgebung, welche im Clientcomputer läuft einen Simulator umfasst, welcher das Ausführen durch den ersten IAC des ersten Bytecodeprogramms simuliert und wobei die Programmierumgebung auch eine Import/Export-Einheit umfasst, welche Projektdateien über das Clientcomputer-Dateisystem speichert und lädt.
  10. Nichtflüchtiges computerlesbares Medium nach Anspruch 9, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen, ferner die Mehrzahl von IACs über eine Browsersoftware einzuschließen und die IAC-Kommunikationen über einzelne Internet-Protokoll (IP)-Adressen jedes der Mehrzahl von IAC abzuwickeln.
  11. Nichtflüchtiges computerlesbares Medium nach Anspruch 9, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen, ferner die Verwendung einer webbasierten Implementation in den Clientcomputer einzuschließen, um die Mehrzahl von IACs zu steuern, wobei die Programmierumgebung eine zwischengespeicherte Version einer in einem Clientcomputer existierenden Webseite ist.
  12. Nichtflüchtiges computerlesbares Medium nach Anspruch 9, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen, ferner die gleichzeitige Programmierung der Mehrzahl von IACs vom einzelnen Clientcomputer zu umfassen.
  13. Nichtflüchtiges computerlesbares Medium nach Anspruch 9, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen ferner Folgendes zu umfassen: Hervorrufen und Empfangen, über eine Graphische-Benutzer-Schnittstelle (GUI) im Clientcomputer, von Informationen von einem menschlichen Benutzer, um ein GUIdarstellbares Quellprogramm eines industriellen Automatisierungscontrollers zu definieren.
  14. Nichtflüchtiges computerlesbares Medium nach Anspruch 13, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen ferner Folgendes zu umfassen: Anzeigen, durch den Clientcomputer, des GUI-darstellbaren Quellprogramms des industriellen Automatisierungscontrollers in einer textbasierten Form mit einer Spalte von Bedingungen und zumindest eine entsprechende Aktion für jede Bedingung.
  15. Nichtflüchtiges computerlesbares Medium nach Anspruch 9, ferner umfassend Anweisungen, welche das Verfahren dazu veranlassen ferner Folgendes zu umfassen: Anzeigen, durch den Clientcomputer, des benutzerdefinierten Quellprogramms des industriellen Automatisierungscontrollers in einer „Leiterlogik“-Form, mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen, wobei die horizontalen Sprossen in einem „Bedingung -> Aktionen“-Format vorliegen.
  16. Computerimplementiertes Verfahren zum Bereitstellen einer webbasierten Programmierumgebung, um das Programmieren, Laden und Debuggen eines Benutzerprogramms in ein eingebettetes Gerät zu ermöglichen, welches eine begrenzte Menge an Speicher auf dem Gerät aufweist, wobei das Verfahren umfasst: Bereitstellen eines Webserverprogramms im Firmware innerhalb eines Mikroprozessors, welcher in einer industriellen Automationsumgebung verwendet wird; Verbinden des Mikroprozessors mit einem Clientcomputer, auf welchem ein Webbrowserprogramm ausgeführt wird; wobei das Webprogramm eine Import/Export-Einheit umfasst, welche das Speichern von Projektdateien über das lokale Dateisystem im Clientcomputer ausführt; Hervorrufen und Empfangen durch den Clientcomputer, von einem menschlichen Benutzer, über eine Graphische-Benutzer-Schnittstelle (GUI), von Informationen, welche ein erstes GUI-Softwareprogramm und ein zweites GUI-Softwareprogramm definieren, welche jeweils zum Steuern des ersten und zweiten Mikroprozessors verwendet werden müssen, Kompilieren, im Clientcomputer, des ersten GUI-Softwareprogramms in ein erstes Bytecodeprogramm durch Verwendung des Clientcomputers; Kompilieren, im Clientcomputer, des zweiten GUI-Softwareprogramms in ein zweites Bytecodeprogramm durch Verwendung des Clientcomputers; Laden des ersten Bytecodeprogramms in den ersten Mikroprozessor vom Clientcomputer; Laden des zweiten Bytecodeprogramms in den zweiten Mikroprozessor vom Clientcomputer; Ausführen des ersten Bytecodeprogramms in dem ersten Mikroprozessor; und Ausführen des zweiten Bytecodeprogramms in dem zweiten Mikroprozessor.
  17. Computerimplementiertes Verfahren nach Anspruch 16, ferner umfassend: Laden einer Webbrowser-Software von einem Hostserver in den Clientcomputer, wobei die Webbrowser-Software die Einschränkungen in Anspruch 13 steuert.
  18. Computerimplementiertes Verfahren nach Anspruch 16, ferner umfassend: Simulieren im Clientcomputer und Interagieren mit dem menschlichen Benutzer als Teil der Programmierumgebung, welche durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator konfiguriert ist, um Bytecodeprogramme auszuführen, um Variablen auf der Basis von Daten einzustellen, welche von der GUI empfangen werden, und um Daten von der Variablen zu lesen und diese gelesenen Daten an die GUI zu senden.
  19. Computerimplementiertes Verfahren nach Anspruch 18, ferner umfassend: Verbinden des Clientcomputers mit dem Hostserver über das Internet; Herunterladen eines ersten Software-Satzes auf den Clientcomputer vom Hostserver, wobei der erste Softwaresatz folgendes umfasst: Einen Kompilierer, ausgebildet zum Ausführen auf dem Clientcomputer, um das Kompilieren auszuführen, um ein Bytecodeprogramm zu erzeugen, welches im Mikroprozessor ausgeführt wird, das Simulatorprogramm, und das Webserverprogramm.
  20. Computerimplementiertes Verfahren nach Anspruch 16, ferner umfassend: Anzeigen, vom Clientcomputer, des GUI-darstellbaren Quellprogramms des industriellen Automatisierungscontrollers, in einer „Leiterlogik“-Form mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen, wobei die horizontalen Sprossen in einem „Bedingung -> Aktionen“-Format vorliegen.
  21. Computerimplementiertes Verfahren nach Anspruch 16, wobei das Hervorrufen und Empfangen über die Graphische-Benutzer-Schnittstelle (GUI), von Informationen, welche ein erstes GUI-Softwareprogramm definieren, umfasst: Anzeigen, vom Clientcomputer, einer „Leiterlogik“-Form mit zwei vertikalen Holmen und einer Reihe von horizontalen dazwischenliegenden Sprossen, wobei die horizontalen Sprossen in einem „Bedingung -> Aktionen“-Format vorliegen; und Empfangen, vom menschlichen Benutzer, einer Spezifikation einer bestimmten Bedingung und einer bestimmten Aktion, welche dieser Bedingung zugeordnet ist.
  22. Gerät zum Bereitstellen einer webbasierten Programmierumgebung zum Entwickeln, Laden, und Debuggen eines Benutzerprogramms in ein eingebettetes Gerät, welches über eine begrenzte Menge an Gerätspeicher verfügt, wobei das Gerät umfasst: Mittel zum Laden eines Webserverprogramms in die Firmware in einem Mikroprozessor, welcher in eine industrielle Automatisierungsumgebung verwendet wird; Mittel zum Verbinden des Mikroprozessors mit einem Clientcomputer, auf welchem ein Webbrowserprogramm ausgeführt wird; Mittel zum Hervorrufen und Empfangen durch den Clientcomputer, von einem menschlichen Benutzer, über eine Graphische-Benutzer-Schnittstelle (GUI), von Informationen, welche ein erstes GUI-Softwareprogramm definieren, welches zum Steuern des Mikroprozessors verwendet werden muss; Mittel zum Kompilieren, im Clientcomputer, des ersten GUI-Softwareprogramms in ein Bytecodeprogramm, durch Verwendung des Clientcomputers, welcher sich außerhalb des Mikroprozessors befindet; Mittel zum Laden des Bytecodeprogramms in den Mikroprozessor von Clientcomputer; und Mittel zum Ausführen des Bytecodeprogramms in dem Mikroprozessor.
  23. Gerät nach Anspruch 22, ferner umfassend: Mittel zum Simulieren, im Clientcomputer, und Interagieren mit dem menschlichen Benutzer, als Teil der Programmierumgebung, welche durch den Webbrowser des Clientcomputers ausgeführt wird, wobei der Simulator konfiguriert ist, um das Bytecodeprogramm auszuführen, um Variablen auf der Basis der von der GUI empfangenen Daten einzustellen, und um Daten von den Variablen zu lesen und die gelesenen Daten an die GUI zu senden.
  24. Gerät nach Anspruch 22, ferner umfassend: Mittel zum Verbinden des Clientcomputers mit einem Hostserver über das Internet; Mittel zum Herunterladen eines ersten Software-Satzes auf den Clientcomputer vom Hostserver, wobei der erste Software-Satz folgendes umfasst: Einen Kompilierer, ausgebildet zum Ausführen auf dem Clientcomputer, um das Kompilieren auszuführen, um ein Bytecodeprogramm zu erzeugen, welches im Mikroprozessor ausgeführt wird, das Simulatorprogramm, und das Webserverprogramm.
  25. Gerät nach Anspruch 22, ferner umfassend: Mittel zum Anzeigen, vom Clientcomputer, des GUI-darstellbaren Quellprogramms des industriellen Automatisierungscontrollers, in einer textbasierten Form, mit einer Spalte von Bedingungen und zumindest eine entsprechende Aktion für jede Bedingung.
  26. Gerät nach Anspruch 22, wobei die Mittel zum Hervorrufen und Empfangen über die Graphische-Benutzer-Schnittstelle (GUI), von Informationen, welche ein erstes GUI-Softwareprogramm definieren, umfassen: Mittel zum Anzeigen, vom Clientcomputer, einer textbasierten Form mit einer Spalte von Bedingungen und zumindest eine entsprechende Aktion für jede Bedingung; und Mittel zum Empfangen vom menschlichen Benutzer einer Spezifikation einer besonderen Bedingung und einer besonderen Aktion, welche dieser Aktion zugeordnet ist.
DE112016003949.2T 2015-08-28 2016-08-24 Webbasierte programmierumgebung für eingebettete geräte Pending DE112016003949T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562211490P 2015-08-28 2015-08-28
US62/211,490 2015-08-28
PCT/US2016/048373 WO2017040145A1 (en) 2015-08-28 2016-08-24 Web-based programming environment for embedded devices

Publications (1)

Publication Number Publication Date
DE112016003949T5 true DE112016003949T5 (de) 2018-05-17

Family

ID=56926263

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016003949.2T Pending DE112016003949T5 (de) 2015-08-28 2016-08-24 Webbasierte programmierumgebung für eingebettete geräte

Country Status (3)

Country Link
US (2) US10318404B2 (de)
DE (1) DE112016003949T5 (de)
WO (1) WO2017040145A1 (de)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10620917B2 (en) * 2014-10-02 2020-04-14 Siemens Aktiengesellschaft Programming automation in a 3D graphical editor with tightly coupled logic and physical simulation
EP3200034B1 (de) * 2016-01-28 2019-10-30 Siemens Aktiengesellschaft Zugriff auf daten oder funktionen einer speicherprogrammierbaren steuerung mittels eines webdienstes
JP6896759B2 (ja) * 2016-03-23 2021-06-30 フォグホーン システムズ, インコーポレイテッドFoghorn Systems, Inc. リアルタイムデータフロープログラミングにおけるパターン駆動型反応の合成
DE102016122324A1 (de) * 2016-11-21 2018-05-24 Weidmüller Interface GmbH & Co. KG Steuerung für eine industrielle Automatisierungsanlage und Verfahren zum Programmieren und Betreiben einer derartigen Steuerung
CN108874390B (zh) * 2017-05-10 2023-05-16 腾讯科技(北京)有限公司 一种数据处理方法及装置、设备、存储介质
JP6677677B2 (ja) * 2017-06-21 2020-04-08 株式会社東芝 情報処理装置、情報処理システム、情報処理方法およびプログラム
EP3444682A1 (de) * 2017-08-16 2019-02-20 Siemens Aktiengesellschaft Verfahren zum rechnergestützten koppeln eines verarbeitungsmoduls in ein modulares technisches system und modulares technisches system
CN109531564A (zh) * 2017-09-21 2019-03-29 富泰华工业(深圳)有限公司 机器人服务内容编辑系统及方法
EP3462256A1 (de) * 2017-09-29 2019-04-03 Wachendorff Automation GmbH & Co. KG Konfiguration eines an einem bussystem angeschlossenen messsystems
US10521202B2 (en) * 2017-11-20 2019-12-31 Coupa Software Incorporated Customizable project and help building interfaces for deployable software
CN108156044A (zh) * 2018-02-27 2018-06-12 顺德职业技术学院 一种机器人工作站网络拓扑结构
CN108509187B (zh) * 2018-03-29 2021-05-18 烽火通信科技股份有限公司 一种自动生成软件平台mib功能代码的方法及系统
KR102069096B1 (ko) * 2018-04-17 2020-01-22 (주)블루커뮤니케이션 피지컬 디바이스의 직접적 원격 제어 장치
IT201800005542A1 (it) * 2018-05-21 2019-11-21 Sistema per la progettazione e/o l’aggiornamento di programmi per l’interfaccia operatore e la gestione di macchinari e/o impianti di automazione
US11349901B1 (en) 2019-03-26 2022-05-31 Samsara Inc. Automated network discovery for industrial controller systems
US11451611B1 (en) 2019-03-26 2022-09-20 Samsara Inc. Remote asset notification
US10609114B1 (en) 2019-03-26 2020-03-31 Samsara Networks Inc. Industrial controller system and interactive graphical user interfaces related thereto
US11451610B1 (en) 2019-03-26 2022-09-20 Samsara Inc. Remote asset monitoring and control
US11127130B1 (en) 2019-04-09 2021-09-21 Samsara Inc. Machine vision system and interactive graphical user interfaces related thereto
FI20195408A1 (en) * 2019-05-17 2020-11-18 Valmet Automation Oy Remote access to automation system
USD996640S1 (en) 2019-11-11 2023-08-22 Stryker Corporation Specimen collection tray
USD930850S1 (en) 2019-11-20 2021-09-14 Stryker Corporation Specimen collection tray
USD956967S1 (en) 2019-11-11 2022-07-05 Stryker Corporation Manifold housing for a medical waste collection device
US11137744B1 (en) 2020-04-08 2021-10-05 Samsara Inc. Systems and methods for dynamic manufacturing line monitoring
CN111913698B (zh) * 2020-08-13 2023-12-15 弗雷森斯(苏州)科技有限公司 一种跨平台通用型论坛社区程序的控制方法和系统
CN112233486A (zh) * 2020-10-21 2021-01-15 南通大学 一种面向嵌入式系统应用教学的虚拟实验系统
US11158177B1 (en) 2020-11-03 2021-10-26 Samsara Inc. Video streaming user interface with data from multiple sources
US11131986B1 (en) 2020-12-04 2021-09-28 Samsara Inc. Modular industrial controller system
CN113064668B (zh) * 2021-03-26 2024-03-15 中国航空无线电电子研究所 嵌入式平台可执行文件数据在线加载控制系统
US11741760B1 (en) 2022-04-15 2023-08-29 Samsara Inc. Managing a plurality of physical assets for real time visualizations
US11861955B1 (en) 2022-06-28 2024-01-02 Samsara Inc. Unified platform for asset monitoring

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282454B1 (en) 1997-09-10 2001-08-28 Schneider Automation Inc. Web interface to a programmable controller
US7058693B1 (en) 1997-09-10 2006-06-06 Schneider Automation Inc. System for programming a programmable logic controller using a web browser
US7383368B2 (en) 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US8209694B2 (en) 2009-10-13 2012-06-26 Turck Holding Gmbh Single-stack real-time operating system for embedded systems

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5243511A (en) * 1989-06-30 1993-09-07 Icom, Inc. Method and apparatus for block move re-addressing in ladder logic programs
US5267145A (en) * 1989-06-30 1993-11-30 Icom, Inc. Method and apparatus for program navigation and editing for ladder logic programs by determining which instructions reference a selected data element address
US5349518A (en) * 1989-06-30 1994-09-20 Icom, Inc. Method and apparatus for symbolic ladder logic programming with automatic attachment of addresses
US4991076A (en) * 1989-06-30 1991-02-05 Icom Inc. Method and apparatus for creating custom displays for monitoring ladder logic programs
US5127099A (en) * 1989-06-30 1992-06-30 Icom, Inc. Method and apparatus for securing access to a ladder logic programming and monitoring system
US5276811A (en) * 1989-06-30 1994-01-04 Icom, Inc. Method for emulating programmable logic controller by exchanging information between debug program which emulates I/O devices and ladder logic program
US5867382A (en) * 1996-09-10 1999-02-02 Mclaughlin; Michael G. Generic control systems using a virtual rack module
US5966532A (en) * 1997-07-10 1999-10-12 National Instruments Corporation Graphical code generation wizard for automatically creating graphical programs
US7035898B1 (en) * 1997-09-10 2006-04-25 Schneider Automation Inc. System for programming a factory automation device using a web browser
JP3883775B2 (ja) * 2000-03-17 2007-02-21 株式会社デジタル 制御システム用サーバ装置、制御システム、制御システム用サーバ装置の通信方法、および、そのプログラムが記録された記録媒体
US7131111B2 (en) * 2001-01-19 2006-10-31 Sun Microsystems, Inc. Development of manifest for java embedded server bundle
US7516441B2 (en) * 2001-06-04 2009-04-07 Microsoft Corporation Method and system for program editing and debugging in a common language runtime environment
US7334117B2 (en) * 2004-08-04 2008-02-19 National Instruments Corporation Device boot loader for processing one or more requests from a host computer system concurrently with loading or updating the firmware of the device
US7958488B2 (en) * 2005-08-16 2011-06-07 National Instruments Corporation Virtual testing in a development environment
US8751199B1 (en) * 2006-12-27 2014-06-10 The Mathworks, Inc. Method of graphically linking multiple disjoint models
US9047337B2 (en) * 2007-04-27 2015-06-02 International Business Machines Corporation Database connectivity and database model integration within integrated development environment tool
US8607189B2 (en) * 2009-05-18 2013-12-10 National Instruments Corporation Dynamic analysis of a graphical program in a browser
US9058029B2 (en) * 2011-03-31 2015-06-16 Brad Radl System and method for creating a graphical control programming environment
US8452749B2 (en) * 2011-04-01 2013-05-28 Pomian & Corella, Llc Browsing real-time search results effectively
US9992268B2 (en) * 2012-09-27 2018-06-05 Oracle International Corporation Framework for thin-server web applications
US11256524B2 (en) * 2013-02-19 2022-02-22 Quick Eye Technologies Inc. Data structures for visualization of hierarchical data
US9246947B2 (en) * 2013-04-03 2016-01-26 Crimson Corporation Method and apparatus for protecting access to corporate applications from a mobile device
US9946560B2 (en) * 2014-09-02 2018-04-17 Apple Inc. Development environment for multiple electronic devices
US20170031661A1 (en) * 2015-04-15 2017-02-02 Alpha Software Corporation Systems and methods for transactional applications in an unreliable wireless network
CA3128629A1 (en) * 2015-06-05 2016-07-28 C3.Ai, Inc. Systems and methods for data processing and enterprise ai applications
GB2546239A (en) * 2015-11-23 2017-07-19 Acadiant Ltd A Method and system for providing and executing web applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6282454B1 (en) 1997-09-10 2001-08-28 Schneider Automation Inc. Web interface to a programmable controller
US7058693B1 (en) 1997-09-10 2006-06-06 Schneider Automation Inc. System for programming a programmable logic controller using a web browser
US7383368B2 (en) 2003-09-25 2008-06-03 Dell Products L.P. Method and system for autonomically adaptive mutexes by considering acquisition cost value
US8209694B2 (en) 2009-10-13 2012-06-26 Turck Holding Gmbh Single-stack real-time operating system for embedded systems

Also Published As

Publication number Publication date
US20190266066A1 (en) 2019-08-29
US10318404B2 (en) 2019-06-11
US10977014B2 (en) 2021-04-13
US20170060726A1 (en) 2017-03-02
WO2017040145A1 (en) 2017-03-09

Similar Documents

Publication Publication Date Title
DE112016003949T5 (de) Webbasierte programmierumgebung für eingebettete geräte
DE102017217971B4 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
DE102008019040B4 (de) Verfahren und Steuergerät zur Steuerung eines Automatisierungssystems
DE19781804B4 (de) Vorrichtung zur Simulation einer Echtzeit-Prozesssteuerung
DE112013007000B4 (de) Überwachungssteuerungsvorrichtung
DE102009047025B3 (de) Echtzeit-Laufzeitsystem und Funktionsmodul für ein solches Laufzeitsystem
DE102019003851A1 (de) Systeme und Verfahren zum automatischen Realisieren von Modellen zu Co-Simulation
EP2729855A1 (de) Verfahren und vorrichtung zur programmierung und konfigurierung einer speicherprogrammierbaren steuereinrichtung
DE102012100738A1 (de) Verfahren zur Konfiguration eines BIOS in einem Computersystem sowie Computerprogrammprodukt
DE102019131039A1 (de) Systeme und methoden für die live-validierung der gerätekonfiguration
WO2013072425A1 (de) Verfahren, computerprogramm, computerlesbares medium und recheneinheit zur bedienung von feldgeräten
DE112012004247T5 (de) Passives Überwachen virtueller Systeme unter Verwendung einer erweiterbaren Indexierung
DE112011103428T5 (de) Automatisierte Analyse zusammengesetzter Anwendungen
EP3542232B1 (de) Steuerung für eine industrielle automatisierungsanlage und verfahren zum programmieren und betreiben einer derartigen steuerung
DE102010025954A1 (de) Verfahren und Anordnung zur vollständigen oder teilweisen Nachbildung und/oder Simulation eines Automatisierungssystems
DE112013000751T5 (de) Datenverarbeitung, Datensammlung
DE10333088A1 (de) Verfahren zum Liefern von Zugriff auf die internen Signale eines dynamischen Systemmodells von außerhalb bezüglich der Modellierungsumgebung
DE112009001892T5 (de) Datensatz basierte Codestruktur
DE102014219711A1 (de) Verfahren zur Kraftwerkssimulation
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE102021116315A1 (de) Verfahren zum Zusammenführen von Architekturinformationen
EP3401743B1 (de) Verfahren zur aufstellung einer menüstruktur auf einem messumformer und messumformer
WO2015124320A1 (de) Dynamisches speicherprogrammierbares steuergerät zum emulieren eines steuergerätes
EP1536328B1 (de) Datenverarbeitungssystem mit automatisierbarer Verwaltung und Verfahren zur automatisierten Verwaltung eines Datenverarbeitungssystems
WO2021052955A1 (de) System und verfahren zum bereitstellen einer digitalen nachbildung einer anlage und entsprechendes computerprogrammprodukt

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: STOLMAR & PARTNER PATENTANWAELTE PARTG MBB, DE

R012 Request for examination validly filed