Когда Simulink® PLC Coder™ встречается с математической функцией, которая не является внутренней, она генерирует Структурированный Текст путем замены неинтринической функции на эквивалентную IEC-61131 совместимую внутреннюю функцию. В таких случаях входа значение, которое больше, чем разрешённый вход, область значений, вызывает переполнение и генерирует NaN
значение.
Для примера гиперболическая tan не является внутренней функцией. Simulink PLC Coder использует exp в сгенерированном коде, чтобы представлять tanh. Более конкретно, он использует (exp(2*x)-1)/(exp(2*x)+1). Для больших значений x эта функция переполнена. Проблему можно решить, добавив код валидации или используя блоки перед вызовом функции tanh, чтобы проверить, что область значений входных параметров находится в пределах допустимых значений. В MATLAB®, tanh(x) для x>19 равен 1.0000. Поэтому, если x>19, верните значение 1,0000.