Linux runtime: overrun detection for real-time timers and for plc execution.
If real-time timer wakes-up PLC thread too late (10% over period), then
warning is logged.
If PLC code (IO retreive, execution, IO publish) takes longer than requested
PLC execution cycle, then warning is logged, and CPU hoogging is mitigated
by delaying next PLC execution a few cylces more until having at least
1ms minimal idle time.
// widget_switch.ysl2
widget_desc("ListSwitch") {
longdesc
||
ListSwitch widget displays one item of an HMI:List depending on value of
given variable. Main element of the widget must be a clone of the list or
of an item of that list.
Given variable's current value is compared to list items
label. For exemple if given variable type
is HMI_INT and value is 1, then item with label '1' will be displayed.
If matching variable of type HMI_STRING, then no quotes are needed.
For exemple, 'hello' match HMI_STRING 'hello'.
||
shortdesc > Displays item of an HMI:List whose label matches value.
path name="value" accepts="HMI_INT,HMI_STRING" > value to compare to labels
}
widget_class("ListSwitch"){
||
frequency = 5;
||
}
widget_defs("ListSwitch") {
// cloned element must be part of a HMI:List or a HMI:List
const "targetid", "substring-after($hmi_element/@xlink:href,'#')";
const "from_list", "$hmi_lists[(@id | */@id) = $targetid]";
||
dispatch: function(value) {
this.element.href.baseVal = "#"+hmi_widgets["«$from_list/@id»"].items[value];
},
||
}