AGV、機械臂的設計過程中,為了CR或CE或客戶要求,通常需要增加急停、使能、保護性停止、速度控制、安全門鎖等安全回路,在設計這些回路時,有的單位選擇的是施耐德、Sick或西門子的安全PLC,而且可能會進行二次開發(fā),有些單位會使用DSP、ARM、FPGA等芯片自己開發(fā)安全控制板或驅動器。
說到這里,不得不說當前行業(yè)內(nèi)存在一個很普遍的問題,即是很多第三方普遍只評估硬件方面是否符合PL的要求(PL計算),對軟件方面則不聞不問。這樣做其實是有極大的風險,很容易被業(yè)主單位或其他第三方機構質(zhì)疑,而無法滿足特定要求。不管二次開發(fā)的應用軟件還是嵌入式軟件,作為安全回路的核心控制邏輯,其軟件安全性至關重要。本文將介紹在軟件開發(fā)中應注意的關鍵點。
要向各位看官澄清的是安全軟件的開發(fā)為什么要滿足特定的要求?能不能按照企業(yè)平常的開發(fā)過程開發(fā)。眾所周知,不管使用什么語言、什么模型、什么算法或者什么人開發(fā),軟件內(nèi)不可避免的會殘留很多bug,這些bug只要在特定的條件下,就會導致軟件運行產(chǎn)生錯誤,也叫系統(tǒng)性失效。對于非安全應用來說,只需要及時修復即可,但是,對于安全應用來說,就有可能導致安全功能無法執(zhí)行或則執(zhí)行錯誤,進而引起人員傷亡等事故。因此,安全相關軟件的開發(fā)必須要慎之又慎,相關安全標準中特定要求其實就是針對軟件開發(fā)過程的中的要求,目的就是盡可能減少殘留在軟件中的Bug,以達到提高AGV、機器人安全性的期望。下面將會詳細介紹一些其中的關鍵點,供各位看官理解。
一是適用標準的選擇
對于二次開發(fā)的應用軟件來說,如果業(yè)主單位或技術標準中要求達到相應的PL等級,則軟件在開發(fā)過程中遵循ISO 13849-1-2015 中4.6節(jié)的應用軟件相關的要求即可。對于嵌入式軟件來說,如果PL的要求在a~d之間,則按照遵循ISO 13849-1-2015 中4.6節(jié)的嵌入式軟件開發(fā)要求即可;如果PL要求是e,則必須遵守IEC61508-3中的要求開發(fā)。此外,對于安全控制板或模塊來說,可以單獨作為產(chǎn)品售賣或應用在多個系列產(chǎn)品上,一般推薦IEC61508,ISO13849以及IEC62061這幾個標準都要滿足。
二是開發(fā)模型的選擇
目前行業(yè)內(nèi)常用的有V模型、瀑布模型、敏捷開發(fā)模型、螺旋式開發(fā)模型等,但是安全軟件的開發(fā)是趨向于保守的,它不是以開發(fā)效率為目標,而是以開發(fā)出安全可靠的軟件為目的。因此,目前IEC61508,ISO 13849和IEC62061中都是要求開發(fā)中使用V模型。V模型最大的益處在于測試的提前介入,即是要求測試工程師需要參與評審需求、架構設計、詳細設計等文檔,并同步完成測試用例的設計,編輯測試規(guī)范。目的是通過測試的人員的參與,及時發(fā)現(xiàn)需求或設計中存在缺陷,提高需求或設計的合理性。但是V模型也有一個最大的問題,就是迭代。如果測試發(fā)現(xiàn)bug或者后面在進行變更,設計應返回到V模型的左半邊的相應階段,并重新按照V模型執(zhí)行,這樣就會給開發(fā)人員帶來大量的工作量。
▲圖1 軟件開發(fā)的V 模型
三是開發(fā)工具的選擇
對于開發(fā)工具的選擇,功能安全總的的要求,即是開發(fā)過程中必須使用經(jīng)過工具資質(zhì)確認的開發(fā)工具,所謂的確認有三種可能,一是對于應用軟件來說,可以采用PLC供應商提供的開發(fā)工具;二是使用經(jīng)過使用證明的開發(fā)工具,即是在行業(yè)內(nèi)或類似產(chǎn)品開發(fā)中已被大量使用的工具;三是使用經(jīng)過功能安全認證的工具,即是有特定第三方團體已對工具進行過認證,例如C++ test已經(jīng)通過了T2類工具的認證,Cantata也是通過認證的。此外,還需要對開發(fā)工具的版本、使用手冊、注意事項等內(nèi)容進行確認,編輯工具確認報告。另外,需要注意的一點是,軟件在線測試工具,在開發(fā)過程中,需要和軟件本身執(zhí)行相同的PL或SIL要求。
▲圖2 IEC 61508標準中對工具的要求及解釋
四是開發(fā)語言及編程準則的選擇
目前常用的軟件開發(fā)語言分為有限可變語言和全可變語言,有限可變語言指的是梯形圖、功能塊圖和順序功能圖等語言,全可變語言指的是C、C++、C#等,有限可變語言常用在應用軟件的開發(fā)中,全可變語言常用在嵌入式軟件的開發(fā)中。在IEC 61508的標準中,對語言要求見圖3.需要說明的是,雖然ADA、PASCAL和Modul2語言是SIL1和SIL2強烈推薦的,但是由于這些語言已經(jīng)很老,現(xiàn)在已幾乎無人使用。嵌入式軟件開發(fā)中,目前最常用的是C系列的語言。
▲圖3 軟件開發(fā)語言的選擇
另外,在利用上述語言進行編程時,編程準則的使用功能安全標準中也是有要求的。下列連接是推薦使用的編程規(guī)范,圖4、圖5和圖6是標準中要求的采用的編碼準則。實際使用時,通常推薦軟件工程師都要采用,并且要按照編程準則,執(zhí)行靜態(tài)規(guī)則檢查或者代碼評審。
編程規(guī)范舉例
http://www.misra.org.uk/
http://java.sun.com/docs/codeconv/index.html
http://www.gnu.org/prep/standards/
▲圖4 ISO 13849中的編程要求
▲圖5 IEC61508 對編程語言的通用要求
▲圖6 IEC61508面向對象的編程要求
五是開源代碼的使用
開源代碼是軟件開發(fā)中很難回避的一個問題,眾所周知,為了減少開發(fā)的工作量,節(jié)省人工成本,提高開發(fā)效率,很多企業(yè)在開發(fā)中都會使用大量的開源代碼,這些開源代碼有些是軟件開發(fā)庫中提供的,有些是從網(wǎng)上搜集到的。這些代碼在功能安全軟件開發(fā)中是由極大的風險,最大的風險在于這些代碼在開發(fā)過程中未遵守功能安全開發(fā)的流程和要求,有可能存在大量未知的bug,進而引起安全功能失效。不過,IEC61508功能安全標準中也并未完全排除開源代碼的使用。標準中提供了三種途徑,一是使用完全按照功能安全要求開發(fā)的源代碼,這個需要提供證明,;二是使用經(jīng)過使用證明的開源代碼,也就是說需要提供該開源代碼在類似產(chǎn)品中使用的經(jīng)典案例,另外也需要做一些額外分析;三是重新對開源代碼的開發(fā)過程進行正式的評估,也就是說,使用人員需要提供開源代碼開發(fā)的全過程的設計文件。
此外,還有一個捷徑,可以分享給大家,就是開發(fā)人員根據(jù)開源代碼的邏輯,按照功能安全的要求重新編寫和測試。這樣可以省很多工作量。
-
機器人
+關注
關注
212文章
28910瀏覽量
209648 -
AGV
+關注
關注
27文章
1372瀏覽量
41469
原文標題:【Robot學院】機器人安全相關軟件設計關注要點
文章出處:【微信號:robotn,微信公眾號:產(chǎn)業(yè)大視野】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
CAXA2011二次開發(fā),CRX; CAX2007二次開發(fā)
NIRScan Nano二次開發(fā)教程
面向對象的參數(shù)化CAD二次開發(fā)方法研究
AutoCAD的二次開發(fā)
ANSYS的二次開發(fā)技術
基于VC的Cadence二次開發(fā)

何謂CAD二次開發(fā)? AutoCAD都有哪些二次開發(fā)工具?
對功率計進行二次開發(fā)
空間光調(diào)制器的簡便控制方法:靈活應用二次開發(fā)

【產(chǎn)品應用】LoRa網(wǎng)關與二次開發(fā)終端的神仙搭配

「科聰二次開發(fā)平臺」移動機器人開發(fā),只需3步!

評論