-Begin-
經(jīng)常會(huì)有一些學(xué)員會(huì)問到上位機(jī)與單片機(jī)之間通信的問題,而我們經(jīng)常會(huì)講上位機(jī)與PLC之間通信,那么其實(shí)對(duì)上位機(jī)開發(fā)來說,不管是和PLC通信,還是和單片機(jī)通信,通信原理都是一樣的。PLC的本質(zhì)就是單片機(jī),在單片機(jī)的基礎(chǔ)上添加一些外圍電路并形成產(chǎn)品化,即構(gòu)成了PLC控制器。今天在這里給大家分享一個(gè)上位機(jī)與單片機(jī)通信的實(shí)例,希望對(duì)大家開發(fā)上位機(jī)有所啟發(fā)。
1. 單片機(jī)硬件介紹
只要做上位機(jī)開發(fā),就離不開通信協(xié)議。一般來說,單片機(jī)可以與上位機(jī)之間以串口通信為主,當(dāng)然也不排除現(xiàn)在有的單片機(jī)也集成了以太網(wǎng)口。就串口通信而言,常用的幾種通信方式,包括串口自定義協(xié)議、Modbus協(xié)議、CAN總線,接下來介紹的這個(gè)單片機(jī)是某個(gè)鋰電池的核心板,它主要是支持Modbus協(xié)議和CAN總線的方式。
2. 通信分析
(1)這里我們選擇的是基于485總線的ModbusRTU通信協(xié)議,如果要實(shí)現(xiàn)上位機(jī)開發(fā),需要單片機(jī)開發(fā)人員提供一份通信變量表,如果讀取變量較多或者不連續(xù),需要進(jìn)行分組讀取。
(2)通信變量表一般包含參數(shù)名稱、Modbus地址、存儲(chǔ)區(qū)、數(shù)據(jù)類型、換算公式等內(nèi)容,能夠?qū)⑼ㄐ抛兞勘砜疵靼撞⑼瓿赏ㄐ艤y(cè)試,是能夠完成上位機(jī)開發(fā)的前提。
(3)這里,我截取部分變量表跟大家做一個(gè)分析:
上表中,以電芯總電壓為例,Modbus地址為0x1003,對(duì)應(yīng)十進(jìn)制即為4099,寄存器地址即為44100,讀取類型為ushort類型,換算公式為讀取之后乘以0.01,比如讀取值為5630,即為5.63V。
分析明白之后,我們就可以先用ModbusPoll軟件來一波初步測(cè)試,如果需要Modbus軟件資料的,可以通過本公眾號(hào)獲取,Modbus軟件代號(hào):201。
這里我們需要通過485轉(zhuǎn)USB連接到電腦中,然后通過設(shè)備管理器,看到端口號(hào)為COM4。
3. 通信測(cè)試
(1)打開ModbusPoll軟件,通信參數(shù)選擇COM4、9600、N、8、1,具體配置如下圖所示:
(2)讀取寄存器起始地址為4099,讀取長(zhǎng)度為10,具體配置如下圖所示:
(3)配置完成后,即可讀取到單片機(jī)的數(shù)據(jù),具體如下圖所示:
(4)實(shí)現(xiàn)讀取之后,我們分析一下結(jié)果,4099讀取到的值為4206,說明當(dāng)前電池的電壓為42.06V。我們可以用實(shí)際開發(fā)完成的上位機(jī)軟件做下對(duì)比,驗(yàn)證一下數(shù)據(jù)是否正確:
4. 整體總結(jié)
本文主要針對(duì)單片機(jī)的Modbus通信實(shí)例做了較為詳盡的描述,由于篇幅有限,僅僅介紹了通信測(cè)試部分,對(duì)于后續(xù)的項(xiàng)目實(shí)戰(zhàn)部分,會(huì)通過后續(xù)的文章進(jìn)行進(jìn)一步的闡述。
-END-
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44489瀏覽量
631968 -
控制器
+關(guān)注
關(guān)注
112文章
16103瀏覽量
177067 -
plc
+關(guān)注
關(guān)注
5006文章
13107瀏覽量
461447
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論