上位機開發之單片機通信實踐(一)

經常會有一些學員會問到上位機與單片機之間通信的問題,而我們經常會講上位機與PLC之間通信,那麼其實對上位機開發來說,不管是和PLC通信,還是和單片機通信,通信原理都是一樣的。PLC的本質就是單片機,在單片機的基礎上添加一些外圍電路並形成產品化,即構成了PLC控制器。今天在這裡給大家分享一個上位機與單片機通信的實例,希望對大家開發上位機有所啟發。

1. 單片機硬件介紹

只要做上位機開發,就離不開通信協議。一般來說,單片機可以與上位機之間以串口通信為主,當然也不排除現在有的單片機也集成了以太網口。就串口通信而言,常用的幾種通信方式,包括串口自定義協議、Modbus協議、CAN總線,接下來介紹的這個單片機是某個鋰電池的核心板,它主要是支持Modbus協議和CAN總線的方式。

 

 

 

圖表 1 單片機硬件

2. 通信測試

(1)這裡我們選擇的是基於485總線的ModbusRTU通信協議,如果要實現上位機開發,需要單片機開發人員提供一份通信變量表,如果讀取變量較多或者不連續,需要進行分組讀取。

(2)通信變量表一般包含參數名稱、Modbus地址、存儲區、數據類型、換算公式等內容,能夠將通信變量表看明白並完成通信測試,是能夠完成上位機開發的前提。

(3)這裡,我截取部分變量表跟大家做一個分析:

 

 

 

圖表 2 Modbus寄存器表

上表中,以電芯總電壓為例,Modbus地址為0x1003,對應十進制即為4099,寄存器地址即為44100,讀取類型為ushort類型,換算公式為讀取之後乘以0.01,比如讀取值為5630,即為5.63V。

分析明白之後,我們就可以先用Modbus Poll軟件來一波初步測試,如果需要Modbus軟件資料的,可以關注一下喜科堂官方關註:dotNet工控上位機,然後像聊天一樣發送關鍵詞:Modbus軟件套裝即可。這裡我們需要通過485轉USB連接到電腦中,然後通過設備管理器,看到端口號為COM4。

 

 

 

圖表 3 通信端口

打開Modbus Poll軟件,通信參數選擇COM4、9600、N、8、1,讀取寄存器起始地址為4099,讀取長度為10,具體配置如下圖所示:

 

 

 

圖表 4 通信參數配置

 

 

 

圖表 5 通信讀取配置

配置完成後,即可讀取到單片機的數據,具體如下圖所示:

 

 

 

圖表 6 ModbusPoll讀取

(4)實現讀取之後,我們分析一下結果,4099讀取到的值為4206,說明當前電池的電壓為42.06V。我們可以用實際開發完成的上位機軟件做下對比,驗證一下數據是否正確:

 

 

 

圖表 7 上位機軟件

(5) 我們也可以用喜科堂通信測試平台來做下測試,測試結果如下:

 

 

 

3. 整體總結

本文主要針對單片機的Modbus通信實例做了較為詳盡的描述,由於篇幅有限,僅僅介紹了通信測試部分,對於後續的項目實戰部分,會通過後續的文章進行進一步的闡述。

 

公眾號:thinger_swj