2024年5月20日 星期一

車用電子漫談(十四) --- CAN Bus 延伸應用

這次來回頭聊聊 CAN Bus 在車用系統以外的應用。

關於CAN Bus 的技術文章討論,最近的已經要追溯到 2021 年的這一篇文章了。

車用電子漫談(十三) --- 從一個實際案例來看CAN Bus 在車用系統的測試驗證

而更早關於CAN bus 的文章就更早於 2020 年了。我就把他們補貼連結在文章末。

講坦白的話:寫韌體或軟體程式,乃至於系統整合來說。最難的都不是這些

系統開發或程式撰寫的過程,因為產品最終還是要經由許多各項產品在不同的

使用條件環境中驗證測試後,才能順利地生產上市銷售。我說過了:如果產品只講

技術開發,而沒有帶有任何完整的整體產品的驗證測試,那也只不過就學校實驗室裡

的研究專題而已罷了。你認為產品開發最燒錢的是甚麼階段?你以為只有是產品

設計、寫寫程式就可以了嗎?就算是最簡單的寫寫一個簡單的APP 應用軟體,

你都有可能碰到一些你所難以預料的神奇般使用者奇奇怪怪的操作流程搞死你的

產品的系統問題。人家公開程式原始碼,但也未必會公開她系統或程式驗證方法

或流程的,你寫寫程式可能只要有台PC ,弄個軟體開發環境平台就可以開幹了,

但如果產品要通過品管測試驗證時,你知道要花多少錢?多少資源?(包括設備的

採購或測試環境的架設與流程管制等等....),尤其你的產品還要牽涉到硬體設計或

產品在商品檢驗局的法規認證條件等等要求下,你又該如何完整的走過這些流程?

這些都不是簡單一、兩個人或小小工作室就可以承受的產品開發能量的要求。

你不要以為你接個案子,寫寫程式,弄幾塊電路板就可以了,人家發包公司回頭

還要搞很多這些後段的驗證測試工作,你也不要老是要笑別人的公司不懂這個?

也不懂那個?那你又能提供甚麼產品驗證測試平台?來回頭檢測你的東西?

這邊我就提供一個簡單的驗證測試案例與平台供大家參考一下。有些都是延伸於

上述的那篇文章的內容與工具,只不過那一篇的文章內容是針對車用電子,

但對於其他一般系統應用,你就沒比較沒有那麼強烈感受了。

首先先聲明一下:以下所展示的案例是適用於一般對系統要求沒那麼高的條件,

譬如是要量測機械物理值(譬如溫度、濕度、大氣壓力或機械參數等),如果你要

量測的東西要求高速、高頻或更高的品質要求,不好意思,這方法不是不行,

而是需要要求規格更高檔、更高階的測試設備的。那是要用錢堆積出來的,

我在這邊所展示的就是我們一般平民老百姓,小小公司或工作室所能承受的

財務能力範圍內所能做的事,但基本上的,方法與精神是一樣的啦。

---


基本上系統整個測試驗證的平台,就類似這樣子的架構與概念的。

但為了簡單闡述一下基本精神與方法,我就再簡化一下這些東西好了。

首先就是一個可以讀取 ADC 的模組,然後把這些所量測到的ADC 值,透過 CAN Bus

把它傳輸出去:


為了簡單說明:我就用一片非常簡單便宜的 波形產生器(Function Generator) 來模擬我的

ADC 輸入訊號,然後經由ADC 收集模組(下圖)轉換成CAN Bus 訊號傳輸:



就可以透過 CAN bus 收集轉換器來傳輸給PC 端,我所選擇的 CAN bus 收集轉換器是

 VSCOM 這家公司的 USB-CAN Plus 這一款。為什麼是這一款?

這是因為這套 API 軟體 BusMaster 有支援啊。像 Kvaser 這個品牌我也用過,但要人家

公司有錢花錢買給我用,我才會用的。其他的也都類似的道理...而這套 USB-CAN Plus

已經算平價一點而已。😂😂😂

這套是一萬元有找,但Kvaser 是十萬元有找,至於ETAS 的東西就幾十萬~百萬等級的。

(基本上只要有一組 CAN bus 收集轉換器就可以接上數組或幾十組CAN Bus 模組,

這是CAN Bus 規格強處所在。可以自行搜尋研究 CAN Bus 規格定義。)


你可以發現這個軟體所支援的外接裝置有一大堆是 ETAS...這是因為這套軟體就是由

ETAS 所開發的(還是由ETAS 收購的?,現在ETAS 是 BOSCH 百分之百的子公司,這樣

你就可以相信人家的品牌與品質價值了吧),反正你如果是在車用電子系統開發驗證測試的

領域工作的,大概都知道 ETAS 這家鼎鼎大名的公司。它的品牌就是 👍👍👍,就是貴!😄

----

首先我可以先從示波器看一下我的ADC 輸入訊號圖形:


 

基本上就是一個 Sine 波與一個 方波。還是先強調一下:這訊號真的不要太高速,

畢竟許多 CAN bus 所支援的 Bit rate 並不高,(後來當然也有出所謂的 CAN Bus FD,

但這一級的所支援的硬體設備等級又是另一級價格行情了。)

然後我們就可以打開這個免費又開源軟體平台 BusMaster 這套軟體了。

(這套軟體已經很多年沒有更新了,反正也夠用了。)


我知道我ADC channel 1 (sine 波)數據是在 CAN Bus ID : 0x401 的最後三組Bytes ,

ADC channel 2 (方波)數據是在 CAN Bus ID : 0x421 的第二、三、四組Bytes 所組成的 ,

然後經由一些簡單的 CAN Bus Database (DBC) 設定。(這是CAN Bus 相關名詞,像是引擎

轉速、溫度等參數的物理參數描述或J1939/OBD II 等,都有專屬的 DBC 內容定義的,

當然我們也可以依我們自己所需的測試量測參數定義來描述我們自己的DBC 。)

我們就可以在PC 端上看到我們在ADC 量測上的波形變化了:


當然啊,這個波形當然無法跟實際高頻或取樣速率要求高的示波器所能比擬的。

(本文只是偷懶隨便拿個簡單的訊號模組來做為簡單示範而已,這是規格不匹配之處)

但你也別忘了:CAN Bus (2.0B) 頂多就是 1MBits 而已。 

但她最大的好處的:可以定義多組 ID 量測數據,也都可以在同一條 CAN Bus 上

傳輸與記錄的。(以CAN Bus 2.0A 的規格來說:它可以同時有 11 Bits ID 定義,

而每一組 ID 又可以傳輸 8 Bytes 資料量。對我們一些系統應用來說:綽綽有餘的啦。

至少人家CAN Bus 2.0B 也走過 三、四十年了, CAN Bus 2.0B/FD 支援更多了...

我還是強調一下:這些ADC 模組是一般通用型的,這款 RaceLogic 公司的

Micro Input Module 是給一般車輛測試用的,是用來量測機械參數用的,不是高速的

數據擷取功能,如果你想良好一點或高速一點的訊號時,你也可以用一片 STM32F103 

板子自己寫個 ADC 擷取器來用:我之前也寫過:就是這一片,網路購物平台都買得到的。

(當然啦,如果你也想知道你的系統在正常運行中,有哪些參數或數據也是值得你

參考或監看的,你也可以透過這種方式給傳輸出來,再經由如此方式記錄或量測檢視的。)



因為在規格上的有所落差(不匹配),所以我們在軟體上看到的訊號就會有所失真:


但實際在許多低速,又需要大量截取數據分析上,這樣的驗證平台是夠用的,

尤其是大量生產時,也需要收集一些數據資料,在這AI 時代不也是強調大數據收集的

重要性嗎?透過這樣的同樣多組的測試驗證數據,可以幫助我們釐清系統穩定性問題。

而且在系統開發驗證上非常受用的:像我們之前在測試驗證機車 ABS 馬達電磁閥的

所有動作訊號(包括輸入控制參考訊號訊息及相關運算數據等) 就綽綽有餘了:


反正你在系統開發時,有時候也不知道會碰到甚麼奇怪的問題與現象,上網路社團問?

或Google /Chat GPT 問?倒也不自己想想方法或旁敲側擊地找答案,這些量測驗證的數據

圖表化,有時候,幫助也是不小的啦。不妨參考試試看吧。

---

(PS :上圖是利用同樣的手法,但那個 CAN Bus 數據擷取轉換器,就得要用有所謂的

儲存功能的 CAN Bus Data Logger 了,網路市面上也有賣,但還是要留意所支援的

分析軟體平台種類,但這一級的系統(軟體)平台都不便宜就是了。但如果是實驗室裡

不用帶出門到處跑的測試環境,就用本文的平台就夠了。)

---

所以,各位看官,以上就是一個簡單的利用 CAN Bus 的量測數據地的分析應用案例。

工程上戲法人人會變,但巧妙各有不同。就看每個人如何發揮應用罷了。

希望這個小小的工程經驗戲法分享,也可以提供各位在系統開發應用與

系統產品測試驗證上有更方便的工具應用。

謝謝。

----

附註:

車用電子漫談(二)--- 在STM32 上實現車用常用的匯流排CAN Bus

車用電子漫談(二A)--- 在STM32 上實現車用常用的匯流排CAN Bus(補述篇)

5 則留言:

  1. 最近有人找我創業,開發一些產品,其中就有網路相關。我直接就問: 你要如何測?他反過我要過什麼? 果然工程師都不考慮量產後要販賣要過那些驗證。我回答:就系統穩定性,常用指標為MTBF。還有功能性測試,封包穩定性,高壓下的工作狀況。工作狀況統計及系統內模組計數器,除了除錯外,還要簡單記下環境狀況。這些算是產品經理要注意的事項。然後他說: 哦。
    我心裏想:沒產品驗證的觀念要怎開公司? 外包也要有,不然怎驗?

    回覆刪除
    回覆
    1. 嗯~
      沒錯。網路上有很多號稱老師、大師的人一天到晚都在吹噓自己
      系統開發設計能力有多強?但有多作品,其實有很多也都沒有真正走到
      後段測試驗證生產過程。總以為:只要搞幾塊電路板,寫寫程式韌體
      就可以收錢結案了。但往往外包公司接回之後,無法真正完成
      產品測試驗證,乃至於生產品管這些程序,結果都還是不成功的
      產品開發,也就是無法真正轉換現金營收。
      接案子的老師、大師怪發包公司沒本事?但沒量產銷售,業績就是零。
      嘴人家有甚麼用?搞了一輩子技術開發都是這種惡性循環,結果看起來
      也沒比較厲害啊。
      倒不如真的好好地把一個小東西,完完整整的走完設計開發、
      測試驗證及生產管理輔助工具平台所有程序,順順利利的上市銷售。
      才有長長久久的營收可以變現人生,否則等你老了,你就知道:
      其實搞技術開發沒有你想的那麼容易變現人生的啦。
      ---
      尤其現在網路開放平台一堆,產品技術開發都可以找到很多開放源
      幫你完成第一階段,但更難、更燒錢,比產品開發設計驗證測試
      的資源,才是產品決勝負的關鍵。
      要不然你以為坊間一大堆賣測試儀器設備,乃至於相關檢測軟體
      公司是在做甚麼的?
      ---
      以下就是昨天業界的一大重要新聞:

      【大立光侵權遭訴】德商控軟體侵權求償10億 大立光10高層遭起訴
      https://www.mirrormedia.mg/story/20240521inv002?gad_source=1&gclid=CjwKCAjwr7ayBhAPEiwA6EIGxJPo0d2S0X1ARG6iOyvvVcT4lV3ROVTPvs_LY5bdcYgnvrOfdqNIVRoC60AQAvD_BwE

      這個就是生產品管輔助工具相關案例。

      刪除
    2. 不過,你們還年輕,創業一開始也不用急著考慮這麼多,
      畢竟這些東西與玩意兒,也都不是一天兩天就可以輕易可以
      建立起來的,這些都需要額外的資金與資源。
      心裡有個底,先把產品開發出來,預留一些相關驗證測試檢視機制,
      隨著成果,慢慢地去呈現績效,然後再透過業界合作,
      或資金與資源引進,讓產品真的可以順利完成驗證測試生產上市。
      其實,很多新創公司也都是如此走過的。
      只要心態正確:不要一直固守技術開發優於一切的那種偏激心態,
      其實,還是會有很好的成功機會的啦。
      年輕人有理想,有抱負是很好的動機,也是成功起頭的必要關鍵。

      祝福你們或你的朋友。

      刪除
    3. 不年輕了,二人都是50。只是我認為就業也都20年,要創業並不是專業要很強,而是做事的程序要清楚。一個新產品從無到有會經過那些程序。我在想企業流程,然後再找人問。連流程都不清楚,直接接案然後被客戶唸不是更難看? 上個公司還是內部股東的案子,就是流程搞不清,股東是業務底子的,就是拿工程樣本出去,然後在客戶面前當機,也間接引發後面斷銀根的危機。
      細節可以不清楚,但要做那些事的流程要知道。大公司出來的工程師反而比較不清楚整個流程,我還要大約講一遍,只怕是對方無法體會,還要想不做會出什麼事,累的是要舉反例。

      刪除
    4. 很多人之所以會創業,有時候就是會鄙視一些大公司僵化的制度,
      或看不慣一些公司組織的官僚作風。
      但回過來想想:像園區那些科技公司或是一些績優股的公司,
      我們當然不敢說:這些公司就不會有僵化的制度或官僚習性。
      但也不可否認的是:人家在產品開發,或是在一些國際競爭市場中,
      還是可以拿出他們的競爭力...這是因為他們在公司組織或某些
      制度流程還是有一定的正面意義的。光唱衰人家或是整天就巴不得
      看人家公司會不會"血流成河"?其實是沒必要的。
      ---
      以前我也會這種心態,但後來我跟一對老同事的夫妻聊天時,
      他們夫妻倆都是畢業於台大(我老同事是電機系所畢業的)。
      兩位分別在園區的兩大龍頭廠商工作,我有提出一些我對於
      創業或產品企劃想法時,他們都不約而同地提出類似你的說法:
      你有沒有事先做過產品風險評估?或是一些市場調查分析?等等。
      那就更不說:你往後的一些執行方法與程序之類的。
      當然也不是說要很完整的一本企畫書,但他們就很直接說,
      這些都是你事先必須把這些功課先擺在心裡的。
      因為這些都將會是你在落實執行時,都有可能遭遇的問題與風險。
      ...
      我們再來想想:人家的聰明才智或腦筋應用,肯定對於技術的
      了解與評估肯定是有一定的學習認知能力與敏捷度的,
      又在資源豐沛的大公司裡上班,當然不可能整天在人家大公司裡
      打混摸魚的,肯定就是要在人家那種規模制度下,跑出一些業績
      績效出來的...(這個就是我一職強調的:不要老是把別人當笨蛋!)

      你說的沒錯:創業並不適專業要很強。其實更重要的是要有更重要的
      學習適應能力,多看看人家公司裡的這些優秀人才如何在人才濟濟的
      一流公司裡如何藉由企業管理流程,資源運用分配,來達到他們個人
      與公司雙贏的局面...
      這也是當我們有機會進入大公司,或去人家公司開會或討論會議時,
      多正面的看看學習觀摩人家值得我們效法的地方。
      這絕對是一個非常好的人生創業的機會教育。
      也順便分享一下個人經驗吧。

      刪除