Both languages include a concept of time. ControlH implicitly deals with time-varying signals and explicitly declares process periods. MetaH accepts real-time scheduling requirements that must be met in the assembled application, and a tool is available to perform a schedulability analysis to determine whether these requirements will in fact be met in all cases.
A process entity appears in both languages. ControlH can be used to specify a name and a period for a process, and to specify how operators are partitioned among processes. MetaH allows a specification of a number of other properties, such as the processor on which that process is to execute, security rights and capabilities, stack sizes, etc. (there are currently 17 MetaH process attributes that can be set by the user).
Most ControlH operators translate to one or two Ada subprograms (very low-level and certain highly optimized operators may translate into in-line code, e.g. a scalar gain). The subprograms are itemized in the MetaH specification so that the MetaH user has some limited visibility into the composition of each process. This is useful during discussions between the GN&C and software engineers about possible time and space trade-offs. The ease with which schedulability analysis can be related back to the original ControlH specification greatly facilitates the study of complex time/space/performance/robustness trade-offs.
State variables appear throughout a typical ControlH specification, though usually only explicitly at the lowest level of detail, inside predeclared operators (e.g. integrators). A ControlH state variable translates to a statically allocated Ada variable in the generated code, which is identified in the MetaH specification of that Ada source code as a MetaH port. MetaH ports are also used for input and output signals, both those between operators assigned to different processes and inputs and outputs to the overall GN&C algorithm. A MetaH port can be connected to other ports in other processes, and such connections are used to communicate signal samples and state updates. That is, rather than generating a central vector of all state and signal variables, the ControlH toolset produces distributed variable declarations that are connected in the generated MetaH specifications. The MetaH toolset generates the code to move values between these signal variables. Advantages of this approach are that the MetaH user can move software processes between various hardware processors without any changes to the GN&C specification or generated code; and visibility is provided to state and signal values during testing.