本申請涉及電子,特別是涉及一種可避免總線沖突的rs485通信方法、主機和從機。
背景技術(shù):
1、rs485通信在工業(yè)自動化、樓宇自動化等領(lǐng)域是一種廣泛使用的串行通信協(xié)議,它允許在一個總線上連接多個設(shè)備,實現(xiàn)多點通信。但rs485通常工作在半雙工模式,這意味著在任何給定的時間,設(shè)備要么發(fā)送數(shù)據(jù),要么接收數(shù)據(jù),但不能同時進(jìn)行發(fā)送和接收,如果兩個設(shè)備同時發(fā)送數(shù)據(jù),可能會發(fā)生總線沖突,導(dǎo)致數(shù)據(jù)發(fā)送失敗。
2、為避免總線沖突,現(xiàn)有技術(shù)大多采用主從模式和輪詢方式,即主機依次向各從機發(fā)送查詢指令,從機在接收到特定指令后回應(yīng)數(shù)據(jù),這樣保證了總線上同一時刻只有一個設(shè)備發(fā)送數(shù)據(jù),避免了總線沖突。雖然在rs485通信中輪詢方式雖然有效避免了沖突,但它也存在著以下不足:
3、1)效率低下:主機需依次向每個從機發(fā)送大量查詢指令,增加總線負(fù)載和主機mcu資源占用。
4、2)實時性差:主機需要等待從機響應(yīng),如果從機響應(yīng)不及時,可能導(dǎo)致總線連接超時。
5、3)數(shù)據(jù)冗余:從機上報所有請求中包含的數(shù)據(jù),包含長期未變化的數(shù)據(jù),造成數(shù)據(jù)冗余。
6、4)數(shù)據(jù)更新延時:未被輪詢到的從機不能及時上報數(shù)據(jù),導(dǎo)致從機變化數(shù)據(jù)更新的延時,特別是當(dāng)從機數(shù)量較多時,數(shù)據(jù)更新延時比較大。
技術(shù)實現(xiàn)思路
1、基于此,針對上述技術(shù)問題,提供一種可避免總線沖突的rs485通信方法、主機和從機,用以解決現(xiàn)有技術(shù)效率低下、實時性差、接收的數(shù)據(jù)冗余以及數(shù)據(jù)更新延時的問題。
2、第一方面,一種rs485通信總線沖突解決方法,應(yīng)用于通信系統(tǒng)中的主機,所述通信系統(tǒng)包括多個從機、通信總線和1個主機,所述多個從機通過通信總線和主機連接;所述方法包括:
3、步驟s1:當(dāng)接收到從機的總線申請指令時或需要主動下發(fā)控制指令時,檢測總線是否空閑,如果總線忙,則繼續(xù)檢測,直至總線空閑后,向與所述主機連接的多個從機下發(fā)禁止使用總線的指令;所述總線申請指令為從機需要主動上報數(shù)據(jù)時檢測到總線空閑后向主機上傳的;
4、步驟s2:在下發(fā)禁止使用總線的指令后,等待第一設(shè)定時間再次檢測總線是否空閑,若空閑,則向發(fā)送總線申請指令的從機發(fā)送控制指令或向指定的從機發(fā)送控制指令;
5、步驟s3:接收從機響應(yīng);
6、步驟s4:判斷是否已經(jīng)將所有從機發(fā)送的總線申請指令處理完成、或是否已經(jīng)將需要主動下發(fā)的控制指令處理完成,若是,向與所述主機連接的多個從機發(fā)送釋放總線命令。
7、上述方案中,可選地,所述等待第一設(shè)定時間再次檢測總線是否空閑,若不空閑,則重新向與所述主機連接的多個從機下發(fā)禁止使用總線的指令,并重復(fù)執(zhí)行步驟s2;
8、若連續(xù)多次向與主機連接的多個從機下發(fā)禁止使用總線的指令后,均等待第一設(shè)定時間后再次檢測到總線處于不空閑狀態(tài)時,則上報故障。
9、上述方案中,可選地,所述第一設(shè)定時間為當(dāng)下網(wǎng)絡(luò)傳輸3個字節(jié)所需要的時間。
10、上述方案中,可選地,所述向指定的從機發(fā)送控制指令,若超過一定時間未接收到從機響應(yīng),則重新向指定的從機發(fā)送控制指令。
11、第二方面,一種可避免總線沖突的rs485通信方法,應(yīng)用于通信系統(tǒng)中的第一從機,所述通信系統(tǒng)包括多個第二從機、1個第一從機、通信總線和1個主機;所述第一從機、第二從機通過通信總線和主機連接;所述方法包括:
12、步驟s1:當(dāng)?shù)谝粡臋C需要主動上報數(shù)據(jù)時,檢測總線是否空閑,若空閑,向所述主機發(fā)送總線申請指令;若第一從機不需要主動上報數(shù)據(jù)時,直接執(zhí)行步驟s2;
13、步驟s2:接收主機下發(fā)禁止使用總線的指令;所述禁止使用總線的指令是主機在接受到所述第一從機發(fā)送的總線申請指令后、或需要主動向所述第一從機下發(fā)控制指令時,檢測總線空閑后向所述第一從機和多個第二從機共同下發(fā)的;
14、步驟s3:接收主機發(fā)送的控制指令;所述控制指令是主機下發(fā)禁止使用總線的指令后,等待第一設(shè)定時間再次檢測到總線空閑時向所述第一從機下發(fā)的;
15、步驟s4:向所述主機返回響應(yīng);
16、步驟s5:接受主機下發(fā)的釋放總線命令,以調(diào)整狀態(tài)為能夠申請總線的狀態(tài);所述釋放總線命令為主機判斷已經(jīng)將第一從機和所有第二從機發(fā)送的總線申請指令處理完成、或已經(jīng)將需要主動下發(fā)的控制指令處理完成后下發(fā)的。
17、上述方案中,可選地,所述當(dāng)?shù)谝粡臋C需要主動上報數(shù)據(jù)時,檢測總線是否空閑,若不空閑,則間隔第二設(shè)定時間再次檢測總線是否空閑,直到檢測到總線空閑。
18、上述方案中,進(jìn)一步可選地,所述第一設(shè)定時間和第二設(shè)定時間為當(dāng)下網(wǎng)絡(luò)傳輸3個字節(jié)所需要的時間。
19、上述方案中,進(jìn)一步可選地,所述當(dāng)下網(wǎng)絡(luò)下傳輸3個字節(jié)所需要的時間根據(jù)串口通訊波特率、數(shù)據(jù)位位數(shù)、起始位位數(shù)、停止位位數(shù)來計算,具體通過以下公式:
20、
21、第三方面,一種主機,包括存儲器和處理器,所述存儲器存儲有計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)上述第一方面所述的一種可避免總線沖突的rs485通信方法的步驟。
22、第四方面,一種從機,其上存儲有計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述第二方面所述的一種可避免總線沖突的rs485通信方法的步驟。
23、本申請至少具有以下有益效果:
24、本申請通過主機和從機在使用總線前,均需先檢測總線是否空閑,另外從機需等待主機批準(zhǔn),主機要通知各個從機,并在使用完總線后由主機釋放總線,從而有效避免了總線沖突。在從機在數(shù)據(jù)有變化時主動時,不需要等到主機的輪詢,主動向主機申請總線申請指令,主機向所有從機下發(fā)禁止使用總線的指令,直到接收到從機的數(shù)據(jù);由此提高了通信效率和實時性。主機需要下發(fā)控制命令時,給所有從機下發(fā)禁止使用總線的指令,在下發(fā)控制命令后接收到數(shù)據(jù)之后,在釋放總線使用權(quán)。由此,在從機需要上報數(shù)據(jù)時在進(jìn)行上報,而不是采取輪詢的方式,每次輪詢均上報以此數(shù)據(jù),由此減少數(shù)據(jù)冗余,僅傳輸必要信息,且有效地減少主機負(fù)載,提升系統(tǒng)整體性能;在從機需要上報數(shù)據(jù)時及可以自動申請上報,不需要等待主機的問詢,由此優(yōu)化數(shù)據(jù)傳輸流程,降低數(shù)據(jù)傳輸延時,提高從機數(shù)據(jù)上報的及時性和準(zhǔn)確性。
1.一種可避免總線沖突的rs485通信方法,應(yīng)用于通信系統(tǒng)中的主機,所述通信系統(tǒng)包括多個從機、通信總線和1個主機,所述多個從機通過通信總線和主機連接;其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的可避免總線沖突的rs485通信方法,其特征在于,所述等待第一設(shè)定時間再次檢測總線是否空閑,若不空閑,則重新向與所述主機連接的多個從機下發(fā)禁止使用總線的指令,并重復(fù)執(zhí)行步驟s2;
3.根據(jù)權(quán)利要求1所述的可避免總線沖突的rs485通信方法,其特征在于,所述第一設(shè)定時間為當(dāng)下網(wǎng)絡(luò)傳輸3個字節(jié)所需要的時間。
4.根據(jù)權(quán)利要求1所述的可避免總線沖突的rs485通信方法,其特征在于,所述向指定的從機發(fā)送控制指令,若超過一定時間未接收到從機響應(yīng),則重新向指定的從機發(fā)送控制指令。
5.一種可避免總線沖突的rs485通信方法,應(yīng)用于通信系統(tǒng)中的第一從機,所述通信系統(tǒng)包括多個第二從機、1個第一從機、通信總線和1個主機;所述第一從機、第二從機通過通信總線和主機連接;其特征在于,所述方法包括:
6.根據(jù)權(quán)利要求5所述的可避免總線沖突的rs485通信方法,其特征在于,所述當(dāng)?shù)谝粡臋C需要主動上報數(shù)據(jù)時,檢測總線是否空閑,若不空閑,則間隔第二設(shè)定時間再次檢測總線是否空閑,直到檢測到總線空閑。
7.根據(jù)權(quán)利要求6所述的可避免總線沖突的rs485通信方法,其特征在于,所述第一設(shè)定時間和第二設(shè)定時間為當(dāng)下網(wǎng)絡(luò)傳輸3個字節(jié)所需要的時間。
8.根據(jù)權(quán)利要求7所述的可避免總線沖突的rs485通信方法,其特征在于,所述當(dāng)下網(wǎng)絡(luò)下傳輸3個字節(jié)所需要的時間根據(jù)串口通訊波特率、數(shù)據(jù)位位數(shù)、起始位位數(shù)、停止位位數(shù)來計算,具體通過以下公式:
9.一種主機,包括存儲器和處理器,所述存儲器存儲有計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)權(quán)利要求1至4中任一項所述的方法的步驟。
10.一種從機,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)權(quán)利要求5至8中任一項所述的方法的步驟。