Web-based programming environment for embedded devices
First Claim
1. An apparatus for providing a web-based programming environment for facilitating programming, loading, and debugging user programs into industrial automation controllers that each have a limited amount of program memory on each industrial automation controller, the apparatus comprising:
- a hosting server which hosts downloadable software that, when executed, creates the web-based programming environment;
a first client computer with a web browser that downloads and runs the web-based programming environment from the hosting server, wherein the first client computer includes a client computer file system, and wherein once the web-based programming environment is loaded from the hosting server a first time, the connection to the hosting server is no longer required for the operation of the web-based programming environment;
a program-compiler unit in the web-based programming environment that compiles a plurality of respective user-specified industrial automation controller source programs, and for each respective source program, outputs a respective compiled user-bytecode program corresponding to the respective user-specified source program;
an import/export unit in the web-based programming environment that saves and loads project files using the first client computer file system;
a program loader unit in the web-based programming environment that loads, using a first browser window running on the first client computer, a first respective one of a plurality of industrial automation controllers with a first respective one of the user-bytecode programs from a first one of a plurality of different storage sections within localStorage provided by HTML5 in the first client computer and that loads, using a second browser window also running on the first client computer, a second respective one of the plurality of industrial automation controllers with a second respective one of the user-bytecode programs from a second one of the plurality of different storage sections within localStorage provided by HTML5 in the first client computer;
a software program that resides and executes on each respective one of the plurality of industrial automation controllers, wherein once the programming environment software is loaded into the first client computer, the connection to the hosting server and the first client computer is disconnected since the hosting server is no longer required for operation of the industrial automation controller; and
a simulator unit in the client computer that elicits and receives, from a human user, specification information that specifies data that could be sensed by the industrial automation controller, that executes the compiled bytecode program using the specification information to obtain simulation-results data, that compares the simulation-results data against expected results data, and that outputs to the human user, results of the comparison.
2 Assignments
0 Petitions
Accused Products
Abstract
A programming environment and a simple programming language that runs on Ethernet block-input/output (block-IO) devices and hosting servers. In some embodiments, the ARGEE™ system includes a web-based programming environment that compiles a GUI program into a bytecode program of a virtual machine; and the virtual machine that runs in the device firmware and executes the bytecode program representing the GUI program created by a user. There are many programming languages that provide a web-based programming environment. Some such languages apply to embedded devices. However, the ARGEE™ system, considered as a whole, is unique in that the programming environment is not hosted on the same embedded device it controls. The system reduces the FLASH-memory requirements of the device by hosting the environment on an external server. The system also facilitates a faster update cycle of the environment software, making it easier to distribute changes to customers when environment changes.
-
Citations
26 Claims
-
1. An apparatus for providing a web-based programming environment for facilitating programming, loading, and debugging user programs into industrial automation controllers that each have a limited amount of program memory on each industrial automation controller, the apparatus comprising:
-
a hosting server which hosts downloadable software that, when executed, creates the web-based programming environment; a first client computer with a web browser that downloads and runs the web-based programming environment from the hosting server, wherein the first client computer includes a client computer file system, and wherein once the web-based programming environment is loaded from the hosting server a first time, the connection to the hosting server is no longer required for the operation of the web-based programming environment; a program-compiler unit in the web-based programming environment that compiles a plurality of respective user-specified industrial automation controller source programs, and for each respective source program, outputs a respective compiled user-bytecode program corresponding to the respective user-specified source program; an import/export unit in the web-based programming environment that saves and loads project files using the first client computer file system; a program loader unit in the web-based programming environment that loads, using a first browser window running on the first client computer, a first respective one of a plurality of industrial automation controllers with a first respective one of the user-bytecode programs from a first one of a plurality of different storage sections within localStorage provided by HTML5 in the first client computer and that loads, using a second browser window also running on the first client computer, a second respective one of the plurality of industrial automation controllers with a second respective one of the user-bytecode programs from a second one of the plurality of different storage sections within localStorage provided by HTML5 in the first client computer; a software program that resides and executes on each respective one of the plurality of industrial automation controllers, wherein once the programming environment software is loaded into the first client computer, the connection to the hosting server and the first client computer is disconnected since the hosting server is no longer required for operation of the industrial automation controller; and a simulator unit in the client computer that elicits and receives, from a human user, specification information that specifies data that could be sensed by the industrial automation controller, that executes the compiled bytecode program using the specification information to obtain simulation-results data, that compares the simulation-results data against expected results data, and that outputs to the human user, results of the comparison. - View Dependent Claims (2, 3, 4, 5, 6, 26)
-
-
7. A non-transitory computer-readable medium having stored thereon instructions that cause a suitably programmed computer system to perform a method for facilitating programming, loading, and debugging a user program into an industrial automation controller that has a limited amount of FLASH memory on the industrial automation controller, the method comprising:
-
loading a web-based programming environment into a first client computer that includes a client computer file system, and from the web-based programming environment, performing the following; eliciting and receiving, from a human user, graphical-user-interface (GUI) information that specifies a first GUI software program to control a first one of a plurality of industrial automation controllers (IACs) and GUI information that specifies a second GUI software program to control a second one of the plurality of IACs; compiling the first GUI software program into a first bytecode program using a client computer that is outside the first IAC; using a first browser window running in the first client computer, loading the bytecode program into the first IAC from a first one of a plurality of different storage sections within localStorage provided by HTML5 in the client computer; compiling the second GUI software program into a second bytecode program using the client computer that is outside the second IAC; using a second browser window running in the first client computer, loading the second bytecode program into the second IAC from a second one of the plurality of different storage sections in the client computer; and presenting a web based programming environment to the human user from the client computer, wherein the programming environment running in the client computer includes eliciting and receiving, from a human user, specification information that specifies data that could be sensed by the industrial automation controller, executing the first compiled bytecode program using the specification information to obtain simulation-results data, comparing the simulation-results data against expected results data, and outputting to the human user, results of the comparing, and wherein the programming environment also includes an import/export unit that saves and loads project files through the client computer file system. - View Dependent Claims (8, 9, 10, 11, 12, 13)
-
-
14. A computer-implemented method for providing a web-based programming environment for facilitating programming, loading, and debugging a user program into an embedded device that has a limited amount of on-device memory, the method comprising:
-
having a first web server program in firmware within a first microprocessor used in an industrial-automation environment; having a second web server program in firmware within a second microprocessor used in an industrial-automation environment; connecting the first microprocessor and the second microprocessor to a client computer having a web-browser program executing thereon;
wherein the first and second web server programs each includes an import/export unit that performs saving project files using a local file system in the client computer;eliciting and receiving by the client computer, from a human user, via a graphical-user-interface (GUI), information that specifies a first GUI software program and a second GUI software program to be used to control the first and second microprocessors, respectfully; compiling, in the client computer, the first GUI software program into a first bytecode program using the client computer; compiling, in the client computer, the second GUI software program into a second bytecode program using the client computer; in the client computer; eliciting and receiving, from a human user, specification information that specifies data that could be sensed by the industrial automation controller, executing the first compiled bytecode program using the specification information to obtain simulation-results data, comparing the simulation-results data against expected results data, and outputting to the human user, results of the comparing; loading, from a first browser window on the client computer, the first bytecode program into the first microprocessor from a first one of a plurality of different storage sections within localStorage provided by HTML5 in the client computer; loading, from a second browser window on the client computer, the second bytecode program into the second microprocessor from a second one of the plurality of different storage sections in the client computer; executing the first bytecode program in the first microprocessor; and executing the second bytecode program in the second microprocessor. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. An apparatus for providing a web-based programming environment for developing, loading, and debugging a user program into an embedded device having a limited amount of on-device memory, the apparatus comprising:
-
means for loading a web server program into firmware within both a first microprocessor and a second microprocessor used in an industrial-automation environment; means for connecting both the first microprocessor and the second microprocessor to a client computer having a web-browser program executing thereon; means for eliciting and receiving by the client computer, from a human user, via a graphical-user-interface (GUI), information that specifies a first GUI software program to be used to control the first microprocessor; means for compiling, in the client computer, the first GUI software program into a first bytecode program using the client computer that is outside the first microprocessor; means for compiling, in the client computer, the second GUI software program into a second bytecode program using the client computer; means in the client computer for; eliciting and receiving, from a human user, specification information that specifies data that could be sensed by the industrial automation controller, executing the first compiled bytecode program using the specification information to obtain simulation-results data, comparing the simulation-results data against expected results data, and outputting to the human user, results of the comparing; means for loading, from a first browser window on the client computer, the first bytecode program into the first microprocessor from a first one of a plurality of different storage sections within localStorage provided by HTML5 in the client computer; means for loading, from a second browser window on the client computer, the second bytecode program into the second microprocessor from a second one of the plurality of different storage sections in the client computer; means for executing the first bytecode program in the first microprocessor; and means for executing the second bytecode program in the second microprocessor. - View Dependent Claims (21, 22, 23, 24, 25)
-
Specification