Ограничения генерации кода структурированного текста

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

Программное обеспечение Simulink® PLC Coder™ не поддерживает:

  • Сложные типы данных

  • Типы данных String

  • Блоки модели - ссылки

  • Stateflow® порожденные машиной данные и события

  • Сообщения Stateflow

  • Ограниченная поддержка математических функций

  • Блок Merge

  • Блок Step

  • Блок Clock

  • Классы памяти состояния и сигнала

  • Переменные общего состояния между подсистемами

  • Блок For Each Subsystem

  • Сигналы переменного размера и параметры

  • Блок MATLAB System или системные объекты

  • Классы MATLAB®.

  • Simulink.CoderInfo Identifier назовите свойство с Simulink.Parameter и Simulink.Signal объекты.

  • Simulink.LookupTable, Simulink.Breakpoint, и Simulink.DualScaledParameter объекты.

  • Генерация кода для Сигналов Simulink, которые не решают к Simulink.Signal объект memory хранилища данных.

  • Генерация кода, когда UseRowMajorAlgorithm='on'.

  • Использование enum числовые значения типа данных для сравнения в блоках подсистемы модели. Используйте блок преобразования типа данных, чтобы выполнить перечисление к целочисленному преобразованию, выполнить числовое сравнение.

  • Использование специальных символов в комментариях. Это могло привести к ошибкам при импорте сгенерированного кода.

  • Сигнальные линии, названные с помощью Simulink.Signal отображения.

  • Половина типов данных с фиксированной точкой точности.

  • Генерация испытательного стенда для программного обеспечения использования моделей в цикле (SIL) режим симуляции.

  • Генерация испытательного стенда для процессора использования моделей в цикле (PIL) режим симуляции.

Ограничения

Язык структурированного текста имеет свойственные ограничения. В результате программное обеспечение Simulink PLC Coder имеет эти ограничения:

  • Генерация кода поддержек только для атомарных подсистем.

  • Поддержки автоматическая, встроенная, или допускающая повторное использование упаковка функции для генерации кода. Функциональная упаковка одноразового использования не поддерживается.

  • Не поддерживает блоки, которые требуют непрерывной семантики времени. Это ограничение включает блоки интегратора, блоки обнаружения пересечения нулем, физические блоки, такие как библиотечные блоки Simscape™ и так далее.

  • Не поддерживает типы данных указателя.

  • Не поддерживает рекурсию (включая рекурсивные события).

  • Не поддерживает неличные данные, например, NaN или Inf.

  • Не поддерживает MATLAB 64-битные целочисленные типы данных.

Отрицательный нуль

В типе данных с плавающей точкой, значение 0 имеет или положительный знак или знак минус. Арифметически, 0 равно -0, но некоторые операции чувствительны к знаку 0 входов. Примеры включают rdivideatan2atan2d, и angle. Деление 0 производит Inf, но деление -0 производит -Inf. Точно так же atan2d(0,-1) производит 180, но atan2d (-0,-1) производит -180.

Simulink PLC Coder хранит -0 как 0 потому что нет никакого представления -0 в IEC61131. Это приводит к делению -0 создание -Inf в Simulink, но Inf в IDE PLC. Точно так же atan2d(-0,-1) производит -180 в Simulink, но 180 в IDE PLC как -0 преобразован в 0.

Разделитесь на нуль

В Simulink деление на нуль производит любой Inf или наибольшее число для типа данных. В Codesys предназначаются для IDE, результатов деления на нуль в -1. Генерация кода при помощи испытательного стенда может привести к отказам верификации испытательного стенда из-за различия в результатах, делятся на нулевые операции.

Тип данных с фиксированной точкой операции многословные

Simulink PLC Coder не поддерживает генерацию кода для настроек параметров блоков, которые требуют типа данных с фиксированной точкой операции многословные. Например, блок квадратного корня, который имеет int32 целочисленный тип данных как установку типа входных и выходных данных Inherit via internal rule не поддерживается для генерации кода.

Оперативная генерация кода переменных

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