My team fixed some errors. Systemmodeler cannot handle operators 'not', 'and' and 'or' for boolean arrays. Solution is quite simple, you just have to substitute all occurrence of mentioned operators with functions, e.g:
replace:
disTAout:=TAout and disTransition;
with:
disTAout := Functions.ArrayUtils.arrayAnd(TAout, disTransition);
Here are new implemented functions:
within PNlib.Functions.ArrayUtils;
function arrayAnd "n-ary boolean AND"
input Boolean b1[:];
input Boolean b2[:];
output Boolean res[size(b1, 1)];
algorithm
for i in 1:size(b1, 1) loop
res[i] := b1[i] and b2[i];
end for;
annotation(Diagram(coordinateSystem(extent = {{-148.5, -105}, {148.5, 105}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})));
end arrayAnd;
within PNlib.Functions.ArrayUtils;
function arrayNot "n-ary boolean NOT"
input Boolean b[:];
output Boolean res[size(b, 1)];
algorithm
for i in 1:size(b, 1) loop
res[i] := not b[i];
end for;
annotation(Diagram(coordinateSystem(extent = {{-148.5, -105}, {148.5, 105}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})));
end arrayNot;
within PNlib.Functions.ArrayUtils;
function arrayOr "n-ary boolean OR"
input Boolean b1[:];
input Boolean b2[:];
output Boolean res[size(b1, 1)];
algorithm
for i in 1:size(b1, 1) loop
res[i] := b1[i] or b2[i];
end for;
annotation(Diagram(coordinateSystem(extent = {{-148.5, -105}, {148.5, 105}}, preserveAspectRatio = true, initialScale = 0.1, grid = {5, 5})));
end arrayOr;