IEC 61508, IEC 62304, ISO 26262 и проверки EN 50128

IEC 61508, IEC 62304, ISO 26262 и проверки EN 50128

IEC 61508, IEC 62304, ISO 26262 и проверки EN 50128 упрощают разработку и поиск и устранение неисправностей моделей, подсистем и соответствующего сгенерированного кода для приложений, чтобы выполнить IEC 61508-3, IEC 62304, ISO 26262-6 или EN 50128.

Model Advisor выполняет контроль лицензии Simulink® Check™, когда вы запускаете IEC 61508, IEC 62304, ISO 26262 или проверки EN 50128.

Эти проверки сертифицируются IEC Certification Kit для использования в процессах разработки, которые должны выполнить IEC 61508, ISO 26262, EN 50128 или производные стандарты.

Советы

Если ваше использование модели ссылка модели, запустите IEC 61508, IEC 62304, ISO 26262, или EN 50128 проверяет все модели, на которые ссылаются, прежде, чем запустить их на модели верхнего уровня.

Смотрите также

  • Осуществите проверки Model Advisor и рассмотрите результаты

  • IEC 61508-3 Функциональных безопасности электрических/электронных/программируемых электронных связанных с безопасностью систем - Часть 3: Требования к программному обеспечению

  • Программное обеспечение медицинского устройства IEC 62304 - процессы жизненного цикла программного обеспечения

  • Транспортные средства Дороги ISO 26262-6 - Функциональная безопасность - Часть 6: Разработка нового продукта: Программный уровень

  • Приложения Железной дороги EN 50128 - Коммуникации, сигнализация и системы обработки - программное обеспечение для системы управления и систем защиты

  • Документация Embedded Coder®:

Метрики модели дисплея и отчет сложности

ID проверки: mathworks.iec61508.MdlMetricsInfo

Отобразите число элементов и имя, уровень и глубину подсистем для модели или подсистемы.

Описание

IEC 61508, ISO 26262 и EN 50 128 стандартов рекомендуют использованию размера и метрик сложности оценить разрабатываемое программное обеспечение. Эта проверка предоставляет информацию о метриках для модели. Предоставленная информация может использоваться, чтобы смотреть, превышают ли размер или сложность модели или подсистемы данные пределы. Отображения проверки:

  • Счет блока для каждого типа блока Simulink, содержавшегося в данной модели, включая библиотеку, соединил блоки.

  • Количество Stateflow® создает в данной модели (если применимо).

  • Имя, уровень и глубина подсистем, содержавшихся в данной модели (если применимо).

  • Максимальная глубина подсистемы данной модели.

Доступный с Simulink Check.

Эта проверка требует лицензии Stateflow.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Нет данных Эти сводные данные предоставлены для вашей информации. Никакое действие не требуется.

Возможности и ограничения

  • Работает на моделях библиотеки.

  • Анализирует содержимое соединенных блоков библиотеки.

  • Анализирует содержимое во всех подсистемах маскированных.

  • Не позволяет исключения блоков или графиков.

Смотрите также

  • IEC 61508-3, Таблица B.9 (1) - предел размера Программного модуля, Таблица B.9 (2) - управление сложностью программного обеспечения

  • IEC 62304, 5.5.3 - критерии допустимости Программного блока

  • ISO 26262-6, Таблица 1 (1a) - Осуществление низкой сложности, Таблицы 3 (a) - Иерархической структуры компонентов программного обеспечения, Таблицы 3 (b) - Ограниченного размера компонентов программного обеспечения и Таблицы 3 (c) - Ограниченный размер интерфейсов

  • EN 50128, Таблица A.12 (8) - Ограниченный размер и сложность Функций, Стандартных подпрограмм и Методов и (9) Ограниченное количество параметров стандартной подпрограммы

  • sldiagnostics в документации Simulink

  • Цикломатическая сложность для диаграмм Stateflow (Simulink Coverage)

Проверяйте на несвязанные объекты

ID проверки: mathworks.iec61508.UnconnectedObjects

Идентифицируйте несвязанные линии, входные порты и выходные порты в модели.

Описание

Несвязанные объекты, вероятно, вызовут проблемы, распространяющие атрибуты сигнала, такие как данные, тип, шаг расчета и размерности.

Порты, соединенные с Ground или блоками Terminator, передают эту проверку.

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Существуют несвязанные линии, входные порты или выходные порты в модели или подсистеме.
  • Дважды кликните элемент в списке несвязанных элементов, чтобы определить местоположение элемента в диаграмме модели.

  • Соедините объекты, идентифицированные в результатах.

Возможности и ограничения

  • Работает на моделях библиотеки.

  • Не анализирует содержимое соединенных блоков библиотеки.

  • Анализирует содержимое во всех подсистемах маскированных.

  • Позволяет исключения блоков и графиков.

Смотрите также

  • IEC 61508-3, Таблица A.3 (3) - Языковое подмножество

  • IEC 62304, 5.5.3 - критерии допустимости Программного блока

  • ISO 26262-6, Таблица 1 (1b) - Использование языковых подмножеств, Таблицы 1 (1d) - Использование защитных методов реализации

  • EN 50128, таблица A.4 (11) - языковое подмножество

  • Основы сигнала (Simulink)

Проверяйте связанные с безопасностью настройки генерации кода

ID проверки: mathworks.do178.CodeSet

Проверяйте настройку модели на настройки генерации кода, которые могут повлиять на безопасность.

Описание

Эта проверка проверяет, что параметры конфигурации модели для генерации кода установлены оптимально для связанного с безопасностью приложения.

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Опция, чтобы включать комментарии в сгенерированный код очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью.Выберите Include comments (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр GenerateComments к on.
Опция, чтобы включать комментарии, которые описывают код для блоков, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. Выберите комментарии блока Simulink (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр SimulinkBlockComments к on.
Опция, чтобы включать комментарии, которые описывают код для блоков, устраненных из модели, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. Выберите Show eliminated blocks (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр ShowEliminatedStatement к on.
Опция, чтобы включать имена переменных параметра и исходных блоков как комментарии в описании структуры параметра модели в model_prm.h очищен. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. Выберите Verbose comments for 'Model default' storage class (Simulink Coder) на Code Generation> панель Comments в диалоговом окне Configuration Parameters или установите параметр ForceParamTrailComments к on.
Опция, чтобы включать описания требования, присвоенные блокам Simulink как комментарии, очищена. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. Выберите Requirements in block comments (Embedded Coder) на Code Generation> панель Custom comments в диалоговом окне Configuration Parameters или установите параметр ReqsInCode к on.
Опция, чтобы сгенерировать неличные данные и операции выбрана. Поддержка неличных чисел является несоответствующей для встроенных систем реального времени. Очистите Support: non-finite numbers (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportNonFinite к off.
Опция, чтобы сгенерировать и обеспечить целочисленные счетчики в течение абсолютного и прошедшего времени выбрана. Поддержка в течение абсолютного времени является несоответствующей для связанных с безопасностью систем в реальном времени. Очистите Support: absolute time (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportAbsoluteTime к off.
Опция, чтобы сгенерировать код для блоков, которые используют непрерывное время, выбрана. Поддержка в течение непрерывного времени является несоответствующей для связанных с безопасностью систем в реальном времени. Очистите Support: continuous time (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportContinuousTime к off.
Опция, чтобы сгенерировать код для невстроенных S-функций выбрана. Эта опция требует поддержки неличных чисел, которая является несоответствующей для связанных с безопасностью систем в реальном времени.Очистите Support: non-inlined S-functions (Embedded Coder) в диалоговом окне Configuration Parameters или установите параметр SupportNonInlinedSFcns к off.
Опция, чтобы сгенерировать вызовы функции модели, совместимые с основным программным модулем цели pre-R2012a GRT, выбрана. Эта опция является несоответствующей для связанных с безопасностью систем в реальном времени.Очистите Classic call call interface (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр GRTInterface к off.
Опция, чтобы сгенерировать model_update функция очищена. Наличие одного вызова функций выхода и обновления упрощает интерфейс до операционной системы реального времени (RTOS) и упрощает верификацию сгенерированного кода.Выберите Single output/update function (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр CombineOutputUpdateFcns к on.
Опция, чтобы сгенерировать model_terminate функция выбрана. Эта функция освобождает динамическую память, которая является неподходящей для связанных с безопасностью систем в реальном времени. Очистите Terminate function (Embedded Coder) на панели Code Generation в диалоговом окне Configuration Parameters или установите параметр IncludeMdlTerminateFcn к off.
Опция, чтобы регистрировать или состояние ошибки монитора очищена. Если вы не выбираете эту опцию, продукт Simulink Coder™ генерирует дополнительный код, который не может быть достижимым для тестирования. Выберите Remove error status field in real-time model data structure (Embedded Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SuppressErrorStatus к on.
Логгирование MAT-файла выбрано. Эта опция добавляет дополнительный код для логгирования тестовых точек к MAT-файлу, который не поддержан целевыми процессорами. Используйте эту опцию только в тестовых обвязках. Очистите MAT-file logging (Simulink Coder) в диалоговом окне Configuration Parameters или установите параметр MatFileLogging к off.
Опция, которая задает стиль для использования круглой скобки, установлена в Minimum (Rely on C/C++ operators precedence) или к Nominal (Optimize for readability). Для связанных с безопасностью приложений явным образом задайте приоритет с круглыми скобками. Установите параметр ParenthesesLevel к Maximum (Specify precedence with parentheses).
Опция, которая задает, сохранить ли порядок операнда, очищена. Эта опция увеличивает трассируемость сгенерированного кода.Установите параметр PreserveExpressionOrder к on.
Опция, которая задает, сохранить ли пустые первичные выражения условия в if операторы очищены. Эта опция увеличивает трассируемость сгенерированного кода.Установите параметр PreserveIfCondition к on.
Минимальное количество символов, заданных для генерации строк искажения имени, меньше четыре. Можно использовать эту опцию, чтобы минимизировать вероятность, что параметр и имена сигнала изменятся во время генерации кода, когда модель изменится. Использование этой опции помогает с минимизацией различий кода между версиями файла, уменьшая усилие выполнить рассмотрения кода. Установите Minimum mangle length (Embedded Coder) на Code Generation> панель Identifiers в диалоговом окне Configuration Parameters или параметре MangleLength к значению 4 или больше.

Результаты действия

Нажатие на Modify Settings конфигурирует настройки генерации типового кодекса, которые могут повлиять на безопасность.

Подпроверки зависят от результатов подпроверок, отмеченных с D в таблице результатов в окне Model Advisor.

Возможности и ограничения

  • Не работает на моделях библиотеки.

  • Не позволяет исключения блоков или графиков.

Смотрите также

Проверяйте использование блоков Математических операций

ID проверки: mathworks.iec61508.MathOperationsBlocksUsage

Идентифицируйте использование блоков Math Operation, которые могут повлиять на безопасность.

Описание

Эта проверка смотрит использование следующих блоков:

  • Abs

  • Assignment

  • Gain

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие

Модель или подсистема содержат блок Absolute Value, который работает с одним из следующего:

  • Булевская переменная или тип входных данных без знака. Это условие результаты в недостижимых трассах симуляции через модель и может привести к недостижимому коду

  • Значение целого числа со знаком с флажком Saturate on integer overflow, не установленным. Для типов данных со знаком абсолютное значение наиболее отрицательной величины проблематично, потому что это не является представимым, по условию вводят. Это условие приводит к переполнению в сгенерированном коде.

Если идентифицированный блок Absolute Value работает с булевым или типом данных без знака, выполнить одно из следующих действий:

  • Измените вход блока Absolute Value к входному типу со знаком.

  • Удалите блок Absolute Value из модели.

Если идентифицированный блок Absolute Value работает с типом данных со знаком в диалоговом окне Block Parameters > Signal Attributes, выберите Saturate on integer overflow.

Модель или подсистема содержат блоки Gain со значения 1 или единичная матрица.Если вы используете блоки Gain в качестве буферов, рассматриваете заменяющий их на блоки Signal Conversion.
Модель или подсистема могут содержать блоки Assignment с неполной инициализацией массивов, которые не имеют параметров блоков набором Action if any output element is not assigned к Error или Warning.

Установите параметры блоков Action if any output element is not assigned на одно из рекомендуемых значений:

  • Error, если блок Assignment не находится в подсистеме Итератора.

  • Warning, если блок Assignment находится в подсистеме Итератора.

Возможности и ограничения

  • Не работает на моделях библиотеки.

  • Анализирует содержимое соединенных блоков библиотеки.

  • Анализирует содержимое во всех подсистемах маскированных.

  • Позволяет исключения блоков и графиков.

Смотрите также

Проверяйте использование блоков Битовых операций и Логики

ID проверки: mathworks.iec61508.LogicBlockUsage

Идентифицируйте использование Logical Operator и блоков Bit Operations, которые могут повлиять на безопасность.

Описание

Эта проверка смотрит использование:

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Модель или подсистема содержат блок, вычисляя оператор отношения, который работает с различными типами данных. Условие может привести к непредсказуемым результатам в сгенерированном коде. Для идентифицированных блоков используйте типы общих данных в качестве входных параметров. Можно использовать блоки Data Type Conversion, чтобы изменить типы входных данных.
Модель или подсистема содержат блок, вычисляя оператор отношения, который не имеет булева выхода. Условие может привести к непредсказуемым результатам в сгенерированном коде. Для заданных блоков, на Block Parameters > панель Signal Attributes, устанавливает Output data type на boolean.
Модель или подсистема содержат блок, вычисляя оператор отношения, который использует == или ~ = оператор, чтобы сравнить сигналы с плавающей точкой. Использование этих операторов на сигналах с плавающей точкой ненадежно и непредсказуемо из-за проблем точности с плавающей точкой. Эти операторы могут привести к непредсказуемым результатам в сгенерированном коде.

Для идентифицированного блока выполнить одно из следующих действий:

  • Измените тип данных сигнала.

  • Переделайте модель, чтобы устранить использование == или ~ = операторы на сигналах с плавающей точкой.

Модель или подсистема содержат блок Logical Operator, который имеет вводы или выводы, которые не являются булевыми вводами или выводами. Блок может привести к сравнениям равенства или неравенства с плавающей точкой в сгенерированном коде.
  • Измените блок Logical Operator так, чтобы все вводы и выводы были булевской переменной. На Block Parameters > панель Signal Attributes, рассмотрите Require all inputs to have the same data type выбора и setting Output data type к boolean.

  • В диалоговом окне Configuration Parameters рассмотрите выбор Implement logic signals as boolean data (vs. double).

Возможности и ограничения

  • Не работает на моделях библиотеки.

  • Анализирует содержимое соединенных блоков библиотеки.

  • Анализирует содержимое во всех подсистемах маскированных.

  • Позволяет исключения блоков и графиков.

Смотрите также

Проверяйте использование блоков Подсистем и Портов

ID проверки: mathworks.iec61508.PortsSubsystemsUsage

Идентифицируйте использование Ports и блоков Subsystems, которые могут повлиять на безопасность.

Описание

Эта проверка смотрит использование:

  • Блоки For Iterator

  • Блоки While Iterator

  • Блоки If

  • Блоки Switch Case

Проверка не делает блоков флага Switch Case, которые не используют целочисленные типы данных или перечислимые величины для входных параметров. Выполнить hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem Действия (Simulink) – C, используйте целочисленный тип данных или перечислимую величину для входных параметров с блоками Switch Case.

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Модель или подсистема содержат блок For Iterator, который имеет переменные итерации. Это условие может привести к непредсказуемым временам выполнения или бесконечным циклам в сгенерированном коде.

Для идентифицированных блоков For Iterator выполнить одно из следующих действий:

  • Установите the Iteration limit source параметр на internal.

  • Если параметром Iteration limit source должен быть external, используйте Constant, Probe или блок Width как источник.

  • Снимите Набор следующий флажок i (iteration variable) externally.

  • Рассмотрите установку флажка Show iteration variable и наблюдайте значение итерации в процессе моделирования.

Модель или подсистема содержат блок While Iterator, который имеет неограниченные итерации. Это условие может привести к бесконечным циклам в сгенерированном коде.

Для идентифицированных блоков While Iterator:

  • Установите параметр Maximum number of iterations (-1 for unlimited) на положительное целочисленное значение.

  • Рассмотрите установку флажка Show iteration number port и наблюдайте значение итерации в процессе моделирования.

Модель или подсистема содержат блок If с, Если выражение или выражения Elseif, которые могут вызвать сравнения равенства или неравенства с плавающей точкой в сгенерированном коде.Измените выражения в блоке If, чтобы избежать сравнений равенства или неравенства с плавающей точкой в сгенерированном коде.
Модель или подсистема Еще содержат использование блока If выражения Elseif без условие.В диалоговом окне Block Parameters блока If выберите Show else condition. Еще соедините получившееся выходной порт с блоком If Action Subsystem.
Модель или подсистема содержат блок If с выходными портами, которые не соединяются с блоками If Action Subsystem.Проверьте, что выходные порты блока If соединяются с блоками If Action Subsystem.
Модель или подсистема содержат блок Switch Case без случая по умолчанию.В the Switch Case диалоговом окне блока Block Parameters выберите Show default case. Соедините получившийся выходной порт по умолчанию с блоком Switch Case Action Subsystem.
Модель или подсистема содержат блок Switch Case с выходным портом, который не соединяется с блоком Switch Case Action Subsystem.Проверьте, что выходные порты блоков Switch Case соединяются с блоками Switch Case Action Subsystem.

Модель или подсистема содержат один из следующих зависящих от времени блоков в подсистеме While Iterator или For Iterator:

  • Discrete Filter

  • Discrete FIR Filter

  • Discrete State-Space

  • Discrete Transfer Fcn

  • Discrete Zero-Pole

  • Transfer Fcn First Order

  • Transfer Fcn Lead or Lag

  • Transfer Fnc Real Zero

  • Discrete Derivative

  • Discrete Transfer Fcn (with initial outputs)

  • Discrete Transfer Fcn (with initial states)

  • Discrete Zero-Pole (with initial outputs)

  • Discrete Zero-Pole (with initial states)

В модели или подсистеме, рассмотрите удаление зависящих от времени блоков.

Возможности и ограничения

  • Не работает на моделях библиотеки.

  • Анализирует содержимое соединенных блоков библиотеки.

  • Анализирует содержимое во всех подсистемах маскированных.

  • Позволяет исключения блоков и графиков.

Смотрите также

Отобразите данные об управлении конфигурацией

ID проверки: mathworks.iec61508.MdlVersionInfo

Настройка модели дисплея и информация о контрольной сумме.

Описание

Эта проверка информатора отображает следующую информацию для текущей модели:

  • Номер версии модели

  • Автор модели

  • Дата

  • Контрольная сумма модели

Доступный с Simulink Check.

Результаты и рекомендуемые действия

УсловиеРекомендуемое действие
Невозможно получить информацию о версии и контрольной сумме модели. Эти сводные данные предоставлены для вашей информации. Никакое действие не требуется.

Возможности и ограничения

  • Не работает на моделях библиотеки.

  • Не позволяет исключения блоков или графиков.

Смотрите также