В данной статье будут рассмотрены необходимые шаги для создания устройства, отвечающего общим требованиям функциональной безопасности (ФБ). А также будет предложена архитектура простейшего «безопасного» (safety) генератора напряжения. Так как управляя напряжением, можно управлять практически любым устройством.
На сайте есть замечательные статьи (раз, два) на эту тему и книга на которых я вырос как инженер по ФБ.
Серия стандартов ГОСТ Р МЭК 61508 (IEC 61508) является базовой для Российских стандартов, определяющих порядок разработки устройств к которым предъявляются требования ФБ. Как известно, при разработке устройств, связанных с ФБ, существуют отраслевые стандарты регламентирующие порядок разработки (для железных дорог таковыми являются ГОСТ Р 52980-2015 «Требования к ПО», ГОСТ Р 34012-2016 «Общие требования к аппаратуре ЖД» и.т.д).
Согласно стандартов ГОСТ Р МЭК 61508 и IEC 61508 отказы делятся на 2 типа: систематические и случайные.
Систематические отказы определяются ошибками спецификации, проектирования, кодирования программного обеспечения, защита от них строится средствами организации жизненного цикла, к ним относится: верификация всех этапов жизненного цикла на соответствие требованиям, и валидация (валидационное тестирование) конечного продукта.
Случайные отказы рассчитываются как вероятности выхода из строя аппаратных средств, защита от них как правило определяется архитектурными решениями.
По стандартам все методы можно разделить на две группы: организационные и технические. К организационным методам относится: реализация жизненного цикла, применение стандартов кодирования, контроль производства аппаратных средств. К техническим методам относится: диверситет (с англ. diversity — разнообразие), резервирование, защита от окружающих воздействий, независимость и разделение компонентов, самодиагностика (каждый из данных методов необходимо описывать в рамках отдельных статей).
Основные организационные методы защиты от систематических ошибок описаны в приложениях ГОСТ Р МЭК 61508. В качестве примера рассмотрим систематическую составляющую программного обеспечения. При написании программного кода следует уделить большое внимание правилам кодирования и стандартам используемым при кодировании. Одним из известных стандартов при программировании на языке «СИ» является «MISRA-C», его применение улучшает безопасность системы. При этом существуют статические анализаторы ( анализаторами вообще полезно проверять любой код на предмет ошибок), способные проверять на соответствие стандарту «MISRA-C», одним из них является PVS-Studio .
Частичного диверситета программного обеспечения можно достигнуть за счет применения различных алгоритмов разработки ПО. Полный диверсистет программного обеспечения достигается только тогда, когда имеются две различные спецификации требований на программное обеспечение, разные команды программистов, разные средства программирования устройств при производстве т.е. данные программы должны быть абсолютно разными и процесс программирования устройств тоже должен быть разным. Так же при разработке программных средств необходимо защититься от ошибок инструментальных средств. Самым критичным ПО с точки зрения инструментальных средств являются компилятор в связке со стандартной библиотекой и линкер. Разнообразия инструментальных средств можно достигнуть, используя компиляторы «ARMCC» и «GCC». При этом некоторые версии «ARMCC» имеют сертификацию TUV на соответствие SIL-3 согласно IEC 61508, а «GCC» успешно применяется при разработке ПО Falcon 9 .
Рассмотрим результаты компиляции команды «Запись в порт»:
Команда на языке «СИ» (ISO/IEC 9899): MDR_PORTE->CLRTX =0x0040 | |
---|---|
«GCC» | «ARMCC» |
LDR r3, [pc, #20] | MOVS r0,#0x40 |
MOVS r2, #64; 0x40 | LDR r1,[pc,#16]; @0x0000072C |
STR r2, [r3, #36] | STR r0,[r1,#0x24] |
К сожалению, не доступен сервер mySQL