實現無極性rs485總線通信的方法
2023-05-04 16:59:01
實現無極性rs485總線通信的方法
【專利摘要】本發明公開了一種實現無極性RS485總線通信的方法,其包括以下步驟:從機對RS485做初始狀態設置;判斷當前的RS485狀態是否處於空閒狀態;從機每300uS通過判斷RS485接收埠的電平來判斷RS485的極性;判斷計數器是否到達10次;需要從機記憶住當前的極性;如果有極性判斷計數器不為零就需要把計數器清零;判斷接收的數據是否合法;根據要求的幀格式來解析接收的數據;按照執行的標準協議來判斷此接收的一幀數據是否為本從機的需要;就是按照執行的標準協議以及已經記憶住的RS485極性來組成返回幀返回給主機。本發明給系統組建施工降低難度,通用性強。
【專利說明】實現無極性RS485總線通信的方法
【技術領域】
[0001] 本發明涉及一種通信技術,特別是涉及一種實現無極性RS4S5總線通信的方法。
【背景技術】
[0002] 現有的RS485總線存在極性,如果總線上有某個節點的A、B線接反,無法通信成 功,給系統組建施工增加難度。
【發明內容】
[0003] 本發明所要解決的技術問題是提供一種實現無極性RS485總線通信的方法,其給 系統組建施工降低難度,通用性強。
[0004] 本發明是通過下述技術方案來解決上述技術問題的:一種實現無極性RS485總線 通信的方法,其特徵在於,其包括以下步驟:
[0005] 步驟S401,從機對RS485做初始狀態設置,並且默認初始的RS485極性為正極性;
[0006] 步驟S402,判斷當前的RS485狀態是否處於空閒狀態,如果空閒就執行步驟S403, 如果不空閒就執行步驟S406 ;
[0007] 步驟S403,從機每300uS通過判斷RS485接收埠的電平來判斷RS485的極性,高 電平為正極性,低電平為反極性,為了防止判斷錯誤,做計數器操作,如果本次判斷和上次 是一致,則計數器加1,如果不一致則計數器清零;
[0008] 步驟S404,判斷計數器是否到達10次,如果到達1〇次就執行步驟S405,如果不到 10次就返回並執行步驟S402 ;
[0009] 步驟S405,需要從機記憶住當前的極性,並且返回執行步驟S402 ;
[0010] 步驟S406,如果有極性判斷計數器不為零就需要把計數器清零,為下次判斷極性 做準備;然後按照記憶的極性來接收主機發送過來的數據;
[0011] 步驟S407,按照RS485總線通信的波特率、校驗位、停止位來判斷接收的數據是否 合法;如果不合法就返回到步驟SS402,如果合法就執行步驟S408 ;
[0012] 步驟S408,根據要求的幀格式來解析接收的數據;
[0013] 步驟S409,按照執行的標準協議來判斷此接收的一幀數據是否為本從機的需要;
[0014] 步驟410,就是按照執行的標準協議以及已經記憶住的RS485極性來組成返回幀 返回給主機。
[0015] 優選地,所述步驟S409如果是本從機需要的就執行步驟S410,如果不是就返回到 步驟S402。
[0016] 本發明的積極進步效果在於:本發明給系統組建施工降低難度,通用性強,和現有 的有極性設備都能兼容,另外,成本低,可靠性高。
【專利附圖】
【附圖說明】
[0017] 圖1為本發明實現無極性RS485總線通信的方法的流程圖。
【具體實施方式】
[0018] 下面結合附圖給出本發明較佳實施例,以詳細說明本發明的技術方案。
[0019] 如圖1所示,本發明實現無極性RS485總線通信的方法包括以下步驟:
[0020] 步驟401,從機對RS485做初始狀態設置,並且默認初始的RS4S5極性為正極性;
[0021] 步驟402,判斷當前的RS485狀態是否處於空閒狀態,如果空閒就執行步驟403,如 果不空閒就執行步驟406;
[0022] 步驟403,從機每300uS通過判斷RS485接收埠的電平來判斷RS4S5的極性,高 電平為正極性,低電平為反極性,為了防止判斷錯誤,做計數器操作,如果本次判斷和上次 是一致,則計數器加1,如果不一致則計數器清零;
[0023] 步驟404,判斷計數器是否到達10次,如果到達10次就執行步驟405,如果不到10 次就返回並執行步驟402;
[0024] 步驟405,需要從機記憶住當前的極性,並且返回執行步驟402 ;
[0025] 步驟406,如果有極性判斷計數器不為零就需要把計數器清零,為下次判斷極性做 準備;然後按照記憶的極性來接收主機發送過來的數據;
[0026] 步驟407,按照RS485總線通信的波特率、校驗位、停止位等特性來判斷接收的數 據是否合法;如果不合法就返回到步驟402,如果合法就執行步驟408 ;
[0027] 步驟408,根據要求的幀格式來解析接收的數據;
[0028] 步驟409,按照執行的標準協議來判斷此接收的一幀數據是否為本從機的需要。如 果是本從機需要的就執行410,如果不是就返回402 ;
[0029] 步驟410,就是按照執行的標準協議以及己經記憶住的RS485極性來組成返回幀 返回給主機。
[0030] 本發明從機定時去檢測RS485接收埠的電平,以此來判斷當前RS485的極性並 記憶住當前RS485的極性,在主機給從機發送數據的時候就按照記憶的極性來判斷數據的 合法性,並按照記憶的極性發送數據給主機。本發明通過在總線空閒時快速的判斷總線 的極性,然後在通信發起的時候對接收到的數據和發送的數據做反相處理,能很好的實現 RS485的無極性通信,達到無論RS485接口的A、B線正接還是反接都能使總線正常通信。本 發明特點如下:操作a,在RS485總線空閒時,從機間隔300uS判斷總線上的極性,如果連續 10次總線極性相同,從機就記憶住總線的極性。操作b,本發明從機處於接收等待狀態。操 作c,從機接收到主機發來的數據,判讀主機發來的數據是否合法,如果合法就執行操作d, 如果不合法就繼續回到操作a。操作d,把接收到的數據按照記憶到的極性操作並解析數據 幀,如果是本從機的合法數據就執行操作e,不是本從機的數據幀就繼續回到a操作。操作 e,從機按照數據幀的定義和記憶住的極性組織好返回數據幀,發送給主機。發送完成回到 a操作。
[0031] 本領域的技術人員可以對本發明進行各種改型和改變。因此,本發明覆蓋了落入 所附的權利要求書及其等同物的範圍內的各種改型和改變。
【權利要求】
1. 一種實現無極性RS485總線通信的方法,其特徵在於,其包括以下步驟: 步驟S401,從機對RS485做初始狀態設置,並且默認初始的RS485極性為正極性; 步驟S402,判斷當前的RS485狀態是否處於空閒狀態,如果空閒就執行步驟S403,如果 不空閒就執行步驟S406 ; 步驟S403,從機每300uS通過判斷RS485接收埠的電平來判斷RS4S5的極性,高電平 為正極性,低電平為反極性,為了防止判斷錯誤,做計數器操作,如果本次判斷和上次是一 致,則計數器加1,如果不一致則計數器清零; 步驟S404,判斷計數器是否到達10次,如果到達10次就執行步驟S405,如果不到10 次就返回並執行步驟S402 ; 步驟S405,需要從機記憶住當前的極性,並且返回執行步驟S402 ; 步驟S406,如果有極性判斷計數器不為零就需要把計數器清零,為下次判斷極性做準 備;然後按照記憶的極性來接收主機發送過來的數據; 步驟S407,按照RS485總線通信的波特率、校驗位、停止位來判斷接收的數據是否合 法;如果不合法就返回到步驟SS402,如果合法就執行步驟S408 ; 步驟S408,根據要求的幀格式來解析接收的數據; 步驟S409,按照執行的標準協議來判斷此接收的一幀數據是否為本從機的需要; 步驟410,就是按照執行的標準協議以及已經記憶住的RS485極性來組成返回幀返回 給主機。
2·如權利要求1所述的實現無極性RS485總線通信的方法,其特徵在於,所述步驟 S4〇9如果是本從機需要的就執行步驟S410,如果不是就返回到步驟S402。
【文檔編號】H04L12/40GK104219120SQ201410394837
【公開日】2014年12月17日 申請日期:2014年8月11日 優先權日:2014年8月11日
【發明者】焦原志 申請人:宜興市森維電子有限公司