exponenta event banner

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

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

Программное обеспечение 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 не поддерживается для создания кода.

Создание кода Inplace Variables

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