Simulink® Программное обеспечение PLC Coder™ не поддерживает:
Комплексные данные
Строки данных
Моделируйте опорные блоки
Stateflow® машинно-родительские данные и события
Сообщения Stateflow
Ограниченная поддержка математических функций
Объедините блок
Шаговый блок
Блок синхроимпульса
Классы памяти сигналов и состояний
Переменные общего состояния между подсистемами
For Each Subsystem блок
Сигналы и параметры переменного размера
MATLAB System блок или системные объекты
MATLAB® классы.
The Simulink.CoderInfo
Identifier
свойство name с Simulink.Parameter
и Simulink.Signal
объекты.
The Simulink.LookupTable
, Simulink.Breakpoint
, и Simulink.DualScaledParameter
объекты.
Генерация кода для сигналов Simulink, которые не разрешаются к Simulink.Signal
объект памяти хранилища данных.
Генерация кода при UseRowMajorAlgorithm='on'
.
Использование enum
числовые значения типа данных для сравнения внутри блоков подсистемы модели. Используйте блок преобразования типа данных, чтобы выполнить перечисление в целое число, чтобы выполнить числовое сравнение.
Использование специальных символов в комментариях. Это может привести к ошибкам при импорте сгенерированного кода.
Сигнальные линии с именем using Simulink.Signal
отображения.
Половинные типы данных с фиксированной точкой.
Генерация тестовых данных для моделей, использующих режим симуляции ПО в цикле (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
в PLC IDE. Точно так же atan2d(-0,-1)
производит -180
в Simulink, но 180
в среде PLC IDE в качестве -0
преобразуется в 0
.
В Simulink деление на нуль производит либо Inf
или наибольшее число для типа данных. В целевой IDE Codesys деление на ноль приводит к -1
. Генерация кода при помощи testbench может привести к отказам верификации testbench из-за различия в результатах деления на нулевые операции.
Simulink PLC Coder не поддерживает генерацию кода для настроек параметров блоков, которые требуют многословных операций с типом данных с фиксированной точкой. Например, квадратный корневой блок, который имеет целочисленный тип данных int32 в качестве значения типа входных и выходных данных Inherit via internal rule
не поддерживается для генерации кода.
Семантика аргументов Inplace может быть прервана, если типы данных между входами и выходами различаются по количеству размерностей. Чтобы исправить проблему, установите размер переменного входа равным -1
. Для получения дополнительной информации см. «Объявление входных параметров и выходов переменного размера».