文章

顯示從 9月, 2016 起發佈的文章

[應用] ESP8266 WiFi to RS485 (MODBUS TCP to RS232)

圖片
元件介紹         ESP8266 是由大陸 樂鑫科技公司 所開發的 WiFi 模組,上面有數根 GPIO 接腳和 ADC,另外 Tx/Rx 接腳用來與其他模組通訊之用。由於這塊模組價格便宜,目前吸引很多創客 Maker 使用,更重要的是在 Arduino IDE 環境下就可以開發這 WiFi 模組的程式,下載 IDE 後可找到不少 WiFi 相關的範例程式可以研究,對於初學者來說實在是非常非常的方便。同時在網路上,不少創客 Maker 已經寫下開發的經驗文章[1][2][3],並且也有 YouTube 教學影片可參考 [4]。 設計說明         筆者在規劃 MODBUS 通訊與 RS485 的過程遇到配線牽線的問題,於是上網搜尋有關無線轉 RS485 的設備,搜尋結果出現的是藍芽轉 RS232。BT to RS232 經過 MODBUS 通訊測試後,通訊的反應不是很即時,感覺有點頓頓的,放棄使用藍芽的介面。再次搜尋 WiFi 轉 RS485 的設備,似乎找不到能同時支援 MODBUS 通訊,最後決定使用 ESP8266 模組加上 TTL 轉 RS485模組,如圖一所示,索性自行開發一個 MODBUS TCP (WiFi) to MODBUS 232 (RS485) 的系統。以實體層(physical layer)而言,我用模組兜出一個 WiFi 轉 RS-485 的硬體,在鏈結層(data link layer)方面,設計一個 MODBUS TCP 轉成 MODBUS 232 的系統,讓原本沒有網路接口的控制板多出了一個無線網路的操控介面。         簡單說明系統的運作,將 ESP8266 WiFi 模組設計成一個無線 AP,當筆電連接到這模組後,筆電便從這個無線 AP 取得一組 IP address。這時候,我們可以在筆電上寫個 TCP / UDP socket 程式,與模組建立一個 socket 連線 (筆者是使用 TCP port 502 for MODBUS)。我們在 Arduino IDE 環境開發 ESP8266 模組的程式,將無線網路收到的 MODBUS TCP 封包加工調整後轉換成 MODBUS RS232 封包,再從 RS485 線路傳送出去。同樣地,從 RS485 收到的MODBUS RS232