2018年8月28日 星期二

HMI 回憶錄 (3)

硬體篇


這一篇會談到硬體,HMI 是嵌入式系統,雖然筆者的工作是軟韌體,但對硬體多多少少要有點了解,也跟硬體要過不少次線路來看,示波器、LA 也都實際動手操作過,不過畢竟不是專業硬體 RD,可能有些地方不太正確,敬請各位批評指教。

觸控式

如下圖所示,這是現在最常見的形式,文字型聽說台廠已經不生產了,因為價格已經爛掉(< 1000 台幣),所以假如你用單晶片做產品想搭配個簡單的 LCD 進行顯示控制,說不定去淘寶買一個回來配還比自己洗板子便宜。

早期螢幕比例為 4:3,後來大多改成 16:9,沒什麼特別原因,就跟你買電腦螢幕一樣,現在要買到 4:3 也很難。

觸控為何用 4 線電阻式?因為 HMI 多點觸控需求很少,既然是做自動化,那人介入的部份越少越好,輸入正確參數開始自動執行不是比較正常?學手機還搞手勢偵測這一套不是很奇怪?第二個理由是電阻式抗干擾的能力要比電容式好。

(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 空氣清靜機出廠時在電池前面放個小紙條避免跟電池座接觸。

為什麼會有 DIO(Digital Input/Output)?因為有些客人的應用很簡單,他不需要 PLC,他也不想買 Remote IO,他就要求 HMI 廠商在 HMI 上做幾個 IO 點給他用,然後他用 macro 或是畫面元件(例如按鈕)直接控制就好,不過這時候倒楣的就是軟體 RD 了,因為 HMI 要做如 PLC timing 一樣精準很難,尤其現在很多 HMI 廠商改用 Linux, WinCE timing 更難預測,這時候當然就是請業務發揮他的嘴砲功力 XD



一下子要寫的東西太多,就只好放到下次了

5 則留言:

  1. RS485 是差動訊號 不需要接地吧

    回覆刪除
    回覆
    1. 我也很疑惑,等研究出來再跟大家分享

      刪除
  2. 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 就在說明上述的潛在問題.

    回覆刪除
  3. USB 這類的差動信號, D+ 是正電位, D- 會是負電位.
    這種雙極性的差動信號, D+ / D- 就可以是完整的 loop, 不需 GND.

    回覆刪除
    回覆
    1. 出現高手了!

      感謝回應,一掃小弟多年疑惑

      刪除