|
libFAUDES
Sections
Functions
|
Controllable SublanguagesThe notion of controllability was originally introduced by P.J. Ramadge and W.M. Wonham, e.g. [S1]:
Consider two languages L and K over a common alphabet Sigma,
The definition addresses the situations were K is the closed-loop behaviour for a plant which is modelled by L. If, for some past sequence of events s in the closed-loop, the uncontrollable event o ∈ Sigma_uc is accepted by the plant Closure(L), then it must be also be acepted in closed loop Closure(K).
A fundamental result presented in [S1] is that
for two languages L, E, E ⊆ L, and a set
of uncontrollable events Sigma_uc,
the set of all
controllable sublanguages K ⊆ E forms
a complete upper semi-lattice. In particular,
the union over all controllable sublanguages K ⊆ E is
controllable itself. It is referred to as the supremal controllable sublanguage
An example is given at the main page of the Synthesis plug-in. IsControllableTests controllablity condition.
Signature:
IsControllable(+In+ Generator GPlant, +In+ EventSet ACntrl, +In+ Generator GCand, +Out+ Boolean BRes) Detailed description: This function tests controllability of L(GCand) w.r.t. (L(GPlant),Sigma_uc), where the set of uncontrollable events Sigma_uc is specified as the complement of the parameter ACntrl. Since the definition of controllability exclusively refers to the closure of the relevant languages, this function can be also used to test controllability of Lm(GCand) w.r.t. (Lm(GPlant),Sigma_uc), provided that the specified generators are nonblocking. The current implementation performs the test by inspecting the transitions in the product composition L(GPlant)∩L(GCand). If GCand disables a transition in GPlant that is labled with an uncontrollable event, the function returns "false". Else, it returns "true". Example: Consider the very simple machine scenario. We have
In the product composition, the state B|B|F disables the uncontrollable event beta_1 since the buffer is full and cannot take any workpiece. However, in the corresponding plant state B|B, the event beta_1 is enabled, since machine M1 is busy and may on completion pass on the workpiece. Thus, the specification is not controllable w.r.t. the plant and the function IsControllable returns "false" when applied to GPlant and GSpec. Parameter Conditions: This implementation requires the alphabets of plant and specification to match. Furthermore, both generators must be deterministic. Effectively, the specification is intersected with the plant language.
SupConNBComputes the supremal controllable sublanguage.
Signature:
SupConNB(+In+ System GPlant, +In+ Generator GSpec, +Out+ Generator GSupervisor) Detailed description:
Given a plant L = Lm(GPlant) and a
specification E = Lm(GSpec), this function
computes the supremal controllable sublanguage K ⊆ E∩L:
The result is returned as a trim deterministic generator GSupervisor.
The latter can be employed as a supervisory controller, where the closed-loop
configuration is formally modelled by the intersection
L∩K. For the case at hand we have
K ⊆ L
and the formal
nonblocking condition
Alternatively, the marking can be left exclusively to the plant, with a closed-loop behaviour modelled by L∩Closure(K). Here, nonblocking is implied by the additional condition that K must be relatively prefix-closed w.r.t. L, i.e. K = Closure(K)∩L; see also IsRelativelyPrefixClosed. In the situation of minimally restrictive supervision, the latter condition is implied by the specification E being relatively marked w.r.t. the plant L, see also IsRelativelyMarked. Parameter Conditions: This implementation requires the alphabets of plant and specification to match. Furthermore, both generators must be deterministic. Effectively, the specification is intersected with the plant language.
SupConComputes the supremal controllable sublanguage.
Signature:
SupCon(+In+ System GPlant, +In+ Generator GSpec, +Out+ Generator GSupervisor) Detailed description:
Given a plant L = L(GPlant) and a
specification E = L(GSpec), this function
computes the supremal controllable sublanguage K ⊆ E∩L:
In contrast to the function SupConNB, this version considers generated languages of plant and specification and not the marked languages. The result is returned as an accessible and deterministic but in general blocking generator L(GSupervisor).
Parameter Conditions: This implementation requires the alphabets of plant and specification to match. Furthermore, both generators must be deterministic. Effectively, the specification is intersected with the plant language.
IsRelativelyPrefixClosedTest for relative prefix-closedness.
Signature:
IsRelativelyPrefixClosed(+In+ Generator GPlant, +In+ Generator GCand, +Out+ Boolean BRes) Detailed description:
A language K is relatively closed w.r.t. a language
L, if K can be recovered from its closure and L.
Formally:
Here, QPlant_m and QCand_m refer to the marked states of GPlant and GCand, respectively. The function returns "true" if both conditions are fulfilled. Example: Consider the very simple machine scenario.
The string alpha_1 beta_1 is within the languages generated by the supervisor and the plant respectively. It is not within the language marked by the supervisor, since that language is a subset of the language marked by the specification and thus requires the buffer to be empty. In particular, the string alpha_1 beta_1 witnesses a violation of relative closedness condition and the function IsRelativelyPrefixClosed returns "false" when applied to GPlant and GSupervisor. Parameter Conditions: This implementation requires the alphabets of both generators to match. Furthermore, both specified generators must be deterministic and nonblocking.
IsRelativelyMarkedTest for relative marking.
Detailed description:
A language K is relatively marked w.r.t. a language
L, if its marking is implied by L.
Formally:
Here, QPlant_m and QCand_m refer to the marked states of GPlant and GCand, respectively. The function returns "true" if the condition is fulfilled. Example: Consider the very simple machine scenario; see also IsControllable. In the product composition of plant and specification the state I|I|F is not marked, since the specification required the buffer to be empty. However, the corresponding I|I plant state is marked. The string alpha_1 beta_1 therefore is in Lm(GPlant)∩L(GSpec) but not in Lm(GSpec). Thus, the condition is violated and the function IsRelativelyMarked returns "false" when applied to GPlant and GSpec. Parameter Conditions: This implementation requires the alphabets of both generators to match. Furthermore, both specified generators must be deterministic and nonblocking.
|
libFAUDES 2.18b --- 2010-12-17 --- plugins "example synthesis observer diagnosis hiosys iosystem multitasking timed simulator iodevice luabindings"