上位機開發(fā)之單片機通信實踐(一)
經常會有一些學員會問到上位機與單片機之間通信的問題,而我們經常會講上位機與PLC之間通信,那么其實對上位機開發(fā)來說,不管是和PLC通信,還是和單片機通信,通信原理都是一樣的。PLC的本質就是單片機,在單片機的基礎上添加一些外圍電路并形成產品化,即構成了PLC控制器。今天在這里給大家分享一個上位機與單片機通信的實例,希望對大家開發(fā)上位機有所啟發(fā)。
1. 單片機硬件介紹
只要做上位機開發(fā),就離不開通信協(xié)議。一般來說,單片機可以與上位機之間以串口通信為主,當然也不排除現(xiàn)在有的單片機也集成了以太網口。就串口通信而言,常用的幾種通信方式,包括串口自定義協(xié)議、Modbus協(xié)議、CAN總線,接下來介紹的這個單片機是某個鋰電池的核心板,它主要是支持Modbus協(xié)議和CAN總線的方式。

圖表 1單片機硬件
2. 通信測試
(1)這里我們選擇的是基于485總線的ModbusRTU通信協(xié)議,如果要實現(xiàn)上位機開發(fā),需要單片機開發(fā)人員提供一份通信變量表,如果讀取變量較多或者不連續(xù),需要進行分組讀取。
(2)通信變量表一般包含參數名稱、Modbus地址、存儲區(qū)、數據類型、換算公式等內容,能夠將通信變量表看明白并完成通信測試,是能夠完成上位機開發(fā)的前提。
(3)這里,我截取部分變量表跟大家做一個分析:

圖表 2 Modbus寄存器表
上表中,以電芯總電壓為例,Modbus地址為0x1003,對應十進制即為4099,寄存器地址即為44100,讀取類型為ushort類型,換算公式為讀取之后乘以0.01,比如讀取值為5630,即為5.63V。
分析明白之后,我們就可以先用ModbusPoll軟件來一波初步測試,如果需要Modbus軟件資料的,可以關注一下微信公眾號:dotNet工控上位機,然后像聊天一樣發(fā)送關鍵詞:Modbus軟件套裝即可。這里我們需要通過485轉USB連接到電腦中,然后通過設備管理器,看到端口號為COM4。

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

圖表 4通信參數配置

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

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

圖表 7上位機軟件
(5)我們也可以用新閣通信測試平臺來做下測試,測試結果如下:

3. 整體總結
本文主要針對單片機的Modbus通信實例做了較為詳盡的描述,由于篇幅有限,僅僅介紹了通信測試部分,對于后續(xù)的項目實戰(zhàn)部分,會通過后續(xù)的文章進行進一步的闡述。
我是新閣上位機付老師,用我的專業(yè),成就你的夢想!