Embedded controllers (also called embedded devices, embedded controllers, embedded systems or, simply, microprocessors) generally are devices whose primary purpose is to perform an independent action such as encoding video, controlling robots, routing internet traffic, and so on. Such devices run autonomously without user intervention, however, there needs to be a way to configure/monitor/troubleshoot these devices.
“Embedded systems” are a type of systems (often including a plurality of embedded devices in one product that is offered for sale) that have applications that that are growing rapidly and expanding into different markets. One common typical characteristic of devices in this group is “fixed functionality”. These devices start with a predefined set of application tasks and this set cannot be modified. These devices do not allow users to upload and run third-party programs. This assumption allows the manufacturer to reduce software complexity and to create very small, inexpensive and reliable systems.
The current generation of conventional embedded networking devices use standard off-the-shelf components such as operating systems (OS), file systems, web servers and SNMP agents (Simple Network Management Protocol (SNMP) is an internet-standard protocol for managing devices on IP networks) in order to provide the networking and application tasks. Due to various reasons, these systems typically involve expensive and complex hardware designs and inefficient software designs. Due to such inefficiencies, these systems contain huge amounts of code and require large amounts of RAM and high CPU speeds to support any reasonably robust networking infrastructure. This makes the devices expensive and unsuitable for certain applications. The large amount of code also results in a very slow startup time which blocks the adaptation of networking into certain devices such as TV sets, DVD players and other kinds of devices which need to be turned off and on quite often and require boot-up times on the order of one second. A number of U.S. patents attempt to facilitate the development of embedded controllers (also called embedded devices, embedded controllers, or, simply, microprocessors) in various ways, including the following U.S. Patents, each of which is incorporated herein by reference.
U.S. Pat. No. 8,209,694 to Glistvain issued on Jun. 26, 2012 with the title “Single-stack real-time operating system for embedded systems”, and is incorporated herein by reference. This patent describes real time operating system (RTOS) for embedded controllers having limited memory includes a continuations library, a wide range of macros that hide continuation point management, nested blocking functions, and a communications stack. The RTOS executes at least a first and second task and uses a plurality of task priorities. The tasks share only a single stack. The task scheduler switches control to the highest-priority task. The continuations library provides macros to automatically manage the continuation points. The yield function sets a first continuation point in the first task and yields control to the task scheduler, whereupon the task scheduler switches to the second task and wherein at a later time the task scheduler switches control back to the first task at the first continuation point. The nested blocking function invokes other blocking functions from within its body and yields control to the task scheduler.
U.S. Pat. No. 7,383,368 to Schopp issued on Jun. 3, 2008 with the title “Method and system for autonomically adaptive mutexes by considering acquisition cost value”, and is incorporated herein by reference. This patent describes a method for managing a mutex in a data processing system. For each mutex, an average acquisition cost is maintained that indicates an average consumption of computational resources that has been incurred by threads attempting to acquire the mutex.
U.S. Pat. No. 6,282,454 to Papadopoulos, et al. issued on Aug. 28, 2001 with the title “Web interface to a programmable controller”, and is incorporated herein by reference. This patent describes an interface to a network of at least one programmable logic control system running an application program for controlling output devices in response to status of input devices. The web interface runs web pages from an Ethernet board coupled directly to the PLC back plane and includes an HTTP protocol interpreter, a PLC back plane driver, a TCP/IP stack, and an Ethernet board kernel. The Web interface provides access to the PLC back plane by a user at a remote location through the Internet. The interface translates the industry standard Ethernet, TCP/IP and HTTP protocols used on the Internet into data recognizable to the PLC. Using this interface, the user can retrieve all pertinent data regarding the operation of the programmable logic controller system. This is different than the present invention because U.S. Pat. No. 6,282,454 describes a web interface module and PLC that are separated via a backplane interface, while, in contrast, in the present invention the web interface is implemented inside the PLC (or industrial-automation controller or other microcontroller), not as one or more separate parts.
U.S. Pat. No. 7,058,693 to Baker, Jr. issued on Jun. 6, 2006 with the title “System for programming a programmable logic controller using a web browser”, and is incorporated herein by reference. U.S. Pat. No. 7,058,693 describes a control system that includes an internet web interface to a network of at least one programmable logic control system (PLC) running an application program for controlling output devices in response to status of input devices. The web interface runs web pages from an Ethernet® board coupled directly to the PLC back plane and includes an HTTP protocol interpreter, a PLC back-plane driver, a TCP/IP stack, and an Ethernet board kernel. The web interface provides access to the PLC back plane by a user at a remote location through the internet. The interface translates the industry standard Ethernet, TCP/IP and HTTP protocols used on the Internet into data recognizable to the PLC. Residing in the PLC is a programming package accessible to a user through this interface which will allow the user to edit programs controlling the operation of the programmable logic controller system. Again, this is different than the present invention because U.S. Pat. No. 7,058,693 describes a web interface module and PLC that are separated via a backplane interface, while, in contrast, in the present invention the web interface is implemented inside the PLC (or industrial-automation controller or other microcontroller), not as one or more separate parts.
Prior art systems include:                (1) statPLC web, described as browser based programming, wherein one points their favorite web browser to the statPLC web server and starts editing. (See www.autstat.com/index.php/statplc-web.html accessed Aug. 19, 2015, which indicates a postal address at Baier automation & statistics, Ufergasse 68, 3500 Krems, Austria.) There is no precise information about how things are hosted, but based on the available information it is likely that it works in the following way: the user runs a browser application on their local client computer, which causes an application to run on a web-based server computer to edit and compile programs to obtain executable code, that is then loaded from the web-based server into the embedded device local to the user. The fact that statPLC web supports C development likely indicates that they have some sort of C compiler, and it is unlikely that the C compiler would run on Cortex M3 CPU that they claim to be supporting.        (2) Tri-Logic (a Java applet-hosted inside the device because of Java limitation), which supports simulation (See www.tri-plc.com/trilogi3.htm, accessed Aug. 19, 2015, which indicates a postal address at 1685 H ST #198, Blaine Wash. 98230, United States.).        (3) ICPDAS WISE (hosted inside the device). (See wise.icpdas.com/Introduction.html, which indicates its Headquarters at No. 111, Guangfu N. Rd., Hukou Township, Hsinchu County 30351, Taiwan, R.O.C.)        (4) MBLOGIC ladder editor on Web (hosted on the same device). (See mblogic.sourceforge.net/techdemo/ladtest/ladderhelp.html)        (5) Ladder with compiler on the client-side generating code for the target device (Arduino/AVR). (See github.com/tadpol/Avrian-Jump.) This can be combined with monitoring Ladder in real-time using Jayscript (which also provides some simulation). (See mblogic.sourceforge.net/techdemo/techdemo.html.)        (6) Managing local Storage to avoid losing work with programming environment (even managing multiple sessions within the same browser). (See mblogic.sourceforge.net/techdemo/techdemo.html.)        (7) Remote access to devices (See research.microsoft.com/pubs/161386/gibraltar.pdf and www2014.kr/wp-content/uploads/2014/05/companion_p135.pdf, accessed Aug. 19, 2015)        (8) Beck PLC (Web PLC) Hosting is on the device itself, wherein the device allows one to upload information to a central Beck server for IOT functionality. (See www.beck-ipc.com/files/manual/com.tom_WEB-PLC_GettingStarted_V16.pdf)        
According to Wikipedia (en.wikipedia.org/wiki/Ladder_logic, accessed Aug. 19, 2015), “ladder logic” was originally a written method to document the design and construction of relay racks as used in manufacturing and process control. Each device in the relay rack would be represented by a symbol on the ladder diagram with connections between those devices shown. In addition, other items external to the relay rack such as pumps, heaters, and so forth would also be shown on the ladder diagram.
Ladder logic has evolved into a programming language that represents a program by a graphical diagram based on the circuit diagrams of relay logic hardware. Ladder logic is used to develop software for programmable logic controllers (PLCs) used in industrial control applications. The name is based on the observation that programs in this language resemble ladders, with two vertical rails and a series of horizontal rungs between them. While ladder diagrams were once the only available notation for recording programmable controller programs, today other forms are standardized in IEC 61131-3.
Accordingly, there is a need for improved methods and apparatus for developing software for PLCs.