Modules are individual pieces of the MatPLC. Much like a real PLC, a
particular MatPLC installation consists of several modules, plugged into a
core (virtual backplane), working together to provide a useful application.
There are I/O modules, logic modules, user interface modules etc. Most of
this manual concerns the detailed instructions for one or another
particular kind of module.
What modules are run is usually configured in the PLC section of the config. It's also possible
to start modules as separate programs, even when they aren't listed in the
config; the plctest tool is usually
started this way.
Due to the high modularity of the MatPLC, most systems will consist of
several modules - perhaps between three and a dozen. Even the simplest of
demos typically have three or four modules.
Modules are organized according to their function. This organization is
purely to simplify orientation; once modules are running, there is no
particular distinction between them (except that they do different jobs, of
- Logic engines
- do the actual logic, decision making and calculation
of the MatPLC.
- connect to the real world, or sometimes to a slave PLC over a
bus or other connection.
- HMI (or MMI)
- interact with the operator.
Modules come in three basic types.
- These modules come with the MatPLC and are used without
modification. An example is the DSP module - you specify in the
matplc.conf file that you wish to use it and specify the
inputs, outputs and tuning parameters for the PID loop (for instance).
Most I/O modules also fall into this category.
- These modules do not directly come with the MatPLC.
Instead, they are created for a particular project using the tools
provided. An example is the IL language. You
write a PLC program in a file with the extension
.il, which is
converted into a module before starting.
The up-coming IEC 61131 translator will work the same way.
- This is the ultimate in specific modules; if none of the
existing modules is suitable for the job at hand, a completely new module
can be written in the C language. Such a module can do anything, but it is
much more difficult to write. It is essentially an extension of MAT
$Date: 2004/12/28 05:32:10 $