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®:
Стандарт IEC 61508 (Embedded Coder)
Стандарт IEC 62304 (Embedded Coder)
Стандарт ISO 26262 (Embedded Coder)
Стандарт 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 . |
Опция, чтобы включать имена переменных параметра и исходных блоков как комментарии в описании структуры параметра модели в очищен. Комментарии обеспечивают хорошую трассируемость между кодом и моделью. | Выберите 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 . |
Опция, чтобы сгенерировать функция очищена. Наличие одного вызова функций выхода и обновления упрощает интерфейс до операционной системы реального времени (RTOS) и упрощает верификацию сгенерированного кода. | Выберите Single output/update function (Simulink Coder) на Code Generation> панель Interface в диалоговом окне Configuration Parameters или установите параметр CombineOutputUpdateFcns к on . |
Опция, чтобы сгенерировать функция выбрана. Эта функция освобождает динамическую память, которая является неподходящей для связанных с безопасностью систем в реальном времени. | Очистите 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.
Не работает на моделях библиотеки.
Не позволяет исключения блоков или графиков.
IEC 61508-3, Таблица A.3 (3) 'Языковое подмножество'
IEC 62304, 5.5.3 - критерии допустимости Программного блока
ISO 26262-6, Таблица 1 (1b) 'Использование языковых подмножеств'
EN 50128, таблица A.4 (11) 'языковое подмножество'
hisl_0038: Параметры конфигурации> Генерация кода> Комментарии (Simulink)
hisl_0039: Параметры конфигурации> Генерация кода> Интерфейс (Simulink)
hisl_0047: Параметры конфигурации> Генерация кода> Стиль кода (Simulink)
hisl_0049: Параметры конфигурации> Генерация кода> Идентификаторы (Simulink)
Параметры конфигурации модели: комментарии (Simulink Coder)
Параметры конфигурации модели: комментарии (Simulink Coder)
Параметры конфигурации модели: идентификаторы генерации кода (Simulink Coder)
Параметры конфигурации модели: интерфейс генерации кода (Simulink Coder)
Параметры конфигурации модели: стиль кода (Embedded Coder)
ID проверки: mathworks.iec61508.MathOperationsBlocksUsage
Идентифицируйте использование блоков Math Operation, которые могут повлиять на безопасность.
Эта проверка смотрит использование следующих блоков:
Abs
Assignment
Gain
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок 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 на одно из рекомендуемых значений:
|
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
IEC 61508-3, Таблица A.3 (3) - Языковое подмножество, Таблица A.4 (3) - Безопасное программирование, Таблица A.3 (2) - язык программирования Со строгим контролем типов, Таблица B.8 (3) - Анализ Потока управления
IEC 62304, 5.5.3 - критерии допустимости Программного блока
ISO 26262-6, Таблица 1 (1b) - Использование языковых подмножеств, Таблицы 1 (1d) - Использования защитных методов реализации, Таблицы 9 (1e) - анализ Потока управления
EN 50128, таблица A.4 (11) - языковое подмножество, таблица A.3 (1) - безопасное программирование, EN 50128, таблица A.4 (8) - язык программирования со строгим контролем типов, таблица A.19 (3) - анализ потока управления
MISRA C:2012, Dir 4.1
MISRA C:2012, правило 9.1
hisl_0002: Использование блоков Математической функции (rem и обратная величина)
hisl_0004: Использование блоков Математической функции (натуральный логарифм и основа 10 логарифмов)
ID проверки: mathworks.iec61508.LogicBlockUsage
Идентифицируйте использование Logical Operator и блоков Bit Operations, которые могут повлиять на безопасность.
Эта проверка смотрит использование:
Блоки, которые вычисляют операторы отношения, включая Relational Operator, Compare To Constant, Compare To Zero, Detect Change и блоки If
Блоки Logical Operator
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Модель или подсистема содержат блок, вычисляя оператор отношения, который работает с различными типами данных. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для идентифицированных блоков используйте типы общих данных в качестве входных параметров. Можно использовать блоки Data Type Conversion, чтобы изменить типы входных данных. |
Модель или подсистема содержат блок, вычисляя оператор отношения, который не имеет булева выхода. Условие может привести к непредсказуемым результатам в сгенерированном коде. | Для заданных блоков, на Параметрах блоков> панель Атрибутов Сигнала, устанавливает Output data type на boolean . |
Модель или подсистема содержат блок, вычисляя оператор отношения, который использует == или ~ = оператор, чтобы сравнить сигналы с плавающей точкой. Использование этих операторов на сигналах с плавающей точкой ненадежно и непредсказуемо из-за проблем точности с плавающей точкой. Эти операторы могут привести к непредсказуемым результатам в сгенерированном коде. | Для идентифицированного блока выполнить одно из следующих действий:
|
Модель или подсистема содержат блок Logical Operator, который имеет вводы или выводы, которые не являются булевыми вводами или выводами. Блок может привести к сравнениям равенства или неравенства с плавающей точкой в сгенерированном коде. |
|
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
IEC 61508-3, Таблица A.3 (2) 'Язык программирования со строгим контролем типов’
IEC 61508-3, Таблица A.3 (3) 'Языковое подмножество'
IEC 61508-3, Таблица A.4 (3) 'Безопасное программирование'
IEC 62304, 5.5.3 - критерии допустимости Программного блока
ISO 26262-6, Таблица 1 (1b) 'Использование языковых подмножеств'
ISO 26262-6, Таблица 1 (1c) 'Осуществление строгого контроля типов'
EN 50128, таблица A.4 (11) 'языковое подмножество'
EN 50128, таблица A.4 (8) 'язык программирования со строгим контролем типов'
EN 50128, таблица A.3 (1) 'безопасное программирование'
MISRA C:2012, Dir 1.1
MISRA C:2012, правило 10.1
hisl_0016: Использование блоков, которые вычисляют операторы отношения (Simulink)
hisl_0017: Использование блоков, которые вычисляют операторы отношения (2) (Simulink)
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 выполнить одно из следующих действий:
|
Модель или подсистема содержат блок While Iterator, который имеет неограниченные итерации. Это условие может привести к бесконечным циклам в сгенерированном коде. mo |
Для идентифицированных блоков While Iterator:
|
Модель или подсистема содержат блок 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:
| В модели или подсистеме, рассмотрите удаление зависящих от времени блоков. |
Не работает на моделях библиотеки.
Анализирует содержимое соединенных блоков библиотеки.
Анализирует содержимое во всех подсистемах маскированных.
Позволяет исключения блоков и графиков.
IEC 61508-3, Таблица A.3 (3) - Языковое подмножество, Таблица A.4 (3) - Безопасное программирование
IEC 62304, 5.5.3 - критерии допустимости Программного блока
ISO 26262-6, Таблица 1 (1b) - Использование языковых подмножеств, Таблицы 1 (1d) - Использование защитных методов реализации
EN 50128 - таблица A.4 (11) - языковое подмножество, таблица A.3 (1) - безопасное программирование
MISRA C:2012, правило 14.2
MISRA C:2012, правило 16.4
MISRA C:2012, Dir 4.1
hisl_0006: Использование того, В то время как Итератор блокируется (Simulink)
hisl_0007: Использование Для Итератора или В то время как подсистемы Итератора (Simulink)
hisl_0011: Использование блоков Случая Переключателя и блоков Subsystem Действия (Simulink)
ID проверки: mathworks.iec61508.MdlVersionInfo
Настройка модели дисплея и информация о контрольной сумме.
Эта проверка информатора отображает следующую информацию для текущей модели:
Номер версии модели
Автор модели
Дата
Контрольная сумма модели
Доступный с Simulink Check.
Условие | Рекомендуемое действие |
---|---|
Невозможно получить информацию о версии и контрольной сумме модели. | Эти сводные данные предоставлены для вашей информации. Никакое действие не требуется. |
Не работает на моделях библиотеки.
Не позволяет исключения блоков или графиков.
IEC 61508-3, Таблица A.8 (5) – Управление конфигурированием ПО
IEC 62304-8 – процесс Управления конфигурированием ПО
ISO 26262-8, Пункт 7 – управление конфигурацией
EN 50128, таблица A.9 (5) – управление конфигурированием ПО
Как Simulink помогает вам управлять версиями модели (Simulink).
Model Change Log
в документации Simulink Report Generator™
Simulink.BlockDiagram.getChecksum
в документации Simulink
Simulink.SubSystem.getChecksum
в документации Simulink