Crouzet Slim 的電池沒電了會發生什麼事?

本文簡要探討了當 Crouzet Millenium Slim 可編程邏輯控制器(PLC)的電池失效時,即時時脈(RTC)和儲存的程式資料會發生什麼變化。結果表明,電池為內建 STM32 微控制器的 RTC 供電,而程式資料很可能儲存在非揮發性快閃記憶體中。這意味著程式不會因電池失效而被擦除。這個結論基於以下步驟:取出 Crouzet Slim 的電池,放置 10 分鐘後再重新安裝。

PLC 內部結構及初步預測

打開 Crouzet PLC,電池很容易找到,也相對容易取出。如果需要更換電池,打開 Crouzet 並取出電池應該不會太費力,只需一把一字螺絲起子即可完成。打開 PLC 後,我決定仔細觀察電路板上的支援晶片及其功能。完整的 Crouzet 拆解圖可以在這裡找到:PLC 拆解:Crouzet Millenium Slim PLC 內部結構。在本次實驗中,我取出電池主要想了解以下幾點:

  1. Crouzet 控制器會遺失目前編寫的程式嗎?
  2. Crouzet 控制器重新上電後,時脈會跳動嗎?

對於我這個 PLC 新手來說,程式遺失偵測是最重要的,因為意外遺失已儲存的程式對我來說是個大問題。至於時脈,檢查取出電池後時脈是否會跳動,可以快速判斷時脈是否有電池供電。 PLC 通常都是這樣,所以在進行這項測試之前,我假設時脈很可能會跳動,而目前編寫的程式會遺失。

圖 1:Crouzet Slim 邏輯 PCB 的俯視圖

電池故障後的結果

重新裝回電瓶後啟動 PLC,出現了兩個結果。首先,時脈如預期重設為 00:00,這表示時脈由電池供電,然後由板載 STM32G071CBU6 微控制器進行調整。其次,載入到 Crouzet 上的程式沒有被擦除,這讓我感到驚喜,因為它表明用戶不必擔心電池故障會導致程式遺失。

這項結果表明,程式記憶體儲存在某種非揮發性記憶體中,即使斷電也能保留資料。起初,我以為程式記憶體一定儲存在 STM32 微控制器內部的快閃記憶體中,但仔細查看邏輯板後,我發現了一塊獨立的 25FU406C 晶片。將該晶片的標記與名稱相近的規格書進行比對後,我確定這塊晶片很可能就是 PLC 儲存程式資料的快閃記憶體,而不是依賴微控制器的內部快閃記憶體。由於找到的規格書可能並不完全匹配,而且 Crouzet 的規格書也沒有給出確切的數值,所以我無法確定閃存的確切容量。儘管如此,Crouzet 的規格書確實規定了 2KB(2K 位元組)的通用資料記憶體容量,因此使用者可存取的記憶體應該也僅限於這個範圍。

圖 2:重新安裝電池後 Crouzet 的 HMI 顯示

仔細看看實時時脈

當我第一次打開 Crouzet 時,在尋找哪些元件支援即時時脈時,有兩個主要元件吸引了我的注意。

圖 3:Crouzet Slim 邏輯電路板的底部視圖

這些組件包括前面提到的 STM32 微控制器和一個標有 32C848 的元件。起初,由於在搜尋其晶片標識時沒有找到相應的規格書,因此很難識別這個晶片。於是,我決定透過追蹤該晶片與 STM32 微控制器引腳的連接位置來確定其功能。最終發現,該晶片對應於引腳 3 和 4,根據 STM32 微控制器的規格書,這兩個引腳分別是振盪器的輸入 (IN) 和輸出 (OUT)。

圖 4:即時時脈功能示意圖

找到這張圖後,我們便清楚地了解了 32C848 晶片的功能。它是一個 32kHz 的晶振,用作實時時脈(示意圖中標記為 RTC)的時序參考。示意圖甚至顯示時脈由 VBAT 供電,也就是電池供電。這與我們先前的發現一致,因為電池取出並重新安裝後,時脈就會重設。