Программное обеспечение Simulink ® PLC Coder™ не поддерживает:
Сложные типы данных
Строковые типы данных
Ссылочные блоки модели
Данные и события, зависящие от машинного потока Stateflow ®
Сообщения о потоке состояния
Ограниченная поддержка математических функций
Объединить блок
Шаговый блок
Тактовый блок
Классы хранения сигналов и состояний
Общие переменные состояния между подсистемами
Для каждого блока подсистемы
Сигналы и параметры переменного размера
MATLAB Системный блок или системные объекты
Классы MATLAB ®.
Simulink.CoderInfo
Identifier свойство name с Simulink.Parameter и Simulink.Signal объекты.
Simulink.LookupTable, Simulink.Breakpoint, и Simulink.DualScaledParameter объекты.
Создание кода для сигналов Simulink, которые не разрешаются в Simulink.Signal объект памяти хранилища данных.
Создание кода при UseRowMajorAlgorithm='on'.
Использование enum числовые значения типа данных для сравнения внутри блоков подсистемы модели. Блок преобразования типа данных используется для преобразования перечисления в целое число для числового сравнения.
Использование специальных символов в комментариях. Это может привести к ошибкам при импорте созданного кода.
Сигнальные линии с именем Simulink.Signal сопоставления.
Типы данных с фиксированной точкой половинной точности.
Создание Testbench для моделей с использованием режима моделирования ПО в цикле (SIL).
Создание тестов для моделей с использованием режима моделирования процессора в цикле (PIL).
Структурированный текстовый язык имеет неотъемлемые ограничения. В результате программное обеспечение Simulink PLC Coder имеет следующие ограничения:
Поддерживает генерацию кода только для атомных подсистем.
Поддерживает автоматическую, встроенную или многократно используемую упаковку функций для создания кода. Упаковка неиспользуемых функций не поддерживается.
Не поддерживает блоки, требующие непрерывной семантики времени. Это ограничение включает в себя блоки интегратора, блоки обнаружения пересечения нуля, физические блоки, такие как блоки библиотеки Simscape™ и так далее.
Не поддерживает типы данных указателей.
Не поддерживает рекурсию (включая рекурсивные события).
Не поддерживает, например, неокончательные данные NaN или Inf.
Не поддерживает 64-разрядные целочисленные типы данных MATLAB.
В типе данных с плавающей запятой значение 0 имеет либо положительный, либо отрицательный знак. Арифметически, 0 равно -0, но некоторые операции чувствительны к знаку входа 0. Примеры: rdivide, atan2, atan2d, и angle. Разделение по 0 производит Inf, но разделение на -0 производит -Inf. Аналогично, atan2d(0,-1) производит 180, но atan2d (-0,-1) производит -180.
Хранилища Simulink PLC Coder -0 как 0 потому что нет представления -0 в IEC61131.This приводит к делению на -0 производство -Inf в Simulink, но Inf в ПЛК IDE. Аналогично, atan2d(-0,-1) производит -180 в Simulink, но 180 в ПЛК IDE в качестве -0 преобразуется в 0.
В Simulink деление на ноль дает либо Inf или наибольшее число для типа данных. В целевой среде IDE Codesys деление на ноль приводит к -1. Генерация кода с помощью testbench может привести к сбоям проверки testbench из-за разницы в результатах операций деления на ноль.
Simulink PLC Coder не поддерживает генерацию кода для параметров блока, которые требуют многословных операций типа данных с фиксированной точкой. Например, квадратный корневой блок, который имеет int32 целочисленный тип данных в качестве входного и выходного типа данных установки Inherit via internal rule не поддерживается для создания кода.
Семантика входного аргумента может быть нарушена, если типы данных между входами и выходами различаются по количеству измерений. Чтобы устранить проблему, задайте размер входной переменной равным -1. Дополнительные сведения см. в разделе Объявление входов и выходов переменного размера.