Генерация кода

Общие ограничения

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

Семантика аргументов Inplace может быть прервана, если типы данных между входами и выходами различаются по количеству размерностей. Чтобы исправить проблему, установите размер переменного входа равным -1. Для получения дополнительной информации см. «Объявление входных параметров и выходов переменного размера».