太陽能熱水器控制系統通訊格式
- 【源由】
- 有天查看了一下太陽能熱水器主機(P31)發現時間快了,於是校正了一下時間。
- 這時假想了一下,如果可以連上去校時該多好,或者把資訊連網觀測或記錄也不錯。
- 於是把【RS-485】連上去觀測,初步得到規律的通訊資料,但某些欄位無法確認其功用。
- 為了實際驗證只好寫程式跟主機(P31)溝通看看,經過慢慢修正才能無誤地與之溝通。
- 最後得到的結果連上去校正時間是不可能的,但要將控制、資訊連網應該可行的。
- 【硬體設備】
- 主 機:P31 => 系統狀態、系統控制、子機與控制箱連線。
- 子 機:S3X => 與主機連線,取得目前水溫、水溫設定、主機狀態,回應強制加熱、更改水溫。
- 控制箱:C34 => 與主機連線,接受加熱命令,回應目前水溫、控制箱狀態。
- 【通訊格式】
- 輪詢命令:以下主機(P31)送出輪詢與相對子機(S3X)的回應,皆為[16進數值]。
前兩碼為主機(P31)送出輪詢命令,第三碼【00】為主機(P31)送出要求回應【設備ID】,後面兩碼為子機(S3X)或控制箱(C34)回應的【設備ID】。 - 88 88 00 31 31 => S31
- 77 77 00 32 32 => S32
- 66 66 00 33 33 => S31
- 55 55 00 34 34 => C34
- 主機<->子機溝通範例:
88 88 00 31 31 11 2A 2A 15 00 00 22 38 38 25 32 32 33 00 00 - 1.主機發送【88 88】輪詢 => 對應子機(S31)監聽後進入應答模式
- 2.主機發送【00】要求設備ID => 子機回應設備ID【31 31】
- 3.主機發送【11】要求強制加熱狀態 => 子機回應強制加熱狀態【沒按:2A 2A】或【已按:AA AA】
- 4.主機發送【15】要求更改水溫 => 子機回應不更改【00 00】或更改水溫【IE 1E】~【4B 4B】範圍
- 5.主機發送【22】通知目前水溫 => 子機接著讀取目前水溫【38】後並回應給主機【38】
- 6.主機發送【25】通知水溫設定 => 子機接著讀取水溫設定【32】後並回應給主機【32】
- 7.主機發送【33】通知主機狀態 => 子機接著讀取主機狀態【00】後並回應給主機【00】
- 8.完畢
- 主機狀態:主機狀態碼,目前【Bit-5】、【Bit-1】尚未知其作用。
- Bit-8.控制箱未連線
- Bit-7.溫度異常
- Bit-6.無法加熱
- Bit-5.未知 #5
- Bit-4.加熱中
- Bit-3.強制加熱模式
- Bit-2.水位過低
- Bit-1.未知 #1
- 主機<->控制箱溝通範例:
55 55 00 34 34 11 38 38 22 07 07 44 00 55 00 56 00 57 00 58 00 59 00 5A 00 33 2A 2A - 01.主機發送【55 55】輪詢 => 控制箱(C34)監聽後進入應答模式
- 02.主機發送【00】要求設備ID => 控制箱回應設備ID【34 34】
- 03.主機發送【11】要求目前水溫 => 控制箱回應目前水溫【38 38】
- 04.主機發送【22】要求控制箱狀態 => 控制箱回應控制箱狀態【07 07】
- 05.主機發送【44】功能碼 => 控制箱接著讀取【00】
- 06.主機發送【55】功能碼 => 控制箱接著讀取【00】
- 07.主機發送【56】功能碼 => 控制箱接著讀取【00】
- 08.主機發送【57】功能碼 => 控制箱接著讀取【00】
- 09.主機發送【58】功能碼 => 控制箱接著讀取【00】
- 10.主機發送【59】功能碼 => 控制箱接著讀取【00】
- 11.主機發送【5A】功能碼 => 控制箱接著讀取【00】
- 12.主機發送【33】加熱命令 => 控制箱接著讀取【一般:2A】或【加熱:AA】後原封回應給主機【一般:2A】或【加熱:AA】
- 13.完畢
- ##.目前【44】【55】【56】【57】【58】【59】【5A】功能碼及其後面的資料碼尚未知其作用。
- 控制箱狀態:將控制箱狀態碼,目前【Bit-6】尚未知其作用,【Bit-3】【Bit-2】【Bit-1】皆為【00】會引發水位不足。
- Bit-8.感溫棒異常
- Bit-7.加熱管失效
- Bit-6.未知 #6
- Bit-5.加熱中
- Bit-4.繼電器開路
- Bit-3.水位
- Bit-2.水位
- Bit-1.水位
- 【補充資訊】
- 本太陽能控制系統通訊格式只有簡單的資料比對,因此無法確保雙方通訊資料的完整與正確性。
- 當【RS-485】線上假如有個裝置故障因而亂發送資訊時,因為太陽能控制系統通訊格式沒有嚴謹資訊檢查,在此狀況下主機(P31)最常發生的是水溫設定值被更改了。
- 為確保通訊資訊的正確性,建議應該要重新訂定通訊格式並加入CRC檢查碼。