硬體篇
這一篇會談到硬體,HMI 是嵌入式系統,雖然筆者的工作是軟韌體,但對硬體多多少少要有點了解,也跟硬體要過不少次線路來看,示波器、LA 也都實際動手操作過,不過畢竟不是專業硬體 RD,可能有些地方不太正確,敬請各位批評指教。
觸控式
如下圖所示,這是現在最常見的形式,文字型聽說台廠已經不生產了,因為價格已經爛掉(< 1000 台幣),所以假如你用單晶片做產品想搭配個簡單的 LCD 進行顯示控制,說不定去淘寶買一個回來配還比自己洗板子便宜。
早期螢幕比例為 4:3,後來大多改成 16:9,沒什麼特別原因,就跟你買電腦螢幕一樣,現在要買到 4:3 也很難。
觸控為何用 4 線電阻式?因為 HMI 多點觸控需求很少,既然是做自動化,那人介入的部份越少越好,輸入正確參數開始自動執行不是比較正常?學手機還搞手勢偵測這一套不是很奇怪?第二個理由是電阻式抗干擾的能力要比電容式好。
(PS. 不用猜了,筆者沒待過台達,圖用 Google 抓的)
(PS. 不用猜了,筆者沒待過台達,圖用 Google 抓的)
有些 HMI 會用觸控+實體按鍵,畢竟實體按鍵可靠度還是高於觸控,而且又不像觸控需要校正,有些不能失敗,安全性要求較高的操作還是會回到實體按鍵,甚至這些按鍵還不一定會使用 HMI 上的按鍵,而是直接連到 PLC Digital Input,或是乾脆用傳統電工配線。
按鍵式
沒太多可以說的,大家看個圖感受一下就好HMI 背面
HMI 通訊界面、電源通常位於 HMI 背面,電源就沒什麼好說的,通常都是用 DC24V。
RS232/422/485 做在同一個 DB9 上,早期用 DIP switch 切換,後來都改用軟體切換,RS232 通常也只有用到 Tx/Rx/GND,有些廠商會有一個 COM Port 保留標準 RS232 DB9 所有腳位(RTS, CTS, DTR...)目的是為了接 modem 之類的東西,不過現在很少廠商這麼做。
還有為了避免 DB9 針腳變形,有些廠商會把這些 DB9 都改用母頭,這點對於一般人來說有點不可思議,不過要知道很多設備商是機械出身,長年訓練下來力氣都很大。不過這帶來一個額外問題,就有客戶拿著古老的 DTE, DCE 那一套說你們這樣不標準芸芸,不過話說回來,DTE, DCE 裡面也不包含 RS422/485 啊。
還有一些廠商為了省錢,把 CPU 上的兩個 UART 擠到同一個 DB9 上(一個用 RS232, 一個用 RS422/485),有的客戶不明究理,就會說你通訊慢是不是因為兩個 protocol driver 在搶同一個 COM Port?不好意思不是喔,只是老闆為了 cost down 改變配線方式而已,這件事筆者解釋不少次,這也說明搞機械的人跟搞電子韌體的人多少有些代溝在。
講到這裡,偶爾有人寫信問 RS485 程式怎麼寫?說真的軟體的部份筆者已經花太多篇幅講到快沒東西好講了。反到是 RS485 到底怎麼接地才對這一點筆者一直沒搞清楚,之前曾經發生過 一件事:HW RD 把 GND 接到外殼(20 年經驗資深 HW RD 喔),結果客人 PLC 燒掉打電話興師問罪。而且筆者之前測台達 PLC RS485 時發現接點只有 D+/D- 沒看到 GND(還是在別的地方??),那 RS485 到底要不要接地?後來筆者測試時一律不接反而都沒事,哪位朋友對這方面很有經驗也請在下方留言。
USB device 通常用來上下傳 HMI f/w 與客戶用 HMI editor 規劃好的專案檔(行話叫「應用」就是那些畫面、圖形元件、警報、排程 etc...)。
RJ45 除了用來上下傳 f/w & 應用外,當然主要目的是為了跟 PLC 通訊。
USB Host 筆者以前只用來插隨身碟,比方說可以把整個畫面存成圖檔放到隨身碟裡,也有客人詢問是否可以用來跟 PLC 通訊,不過通常 PLC 廠商不會公開這方面的資訊,筆者也只能兩手一攤。
Battery 通常是為了 RTC,另外早期 SD card 尚未風行之前很多資料都是用 Battery + SRAM 保存。聽說這發生過一種意外:HMI 放在倉庫裡太久結果電池沒電了。也難怪筆者之前買的 Honeywell 空氣清靜機出廠時在電池前面放個小紙條避免跟電池座接觸。
RS485 是差動訊號 不需要接地吧
回覆刪除我也很疑惑,等研究出來再跟大家分享
刪除RS485是差動沒錯, 但卻是單極性的差動.D+/D- 兩信號都是電位高於 GND 的差動信號.
回覆刪除當 D+ 是高電位, D- 是低電位, 但 D- 不是 0V, 仍有 200mV 的電壓.
無法充分作為 D+ 的 return path.
當是近距離連結時, 不接 GND 一般沒問題.
若距離增加時, 線阻增加, 以 D- 為 return path, 接收端 D- 的電位會因此而提高.
因為 D+ 流到 D- 的 return current 在線阻上的壓降, 墊高了 D- 的電位.
此時接收端的 D- 端點店為可能就會高於 200mV 以上, 造成接收端判定 D- 不是 low level.
另一個可能的問題是: 當是跨設備連接時, 兩台設備的 common potential level 很有可能不同 (因為接地點不同). 這會讓 potential level 高的 A 設備 D+/D- 會有大電流流到另一台 potential level 低的 B 設備. 造成 A 設備的 RS485 燒毀.
正確的 RS485 接法是 電路的 GND 和 Chasis GND 要有電阻, 約 100 ohm 左右.
當上述的情況發生時, A 設備的 D+/D- 流到低電位的 B 設備, 再經該 100 ohm 才回到 Chasis GND. 因有 100 ohm 限流, 才不會造成 A 設備的 RS485 燒毀.
底下是隨手找的 paper :
http://www.ti.com/lit/an/slla272c/slla272c.pdf
Fig.9 就在說明上述的潛在問題.
USB 這類的差動信號, D+ 是正電位, D- 會是負電位.
回覆刪除這種雙極性的差動信號, D+ / D- 就可以是完整的 loop, 不需 GND.
出現高手了!
刪除感謝回應,一掃小弟多年疑惑