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 проверяет все модели, на которые ссылаются, прежде, чем запустить их на модели верхнего уровня.

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

  • 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

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

Описание

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

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

Доступный с 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 (Simulink 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 (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportAbsoluteTime на off.
Опция, чтобы сгенерировать код для блоков, которые используют непрерывное время, выбрана. Поддержка в течение непрерывного времени является несоответствующей для связанных с безопасностью систем в реальном времени. Очистите Support: continuous time (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр SupportContinuousTime на off.
Опция, чтобы сгенерировать код для невстроенных S-функций выбрана. Эта опция требует поддержки неличных чисел, которая является несоответствующей для связанных с безопасностью систем в реальном времени.Очистите Support: non-inlined S-functions (Simulink 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 (Simulink Coder) на панели Code Generation в диалоговом окне Configuration Parameters или установите параметр IncludeMdlTerminateFcn на off.
Опция, чтобы регистрировать или состояние ошибки монитора очищена. Если вы не выбираете эту опцию, продукт Simulink Coder™ генерирует дополнительный код, который не может быть достижимым для тестирования. Выберите Remove error status field in real-time model data structure (Simulink 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 (Simulink Coder) на Code Generation> панель Symbols в диалоговом окне Configuration Parameters или параметре MangleLength к значению 4 или больше.

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

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

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

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

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

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

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

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

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

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

Описание

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

  • Abs

  • “()” Присвоение

  • Усиление

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

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

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

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

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

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

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

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

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

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

Модель или подсистема содержат блоки Усиления со значения 1 или единичная матрица.Если вы используете блоки Усиления в качестве буферов, рассматриваете заменяющий их на блоки Преобразования Сигнала.
Модель или подсистема могут содержать блоки Присвоения с неполной инициализацией массивов, которые не имеют параметров блоков набором 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

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

Описание

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

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

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

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

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

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

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

Модель или подсистема содержат блок Logical Operator, который имеет вводы или выводы, которые не являются булевыми вводами или выводами. Блок может привести к сравнениям равенства или неравенства с плавающей точкой в сгенерированном коде.
  • Измените блок Logical Operator так, чтобы все вводы и выводы были булевской переменной. На Параметрах блоков> панель Атрибутов Сигнала, рассмотрите 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

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

Описание

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

  • Для блоков Итератора

  • В то время как Итератор блокируется

  • Если блоки

  • Переключите блоки Случая

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

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

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

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

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

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

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

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

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

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

Для идентифицированного, В то время как Итератор блокируется:

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

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

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

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

  • Дискретный фильтр

  • Дискретный КИХ-фильтр

  • Дискретное пространство состояний

  • Дискретная передача Fcn

  • Дискретный нулевой полюсный

  • Передайте первый порядок Fcn

  • Передайте вывод Fcn или задержку

  • Передайте действительный нуль Fnc

  • Дискретная производная

  • Дискретная Передача Fcn (с начальными выходными параметрами)

  • Дискретная Передача Fcn (с начальными состояниями)

  • Дискретный Нулевой полюсный (с начальными выходными параметрами)

  • Дискретный Нулевой полюсный (с начальными состояниями)

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

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

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

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

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

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

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

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

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

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

Описание

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

  • Образцовый номер версии

  • Образцовый автор

  • Дата

  • Образцовая контрольная сумма

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

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

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

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

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

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

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