基于RS485的組態(tài)王與單片機多機串口通信設計
1 引言
本文引用地址:http://dyxdggzs.com/article/248005.htm隨著(zhù)工業(yè)化要求提高,分布式系統發(fā)展以及控制設備與監控設備之間通訊需要,組態(tài)軟件設計的監控系統逐步普及?,F在組態(tài)軟件繁多,比如KingVieW(組態(tài)王)、 MCGS、WinCC等。KingView軟件基于Microsoft Windows XP,NT/2000操作系統.具有友好的人機操作界面、強大的IO設備端口驅動(dòng)能力,可與各種PLC、智能儀表、智能模塊、板卡、變頻器等實(shí)時(shí)通訊。由 于在檢測大量模擬量的工業(yè)現場(chǎng)使用PLC與組態(tài)軟件通訊勢必增加產(chǎn)品成本。而單片機接口豐富,與A/D轉換模塊組合可以完成相同的工作,并且系統可靠、成本低。
2 組態(tài)王與單片機的串口通訊方法
目前,組態(tài)王與單片機的通信多是通過(guò)動(dòng)態(tài)數據交換(DDE)或通過(guò)自己開(kāi)發(fā)通訊驅動(dòng)程序完成。DDE是Windows平臺上的一個(gè)完整的通信協(xié) 議,組態(tài)王通過(guò)該協(xié)議與其他應用程序交換數據。但不可靠和非實(shí)時(shí)。而自己開(kāi)發(fā)通訊驅動(dòng)程序會(huì )帶來(lái)設計困難,增加系統開(kāi)發(fā)周期,可行性不高。組態(tài)王專(zhuān)門(mén)提供 一種與單片機多機串口通信方法,可滿(mǎn)足大多數系統需求。
3 PC機與單片機的硬件接口電路
圖1為上位PC機與下位單片機80C51的連接電路。PC機與單片機本身都自帶串行通訊接口,但由于在分布式系統中PC機與各單片機的分布不集 中,不能利用RS-232通訊傳輸,只能改用RS-485。RS-485采用差分式傳輸信號,最大傳輸距離為1 219 m.最大傳輸速率為10 Mb/s.對同時(shí)出現的兩條信號線(xiàn)A、B的干擾有較強的抑制能力。當兩條線(xiàn)絞在一起時(shí),被通信各種分布參數耦合過(guò)來(lái)的干擾信號可平均地分配到這兩條線(xiàn)上, 因此對RS-485的差分式傳輸線(xiàn)路而言,用雙絞線(xiàn)可獲得較強的抗干擾能力。RS-485采用二線(xiàn)與四線(xiàn)平衡傳輸方式,二線(xiàn)制可實(shí)現真正的多點(diǎn)雙向通信,但需要在傳輸線(xiàn)上接電阻(約120 Ω)。

由于80C51系列單片機STC89C52串行接口的,TTL電氣特性與RS-485電氣特性不相符,STC89C52不能與RS-485直接連接,需要電氣轉換。這里采用Maxim公司的MAX485,圖2為其接口電路。

圖2中,MAX485的RE和DE南STC89C52單片機的P1.7控制。由于MAX485以半雙工的方式工作,因此由P1.7控制其發(fā)送與 接收。當 P1.7為高電平時(shí),驅動(dòng)器使能而接收器為高阻態(tài),此時(shí)可發(fā)送數據;而當P1.7為低電平時(shí).接收器使能而驅動(dòng)器為高阻態(tài),此時(shí)接收數據。另外由于PC機 的COM口是基于RS-232的串行通訊口.其電氣特性與RS-485不一致,因此也需電平轉換。
圖3為單片機地址設置電路,單片機STC89C52的P1口的低4位用于設定本機地址,通過(guò)4位DIP開(kāi)關(guān)的組合最多可設定16種地址。如當4 位開(kāi)關(guān)全部斷開(kāi)時(shí),對應的本機地址是11 11。下位單片機在開(kāi)始工作前需先設定自己的地址,這樣,在開(kāi)機自檢時(shí)下位單機片就能獲取本機地址。

4 系統通訊協(xié)議設計
組態(tài)王提供了通過(guò)PC機與單片機串口進(jìn)行十六進(jìn)制數據通訊的驅動(dòng),而驅動(dòng)中已經(jīng)規定好其通訊協(xié)議。
4.1 通訊參數
通訊參數包括數據位、停止位、波特率、校驗方式。其中,數據位、停止位、波特率由單片機決定。組態(tài)王中的設定和單片機一致即可。校驗方式參照“數據傳輸格式”部分。
4.2 數據傳輸格式與協(xié)議說(shuō)明
格式1 組態(tài)王發(fā)送地址請求格式(檢驗位為1):

格式2單片機應答地址格式(檢驗位為0):

格式3組態(tài)王讀數據請求格式(檢驗位為0):

格式4單片機應答讀數據格式(正確)(檢驗位為O):

格式5單片機應答讀數據格式(錯誤)(檢驗位為0):

格式6組態(tài)王寫(xiě)數據請求格式(檢驗位為O):

格式7單片機應答寫(xiě)數據格式(正確)(檢驗位為0):

協(xié)議具體說(shuō)明如下:
ENQ(頭):H05,詢(xún)問(wèn),請求幀的開(kāi)始代碼;
ACK(頭):H06,確認,ACK應答幀的開(kāi)始代碼;
NAK(頭):H15,否認,NAK應答幀的開(kāi)始代碼;
EOT(尾):H04,正文的結束,請求幀的結束ASCII代碼;
ETX(尾):H03,結束正文,應答幀的結束ASCII代碼;
數據傳輸:所有數據均為16進(jìn)制數;
Sta:設備地址,1個(gè)字節,組態(tài)王設備地址范圍為0~255,此地址為單片機的地址,由單片機中的程序決定;
R:讀標志,1個(gè)字節(0x52);
W:寫(xiě)標志,1個(gè)字節(0x57);
DataType:需要交換的數據類(lèi)型,1字節。其中“1”代表字節,“2”代表字,“3”代表浮點(diǎn)型;
DataNum:讀取數據的個(gè)數,1字節;
DataAddr:數據偏移地址,2字節,低字節在前,高字節在后;
Data:實(shí)際傳輸的數據,低字節在前,高字節在后;
DataLong:?jiǎn)纹瑱C返回Data的字節數,2字節,低字節在前,高字節在后:
CRC:為從第1個(gè)字節至CRC前的所有字節的異或值,1字節;
ErrorCode:錯誤代碼,“0”代表正確應答,“1”代表數據類(lèi)型錯誤,“2”代表數據范圍超限,“3”代表指令無(wú)法識別。
5 單片機通訊程序流程設計
圖4為組態(tài)王程序流程,圖5為單片機通訊程序流程。80C51系列單片機多機通訊可歸納如下:


上位機的SM2=0,所有下位機的SM2=1,以便只接收上位機發(fā)來(lái)的地址;
上位機給下位機發(fā)送地址時(shí),第9數據位應該為1,以指示下位機接收這個(gè)地址;
所有下位機在SM2=1,RB8=1和RI=0時(shí),接收上位機發(fā)來(lái)的地址,進(jìn)入相應中斷服務(wù)程序,并與本機地址相比較,以確認是否為被尋址的下位機;
被尋址下位機通過(guò)指令清除SM2,以便正常接收上位機發(fā)送來(lái)的數據,并向上位機發(fā)回接收到的地址以便核實(shí)。未被尋址的下位機保持SM2=1,并退出各自的中斷服務(wù)程序;
完成上位機和被尋址下位機之間的數據通信后,被尋址從機使SM2=1,并退出中斷服務(wù)程序,等待下次通信。
6 結束語(yǔ)
該系統實(shí)現組態(tài)王軟件與單片機多機的實(shí)時(shí)通信,已經(jīng)在實(shí)際項目中得到應用。應用的結果表明該設計方法簡(jiǎn)單有效,實(shí)時(shí)性好,成本低廉,可以在控制與監控系統中推廣應用。
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
通信相關(guān)文章:通信原理
雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理
評論