|
|
The
IPm subsystem
is built around a Motorola PowerPC processor. (A PowerPC is the
CPU found in MAC computers.) Specifically, the IPm utilizes an
855 processor. This is a special CPU, specifically designed for
embedded systems. It incorporates many of the IPm functions into
a single IC making it possible for the IPm subsystem to be so
small. This true 32-bit processor contains a cache memory which
speeds processing by accepting instructions in “batch mode” and
performing quick executions of instructions already in memory.One
of the most interesting aspects of the 855 processor, is its built
in communications co-processor. This RISC processor handles the
serial communication, unburdening the main processor and greatly
aiding the real-time performance of the IPm subsystem. It should
be noted that a Pentium and most other computers in common usage
do not have such a co-processor. (Serial communications is not
a priority in a Windows or most other computer applications. Industrial
systems however, rely on serial communications for their real-time
performance.) More will be said about this in the Serial
Communications topic below. |
|
|
|
The
IPm subsystem
executes all programs from the 32-bit wide dynamic memory. Upon
boot-up, programs are loaded from the Flash disk into this fast
memory for execution. The clock timing has been carefully designed
to allow zero wait states on this system memory. (Most industrial
controllers execute their programs from the Flash or EPROM memory,
which is typically only 8 or 16 bits wide and usually requires
wait states.) It is interesting to note that when you are debugging
new applications, the use of this dynamic memory for executable
code, permits the debugger to set breakpoints and utilize advanced
debugging tools that require the memory to be altered by the debugger
on the fly. This type of operation is common in computers, but
is rarely possible in legacy industrial controllers. |
|
|
|
| There
are two separate Flash memory devices available in the IPm
subsystem. All versions include an eight Megabyte program Flash.
This is a special type of Flash with sector sizes optimized for
program code. The IPm subsystem compresses program files in this
memory and expands them when they are transferred to the dynamic
memory for execution. This increases the speed and reduces the size
of the memory required to store programs. It is worth noting that
all standard IPm firmware
files take up approximately three Megabytes of this file system.
This includes the boot monitor, the LINUX kernel, all supporting
drivers, the VersaTRAK firmware (including ISaGRAF)
and all configuration files. This is an order of magnitude smaller
than a typical embedded Windows NT system of similar capabilities.
On some IPm controllers an optional data Flash disk may be added
to provided an additional 128 Megabytes of disk storage. IPm
firmware uses journaling and other techniques to insure the
reliability of file write operations. This is important in an industrial
controller that demands high reliability. These techniques insure
the integrity of the data in the file system even if there is a
sudden loss of power. |
|
|
|
|
| The
IPm subsystem includes battery-backed RAM memory. This memory is
used to store non-volatile variables such as process set-points
and counter values. All variables declared as “retained” in an ISaGRAF
program or in virtual I/O registers are stored in this memory.
This is an important feature of an industrial controller. Most PLCs
have such a feature, but computers do not. Battery-backed memory
is also used for datalogging because
it can be rewritten quickly, does not require erasure (like a Flash
memory) and will not wear out from frequent write cycles. |
|
|
|
| |
|
|
|
|
Click
here for a list of IPm firmware features. Several important
topics are also discussed below for your general interest. |
|
|
|
|
|
At
the core of the IPm firmware is a database of I/O registers. This
I/O database is the
central hub of the IPm with all applications reading and writing
I/O to it. All of the I/O drivers, the local I/O polling task,
ISaGRAF, the Sixlog Datalogging, the peer to peer I/O moves, and
various other applications exchange data with this shared resource
database. This technology is based upon the SIXNET “IOmap”, which
is a shared resource database for Windows applications, pioneered
by SIXNET in the mid 1990’s. SIXNET has put man years into developing
this technology to make it both flexible and high performance.
Licensees of the SIXNET LINUX development tools are provided with
an interface library to make calls into this database. It may
also be accessed from outside the IPM controller through any of
the I/O drivers, including the SIXNET Universal and the Modbus
protocols. Third party and custom applications are best designed
to use this database as a gateway to I/O values. In this manner,
application programs are insured of compatibility and interoperability
with all other applications running in the IPm controller.
Accessing
IPm I/O Registers from Your Own Application |
|
|
|
|
The
serial communications in the IPm controller has been enhanced
to include support for real-time features such as radio handshaking
(RTS as a transmit enable), and lead and lag message delays. (These
features are important for RS485 communications as well as wireless
media.) The serial port drivers have also been enhanced to permit
four serial ports to function simultaneously with complete independence.
The I/O drivers are GPL (General Public License) software. You
get the source code in case you require further enhancements. |
|
|
|
|
SIXNET
has fine-tuned the performance of the IPm
firmware to insure each application receives the time allocation
and priority it requires. Applications that are not in use do
not burden system resources, so there is no need to remove applications
from the firmware that you are not presently using. SIXNET will
continue to improve the performance of the IPm firmware and upgrades
will be provided. Please know that SIXNET has a strong policy
of maintaining upward compatibility with each new firmware release. |