PLCTOOLS is a complete environment to design and validate software controllers, as known as programmable logic controller (PLC), based on IEC 61131-3 Function Block Diagram (FBD). It combines MetaEnv and SIMULINK to supply control engineers with a complete and formal developing environment. It is complete since PLCs can be designed and simulated together with the environment that they control. It is formal since modeled controllers are given formal semantics through HLTPNs (High Level Timed Petri Nets).
SIMULINK supplies the framework to model controlled elements, but also the glue to make the complete simulation or control/controlled elements happen. MetEnv supplies the infrastructure to automate the transformation between HLTPNs and FBD and Vice Versa. Obtained HLTPNs are equivalent functionally to modeled controllers and are used to analyze and simulate designed controllers, displaying the obtained results in terms of suitable FBD blocks animations.
MetEnv imposes that the correspondences between HLTPNs and FBD blocks are stated through transformation rules. Each rule comprises two graph grammar productions: The ASGG (Abstract Syntax Graph Grammar) production, which describes how the global HLTPN should be modified accordingly.
In this case, FBD does not come with a fixed set of syntactic elements, but users are free to add as many new blocks as they want. The language define is only basic blocks, like OR, AND and similar simple elements, bust users can add their own ones. They can both aggregate existing blocks to obtain composite agglomerates, that is, new blocks which become for reuse, or design new computational blocks.
PLCTOOLS lets users extend the set of FBD blocks, but they must specify their behavior in HLTPNs terms. The environment extends also the set of rules that create the HLTPN that corresponds to the designed model once a new block is added. Users do not deal with graph grammars directly, but must supply only the concrete syntax ascribed to the block and the foreseen HLTPN, in this case Petri Nets are not used as hidden formal engine, but they become also a means to specify the behavior associated with new blocks.