專利名稱:一種實現(xiàn)分布式系統(tǒng)的同步控制的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式系統(tǒng),尤其涉及到 一種實現(xiàn)分布式系統(tǒng)的同步控制的方 法和系統(tǒng)。
背景技術(shù):
在現(xiàn)代工業(yè)控制、計算機(jī)通信等領(lǐng)域,分布式系統(tǒng)以其極好的優(yōu)異特性, 得到了越來越多的應(yīng)用,但同步控制一直是其應(yīng)用中存在的普遍技術(shù)難題。同 步控制是分布式系統(tǒng)的核心技術(shù)之一,其目的是維護(hù)一個全局一致的物理或邏 輯時鐘,以使分布式系統(tǒng)中的消息、事件及各節(jié)點(diǎn)與時間有關(guān)的行為能夠有一 個全局一致的解釋,確保節(jié)點(diǎn)發(fā)送和接收消息在時間邏輯上是完全正確的。在 分布式系統(tǒng)中,不同的節(jié)點(diǎn)需要統(tǒng)一的時鐘來實現(xiàn)全局的系統(tǒng)節(jié)拍,如果沒有 全局的系統(tǒng)節(jié)拍,就m^獲得精確的同步控制。,前常見的同步控制的方法有1) 不同節(jié)點(diǎn)使用同一個物理時鐘源,這種方法最為簡單和直觀。但在分布 式系統(tǒng)中,由于各節(jié)點(diǎn)地理位置的分散性,采用這種方法需要增加單獨(dú)的時鐘 線,在應(yīng)用中并不易于實現(xiàn)。2) 使用全球定位系統(tǒng)(GPS)衛(wèi)星時鐘進(jìn)行時鐘同步; GPS衛(wèi)星時鐘,具有工作穩(wěn)定、時間精度高、安全可靠、無需人工校時維護(hù)等優(yōu)點(diǎn),但是在使用時,需要購買GPS接收機(jī),而且,由于GPS歸美國政 府所有,受控于美國國防部,對世界各地的用戶未有任何政府承諾,而且用戶 只支付了 GPS接收機(jī)的費(fèi)用,并未支付GPS的使用費(fèi)用。因此這種方法自主 性差,也帶來一些不穩(wěn)定因素。因此,這種方法實際使用中具有其局限性。 3 )使用ieeel588協(xié)議,解決網(wǎng)絡(luò)時鐘同步問題;2002年提出的ieeel588標(biāo)準(zhǔn)旨在解決網(wǎng)絡(luò)的時鐘同步問題,制定了將^t 在測量和控制系統(tǒng)內(nèi)的分離節(jié)點(diǎn)上獨(dú)立運(yùn)行的時鐘,同步到一個高精度和高準(zhǔn) 確度時鐘上的協(xié)議。這種ieeel588標(biāo)準(zhǔn)的方法在實際應(yīng)用中,需要較高成本, 技術(shù)復(fù)雜,實現(xiàn)難度較高。發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種實現(xiàn)分布式系統(tǒng)的同步控制的 方法和系統(tǒng),佳z彈分布式系統(tǒng)的同步控制簡單而易于實現(xiàn)。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的 一種實現(xiàn)分布式系統(tǒng)的同步控制的方法,該方法包括 主機(jī)在當(dāng)前呼叫周期產(chǎn)生呼叫包,并發(fā)送呼叫包給分布式系統(tǒng)中的所有從機(jī);主機(jī)延時至從機(jī)觸發(fā)的外部中斷的起始時刻,執(zhí)行同步控制; 各從機(jī)接收呼叫包,產(chǎn)生接收中斷,由接收中斷觸發(fā)外部中斷,在外部中斷的起始時刻,執(zhí)行同步控制。所述產(chǎn)生呼叫包,具體為設(shè)置第9位數(shù)據(jù)位為呼叫包標(biāo)識,根據(jù)上一個呼叫周期中的數(shù)據(jù)傳送方向設(shè)置數(shù)據(jù)傳送方向標(biāo)識,并設(shè)置呼叫從機(jī)的地址;和/或,所述從機(jī)包括MCU和外部中斷電路,該外部中斷電路至少包括單穩(wěn)態(tài)觸 發(fā)電路,所述由接收中斷觸發(fā)外部中斷電路,具體為接收中斷中,設(shè)置MCU 的與外部中斷電路相連接的輸出端口為高,外部中斷電路中的單穩(wěn)態(tài)觸發(fā)電路 接收到所述端口為高后,單穩(wěn)態(tài)觸發(fā)電路的輸出端觸發(fā)MCU的外部中斷;和/ 或,所述發(fā)送呼叫包之前,進(jìn)一步包括延時間歇時間,所述間歇時間內(nèi)不進(jìn) 行數(shù)據(jù)傳輸;和/或,所述主機(jī)延時的延時時間的長度為主機(jī)發(fā)送呼叫包的時刻至從機(jī)觸發(fā)外 部中斷的起始時刻之間的時間差,所述時間差配置在主機(jī)中;或者,由呼叫包的發(fā)送時間加上從才幾的接收中斷響應(yīng)時間和外部中斷響應(yīng)時間計算所得。所述觸發(fā)MCU的外部中斷之后,進(jìn)一步包括在MCU的外部中斷中,對 MCU的硬件時鐘定時器的寄存器進(jìn)行復(fù)位處理;和/或,設(shè)置每個呼叫周期內(nèi)允許傳送的數(shù)據(jù)的最大字節(jié)數(shù),所述發(fā)送呼叫包之后 進(jìn)一步包括主才;^艮據(jù)當(dāng)前呼叫周期向AM幾發(fā)送的數(shù)據(jù)包數(shù)據(jù)在其所屬數(shù)據(jù)包 中的位置進(jìn)4亍數(shù)據(jù)標(biāo)識;和/或,設(shè)置每個呼叫周期內(nèi)允許傳送的數(shù)據(jù)的最大字節(jié)數(shù),所述從機(jī)接收呼叫包 之后進(jìn)一步包括根據(jù)當(dāng)前呼叫周期向主機(jī)發(fā)送的數(shù)據(jù)包數(shù)據(jù)在其所屬數(shù)據(jù)包 中的位置進(jìn)行數(shù)據(jù)標(biāo)識。所述執(zhí)行同步控制之后,進(jìn)一步包括依據(jù)上一個呼叫周期中的數(shù)據(jù)標(biāo)識 以及所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識、呼叫從機(jī)的地址,在當(dāng)前呼叫周期繼 續(xù)數(shù)據(jù)的傳送。該方法進(jìn)一步包括進(jìn)行同步控制的異常保護(hù),包括設(shè)備作為從機(jī)投入已有分布式系統(tǒng)的保護(hù),具體為主機(jī)通過發(fā)送系統(tǒng)檢 測命令得知有從機(jī)的投入,分布式系統(tǒng)主機(jī)從原本空閑的從機(jī)地址中去除投入 的從機(jī)的地址,將^L^設(shè)備作為從機(jī)納入分布式系統(tǒng);和/或,設(shè)備作為主機(jī)投入已有分布式系統(tǒng)的保護(hù),具體為原主機(jī)通過發(fā)送系統(tǒng) 檢測命令確定有主機(jī)^/v,根據(jù)該主機(jī)是否發(fā)申請主機(jī)命令,確定分布式系統(tǒng) 的主才幾;和/或,從機(jī)退出分布式系統(tǒng)的保護(hù),具體為當(dāng)主機(jī)檢測到有從機(jī)退出分布式系 統(tǒng)時,主機(jī)進(jìn)4于對應(yīng)處理;和/或,分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出的保護(hù),具體為各從機(jī)在設(shè)置的 異常時間內(nèi)沒有接收到呼叫包,則各從才M艮據(jù)自身地址號在對應(yīng)時間主動發(fā)送 申請主機(jī)命令,先發(fā)送申請主機(jī)命令的從機(jī)成為主機(jī)。一種實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),該系統(tǒng)包括主機(jī),用于在當(dāng)前呼叫周期性產(chǎn)生呼叫包,發(fā)送呼叫包后,延時至從機(jī)觸 發(fā)的外部中斷的起始時刻,執(zhí)行主機(jī)的同步控制;從機(jī),用于接收主機(jī)下發(fā)的呼叫包,產(chǎn)生接收中斷,由接收中斷觸發(fā)外部 中斷,在外部中斷的起始時刻,執(zhí)行該從機(jī)自身的同步控制。所述主機(jī)包括第一定時模塊,用于對主機(jī)發(fā)送呼叫包的呼叫周期進(jìn)行計時,在每個呼叫周期觸發(fā)呼叫包模塊;呼叫包模塊,用于根據(jù)第一定時模塊的觸發(fā)產(chǎn)生地址幀作為呼叫包; 第一收發(fā)模塊,用于發(fā)送呼叫包模塊產(chǎn)生的呼叫包,并同時觸發(fā)延時同步模塊;延時同步模塊,用于延時至從機(jī)觸發(fā)的外部中斷的起始時刻時,執(zhí)行主機(jī) 的同步控制;和/或,從機(jī)包括第二收發(fā)模塊、接收中斷模塊和外部中斷模塊,其中, 第二^模塊,用于接收來自主機(jī)的呼叫包;接收中斷模塊,用于檢測到第二收發(fā)模塊收到呼叫包時產(chǎn)生接收中斷,并觸發(fā)外部中斷模塊;外部中斷模塊,用于根據(jù)接收中斷模塊的觸發(fā),觸發(fā)外部中斷,在外部中斷的起始時刻,執(zhí)行從才幾的同步控制。所述主機(jī)進(jìn)一步還包括第一數(shù)據(jù)標(biāo)識模塊和第一數(shù)據(jù)控制模塊,其中, 第一定時模塊在每個呼叫周期,進(jìn)一步用于觸發(fā)第一數(shù)據(jù)標(biāo)識模塊; 第一數(shù)據(jù)標(biāo)識模塊,用于根據(jù)第一收發(fā)模塊中主機(jī)在當(dāng)前呼叫周期內(nèi)向從機(jī)發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;第一收發(fā)模塊,進(jìn)一步用于主機(jī)和從機(jī)間的數(shù)據(jù)傳送,向從機(jī)發(fā)送所述數(shù)據(jù)標(biāo)識;還用于接收從才幾發(fā)送的數(shù)據(jù)標(biāo)識;延時同步模塊執(zhí)行主機(jī)的同步控制后,進(jìn)一步用于觸發(fā)第一數(shù)據(jù)控制模塊; 第一數(shù)據(jù)控制模塊,用于根據(jù)延時同步模塊的觸發(fā),依據(jù)上一個呼叫周期中的數(shù)據(jù)標(biāo)識及所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī)的地址,控制第一4議模塊在當(dāng)前呼叫周期與從機(jī)間傳送數(shù)據(jù);和/或,所述從機(jī)進(jìn)一步包括第二數(shù)據(jù)標(biāo)識模塊和第二數(shù)據(jù)控制模塊,其中,第二數(shù)據(jù)標(biāo)識模塊,用于根據(jù)第二收發(fā)模塊中從機(jī)在當(dāng)前呼叫周期內(nèi)向主機(jī)發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;第二收發(fā)模塊,進(jìn)一步用于從機(jī)和主機(jī)間的數(shù)據(jù)傳送;向主機(jī)發(fā)送所述數(shù) 據(jù)標(biāo)識;還用于接收主機(jī)發(fā)送的數(shù)據(jù)標(biāo)識;外部中斷才莫塊執(zhí)行從機(jī)的同步控制后,進(jìn)一步用于觸發(fā)第二數(shù)據(jù)控制模塊;第二數(shù)據(jù)控制模塊,用于根據(jù)外部中斷模塊的觸發(fā),依據(jù)上一個呼叫周期 中的數(shù)據(jù)標(biāo)識及所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī)的地址,控制第 二收發(fā)模塊在當(dāng)前呼叫周期與主機(jī)間傳送數(shù)據(jù)。所述主機(jī)進(jìn)一步包括間歇時間模塊,用于控制第一收發(fā)模塊延時間歇時 間后發(fā)送呼叫包;和/或,所述從機(jī)進(jìn)一步包括硬件時鐘定時器,外部中斷模塊進(jìn)一步用于在外部 中斷過程中對硬件時鐘定時器的寄存器進(jìn)行復(fù)位處理。所述主機(jī)包括第二定時模塊、廣播命令模塊、檢測分析模塊和地址發(fā)送 模塊,其中,第二定時模塊,用于對檢測周期進(jìn)行計時,每個檢測周期觸發(fā)廣*令模塊;廣才臉令模塊,用于根據(jù)第二定時模塊的觸發(fā),發(fā)送系統(tǒng)檢測命令;檢測分析模塊,用于接收應(yīng)答,通過檢測應(yīng)答的地址判斷是否有設(shè)備新投 入或從機(jī)退出分布式系統(tǒng),確定有從機(jī)退出分布式系統(tǒng)時,進(jìn)行對應(yīng)處理;確 定有從機(jī)新投入分布式系統(tǒng)時,觸發(fā)地址發(fā)送模塊從原本空閑的從機(jī)地址中去 除所述地址;確定有主機(jī)新投入分布式系統(tǒng)時,并且未接收到主機(jī)申請命令, 觸發(fā)地址發(fā)送模塊向?qū)?yīng)主機(jī)發(fā)送可用從機(jī)地址;地址發(fā)送模塊,用于根據(jù)檢測分析模塊的觸發(fā)從原本空閑的從機(jī)地址中去 除新投入從機(jī)的地址或提供可用^M4幾地址;所述從機(jī)或新投入的所述設(shè)備包括廣播命令應(yīng)答模塊、主機(jī)申請模塊和 地址轉(zhuǎn)換模塊,其中,廣播命令應(yīng)答模塊,用于接收來自主機(jī)的系統(tǒng)檢測命令,使用可用從機(jī)地址或主一幾地址向主沖幾返回應(yīng)答;主機(jī)申請模塊,用于發(fā)送申請主機(jī)命令;地址轉(zhuǎn)換模塊,用于更改自身主機(jī)地址為主機(jī)提供的可用從機(jī)地址或更改 自身從機(jī)地址為主機(jī)地址。所述地址轉(zhuǎn)換;f莫塊所在的設(shè)備為主機(jī)時,檢測分析模塊確定應(yīng)答的地址與主機(jī)地址相同時,進(jìn)一步用于確定是否在 設(shè)定時間內(nèi)收到主機(jī)申請命令,如果收到,則確定有主機(jī)新^^分布式系統(tǒng), 觸發(fā)地址轉(zhuǎn)換模塊;如果未收到,則觸發(fā)地址發(fā)送模塊向?qū)?yīng)設(shè)備發(fā)送可用從 機(jī)地址;地址轉(zhuǎn)換模塊,用于根據(jù)檢測分析模塊的觸發(fā)將主機(jī)地址更改為可用從機(jī) 地址。本發(fā)明提供的一種實現(xiàn)分布式系統(tǒng)的同步控制的方法和系統(tǒng),分布式系統(tǒng) 的主機(jī)周期性地發(fā)送呼叫包,將此呼叫包作為整個分布式系統(tǒng)的同步信號,實 現(xiàn)整個分布式系統(tǒng)的同步控制,從而,在分布式系統(tǒng)中不用增加額外的時鐘線 纜,只需要簡單的硬件電路,再配合易于實現(xiàn)的軟件流程,就可以實現(xiàn)分布式 系統(tǒng)的同步控制,所需的硬件成本非常低,簡單易行,具有較大的實用價值。
圖1為本發(fā)明中基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的方法流程示 意圖;圖2為本發(fā)明中基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng)結(jié)構(gòu)示 意圖;系統(tǒng)結(jié)構(gòu)示意圖;圖4為本發(fā)明中監(jiān)控器之間的連接示意圖; 圖5為本發(fā)明中外部中斷電路示意圖;圖6為本發(fā)明中所有監(jiān)控器實現(xiàn)執(zhí)行PWM同步命令的流程示意圖。
具體實施方式
本發(fā)明的基本思想是在分布式系統(tǒng)中,主機(jī)周期性地發(fā)送呼叫包,此呼 叫包作為整個分布式系統(tǒng)的同步信號,分布式系統(tǒng)中各個從機(jī)接收到呼叫包后 產(chǎn)生接收中斷,由接收中斷觸發(fā)外部中斷,在外部中斷的起始時刻執(zhí)行同步控 制;主機(jī)發(fā)送呼叫包后,延時至從機(jī)觸發(fā)的外部中斷的起始時刻,執(zhí)行同步控 制,從而實現(xiàn)整個分布式系統(tǒng)的同步控制。下面以RS485網(wǎng)絡(luò)為例,結(jié)合附圖和具體實施例對本發(fā)明再做進(jìn)一步的詳 細(xì)說明。本發(fā)明基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的方法,如圖l所示, 該方法的具體步驟包括步驟101:分布式系統(tǒng)中的所有設(shè)備在初始投入運(yùn)作前,確定呼叫包的格 式、呼叫周期以及主機(jī)執(zhí)行同步控制的延時時間,所有設(shè)備在初始投入運(yùn)作時, 進(jìn)入靜音狀態(tài);分布式系統(tǒng)中的所有設(shè)備在初始^v運(yùn)作前,首先約定廣播命令和主機(jī)對 應(yīng)的地址,例如,約定地址為0的數(shù)據(jù)包表示對分布式系統(tǒng)內(nèi)所有從才幾發(fā)送的 廣播命令,地址127表示主機(jī)地址,同時,確定呼叫包格式,以及根據(jù)實際情 況、分布式系統(tǒng)要求同步控制的時間以及從機(jī)的硬件時鐘周期,確定分布式系 統(tǒng)中主機(jī)發(fā)送呼叫包的周期、即呼叫周期。其中,確定呼叫包格式具體為在RS485網(wǎng)絡(luò)通信中,數(shù)據(jù)包全部采用9位數(shù)據(jù)位,其中第9位(TB8)被用 來表征該數(shù)據(jù)包的幀是地址幀還是數(shù)據(jù)幀,在正常通信中,設(shè)定TB8為0表征數(shù) 據(jù)幀,采用數(shù)據(jù)幀傳送數(shù)據(jù)包,這里,設(shè)定TB8為1表征地址幀,采用地址幀作 為呼叫包;進(jìn)一步的,呼叫包中除了第9位,在剩下的8個數(shù)據(jù)位中,取其中l(wèi)位(TBx) 設(shè)置為數(shù)據(jù)傳送方向標(biāo)識,標(biāo)識主機(jī)在發(fā)送呼叫包時,RS485網(wǎng)絡(luò)通信中數(shù)據(jù) 的傳送方向,設(shè)置TBx為O,表示主機(jī)在發(fā)送呼叫包時,數(shù)據(jù)由AM幾發(fā)往主機(jī); TBx為l,表示主才幾在發(fā)送呼叫包時,數(shù)據(jù)由主機(jī)發(fā)往:地址匹配的從機(jī);其中,呼叫包中剩下的7個數(shù)據(jù)位用來表示呼叫從機(jī)的地址,該呼叫從機(jī)的地址為主機(jī) 發(fā)送呼叫包時與主機(jī)有數(shù)據(jù)傳送的從機(jī)的地址,因此,主機(jī)可以將數(shù)據(jù)發(fā)往除 了廣播命令地址和主機(jī)地址外的126個地址中的任意一個從機(jī);其中,確定的呼叫周期要短于從機(jī)的硬件時鐘周期;同時,設(shè)定主機(jī)執(zhí)行同步控制的延時時間,延時時間的長度可以是主機(jī)發(fā) 送呼叫包的時刻至從機(jī)的MCU觸發(fā)外部中斷的起始時刻之間的時間差,該時間 差配置在主;f幾中,該時間差可以通過多次實際測量得到,以確保精確性;或者 通過計算來確定,計算方法為呼叫包的發(fā)送時間加上從機(jī)的接收中斷響應(yīng)時 間和外部中斷響應(yīng)時間,呼叫包的發(fā)送時間、從才幾的4妄收中斷響應(yīng)時間、從才幾 的外部中斷響應(yīng)時間的具體取值均為已知,呼叫包的發(fā)送時間即一個呼叫包由 主機(jī)發(fā)送的時刻開始至從機(jī)收到的時刻結(jié)束,可以是通過多次測量得到的經(jīng)驗 值,從機(jī)的接收中斷響應(yīng)時間和外部中斷響應(yīng)時間與從機(jī)的設(shè)備性能有關(guān)。然后,在分布式系統(tǒng)中,將一臺設(shè)備的地址設(shè)置為約定的主機(jī)地址,作為 主機(jī),其他設(shè)備設(shè)置從機(jī)地址,作為從機(jī),所有設(shè)備在初始投入運(yùn)作的一段時 間內(nèi),均不發(fā)送數(shù)據(jù),只處于接收狀態(tài),稱為靜音狀態(tài)。靜音狀態(tài)主要是為了 保證分布式系統(tǒng)中只有 一 臺作為主機(jī)的設(shè)備。設(shè)備投入到已有的分布式系統(tǒng)時, 被設(shè)置為主機(jī)的設(shè)備,如果在靜音狀態(tài)時沒有接收到呼叫包,則進(jìn)行主機(jī)運(yùn)作; 如果在靜音狀態(tài)時接收到呼叫包,說明分布式系統(tǒng)中有另一主機(jī)存在,則分布 式系統(tǒng)認(rèn)為該設(shè)備作為主機(jī)投入已有分布式系統(tǒng),將采取異常保護(hù);步驟102:分布式系統(tǒng)的所有i殳備在靜音狀態(tài)后,由主機(jī)開始呼叫周期的計 時,并在每個呼叫周期向分布式系統(tǒng)中所有從機(jī)發(fā)送由主機(jī)產(chǎn)生的呼叫包,并 對主機(jī)和從機(jī)間的數(shù)據(jù)傳送進(jìn)行數(shù)據(jù)標(biāo)識;在RS485網(wǎng)絡(luò)通信中,分布式系統(tǒng)的所有設(shè)備在靜音狀態(tài)后,由主機(jī)開始 呼叫周期的定時,如在一個呼叫周期到、即一個呼叫周期的開始或結(jié)束時,主 機(jī)產(chǎn)生一個步驟101中所述格式的地址幀作為呼叫包,其中,呼叫包中的數(shù)據(jù) 傳送方向標(biāo)識根據(jù)上一個呼叫周期中主機(jī)和從才幾間的數(shù)據(jù)傳送方向進(jìn)行設(shè)置, 并且設(shè)置呼叫包中的呼叫從機(jī)的地址,呼叫包中的從機(jī)地址根據(jù)上一個呼叫周期中與主機(jī)進(jìn)行通信的從機(jī)的從機(jī)地址或者指定的從機(jī)地址進(jìn)行設(shè)置。主機(jī)將 產(chǎn)生的呼叫包在每個呼叫周期發(fā)送給分布式系統(tǒng)中所有從機(jī)。主機(jī)和從才幾間通 過數(shù)據(jù)包進(jìn)行數(shù)據(jù)通信,這里的數(shù)據(jù)包中的數(shù)據(jù),包括數(shù)據(jù)包傳送的停止命令。 另外,對于主機(jī)和從機(jī)間進(jìn)行的數(shù)據(jù)傳送,設(shè)置了每個呼叫周期內(nèi)允許傳 送的數(shù)據(jù)的最大字節(jié)數(shù)、即周期字節(jié)數(shù)。這樣,如果主機(jī)或者從機(jī)在一個呼叫 周期內(nèi)傳送的數(shù)據(jù)包比較長,由于受周期字節(jié)數(shù)的限制,則可能無法在一個呼 叫周期內(nèi)完整發(fā)送該數(shù)據(jù)包,因此,需要通過一個字節(jié)作為表示數(shù)據(jù)包是否完 整發(fā)送的數(shù)據(jù)標(biāo)識。這樣,在主機(jī)發(fā)送呼叫包后或者從機(jī)接收到呼叫包后,需
數(shù)據(jù)包數(shù)據(jù)后,根據(jù)當(dāng)前發(fā)送的數(shù)據(jù)包數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)
標(biāo)識。這里的數(shù)據(jù)標(biāo)識,用來表明數(shù)據(jù)包是否發(fā)送完整,包括繼續(xù)標(biāo)識和終 止標(biāo)識,即主機(jī)或者從機(jī)在發(fā)送完含有停止命令的數(shù)據(jù)包數(shù)據(jù)、即數(shù)據(jù)包的最 后一段后發(fā)送終止標(biāo)識;在發(fā)送完其他數(shù)據(jù)包數(shù)據(jù)、即數(shù)據(jù)包其他各段后發(fā)送 繼續(xù)標(biāo)識。如果主機(jī)或者從機(jī)發(fā)送的數(shù)據(jù)包長度比較短,在一個呼叫周期即可 完成發(fā)送,則只在其后發(fā)送終止標(biāo)識即可。為了便于數(shù)據(jù)的識別,主機(jī)或者從 機(jī)可以在一個呼叫周期內(nèi)只發(fā)送完整數(shù)據(jù)包。此處所說的發(fā)送完整數(shù)據(jù)包是指 發(fā)送的是含有停止命令的數(shù)據(jù)包數(shù)據(jù),可以是一個呼叫周期內(nèi)發(fā)送的一個完整 的數(shù)據(jù)包,即使該數(shù)據(jù)包的全部字節(jié)數(shù)并未達(dá)到周期字節(jié)數(shù),也不再發(fā)送其他 數(shù)據(jù)包的數(shù)據(jù);也可以是一個呼叫周期內(nèi)發(fā)送的含有停止命令的數(shù)據(jù)包數(shù)據(jù), 該數(shù)據(jù)包數(shù)據(jù)與之前的呼叫周期發(fā)送的數(shù)據(jù)包數(shù)據(jù)共同組成一個完整的數(shù)據(jù) 包,類似地,即使該數(shù)據(jù)包數(shù)據(jù)并未達(dá)到周期字節(jié)數(shù),也不再發(fā)送其他數(shù)據(jù)包 的數(shù)據(jù),該數(shù)據(jù)所屬的數(shù)據(jù)包的其他數(shù)據(jù)在之前的一個或多個呼叫周期,則依 據(jù)周期字節(jié)數(shù)來發(fā)送。
其中,為了確保主才幾發(fā)送呼叫包時分布式系統(tǒng)中沒有數(shù)據(jù)在傳輸,主機(jī)可 以在發(fā)送呼叫包前,延時一定的時間,作為間歇時間,間歇時間的長度可以根 據(jù)實際的數(shù)據(jù)傳輸速率進(jìn)行設(shè)定,當(dāng)間歇時間到達(dá)后,主才幾再發(fā)送呼叫包;這 樣,主機(jī)或者從才幾按照上面數(shù)據(jù)標(biāo)識的方法,對^^皮間歇時間所中斷的數(shù)據(jù)包中的數(shù)據(jù)傳送進(jìn)行數(shù)據(jù)標(biāo)識。
以下將對主機(jī)和從機(jī)在主機(jī)發(fā)送完呼叫包后的操作步驟進(jìn)行分別闡述。
其中,主機(jī)在發(fā)送完呼叫包后的操作步驟包括
步驟103:主機(jī)發(fā)送呼叫包后,延時至從機(jī)、如從機(jī)的孩吏控制單元(MCU) 觸發(fā)外部中斷的起始時刻,執(zhí)行同步控制;
主機(jī)發(fā)送呼叫包后,按照步驟101中設(shè)定的延時時間,進(jìn)行延時,延時至從 機(jī)的MCU觸發(fā)外部中斷的起始時刻,主機(jī)執(zhí)行同步控制,例如通過產(chǎn)生自身 的時鐘滴答或同步控制信號等,進(jìn)行同步控制;
步驟104:主機(jī)在執(zhí)行同步控制后,根據(jù)發(fā)送的呼叫包中的數(shù)據(jù)傳送方向標(biāo) 識和呼叫從機(jī)的地址、以及在發(fā)送呼叫包前的數(shù)據(jù)標(biāo)識即上一個呼叫周期中的 數(shù)據(jù)標(biāo)識,繼續(xù)傳送或接收數(shù)據(jù);
具體為,主機(jī)在執(zhí)行同步控制后,依據(jù)產(chǎn)生呼叫包時呼叫包中設(shè)置的數(shù)據(jù) 傳送方向標(biāo)識,確定數(shù)據(jù)的傳送方向,如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送呼 叫包時數(shù)據(jù)由從機(jī)發(fā)往主機(jī),則主機(jī)查詢發(fā)送呼叫包前接收的數(shù)據(jù)標(biāo)識,其中, 若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則主機(jī)接收與呼叫包中呼叫從機(jī)的地址相匹配的從機(jī) 發(fā)送的新的數(shù)據(jù)包的數(shù)據(jù);若數(shù)據(jù)標(biāo)識為繼續(xù)標(biāo)識,則主機(jī)接收與呼叫包中呼 叫從機(jī)的地址相匹配的從機(jī)發(fā)送的在上一個呼叫周期未發(fā)送完的數(shù)據(jù)包的數(shù) 據(jù);
如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送呼叫包時數(shù)據(jù)由主機(jī)發(fā)往從機(jī),則主 機(jī)查詢發(fā)送呼叫包前發(fā)送的數(shù)據(jù)標(biāo)識,其中,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則主機(jī) 向與呼叫包中呼叫從機(jī)的地址相匹配的從機(jī)發(fā)送新的數(shù)據(jù)包的數(shù)據(jù);若數(shù)據(jù)標(biāo) 識為繼續(xù)標(biāo)識,則主才幾繼續(xù)向與呼叫包中呼叫從機(jī)的地址相匹配的從機(jī)發(fā)送在 上一個呼叫周期未發(fā)送完的數(shù)據(jù)包的數(shù)據(jù);
其中,從機(jī)在主機(jī)發(fā)送完呼叫包后的操作步驟包括
步驟105:分布式系統(tǒng)中的各個從機(jī)接收到主機(jī)發(fā)送的呼叫包,產(chǎn)生接收中 斷,由接收中斷產(chǎn)生外部中斷電路的觸發(fā)信號,觸發(fā)外部中斷;
在RS485網(wǎng)絡(luò)通信中,分布式系統(tǒng)中的各個從機(jī)根據(jù)接收到的數(shù)據(jù)包中的笫9位確定出所接收到的數(shù)據(jù)包的幀是否為地址幀、即主機(jī)發(fā)送的呼叫包,當(dāng)分 布式系統(tǒng)中的各個^Mof幾接收到主機(jī)發(fā)送的呼叫包后,從機(jī)中的MCU產(chǎn)生接收中 斷,接收中斷改變MCU與外部中斷電路相連接的輸出端口狀態(tài),作為觸發(fā)信號
觸發(fā)外部中斷電路中的單穩(wěn)態(tài)觸發(fā)電路;
步驟106:外部中斷電M收到接收中斷產(chǎn)生的觸發(fā)信號后,由外部中斷電 路觸發(fā)MCU的外部中斷,各從機(jī)在各自MCU的外部中斷的起始時刻,執(zhí)行同步
控制;
外部中斷電路中的單穩(wěn)態(tài)觸發(fā)電路接收到接收中斷產(chǎn)生的觸發(fā)信號后,單
穩(wěn)態(tài)觸發(fā)電路的輸出端改變MCU的外部中斷端口的狀態(tài),從而觸發(fā)MCU的外部 中斷,各從機(jī)在MCU的外部中斷的起始時刻,執(zhí)行同步控制,例如通過產(chǎn)生 各自的時鐘滴答或同步控制信號等,進(jìn)行同步控制;
此外,在MCU的外部中斷中要對MCU的硬件時鐘定時器的寄存器進(jìn)行復(fù)位 處理,即每個呼叫周期均對MCU的硬件時鐘定時器的寄存器進(jìn)行復(fù)位處理,使 自身的硬件時鐘定時器不產(chǎn)生中斷、即不能完成硬件時鐘周期,防止該從機(jī)進(jìn) 入無主機(jī)的異常保護(hù),因此,需要設(shè)置呼叫周期短于^Mv機(jī)的硬件時鐘周期;
步驟107:分布式系統(tǒng)中的各個從機(jī)在執(zhí)行同步控制后,根據(jù)收到的呼叫包 中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī)的地址、以及在主機(jī)發(fā)送呼叫包前的數(shù)據(jù)標(biāo) 識即上一個呼叫周期中的數(shù)據(jù)標(biāo)識,在當(dāng)前呼叫周期繼續(xù)傳送或接收數(shù)據(jù);
具體為,分布式系統(tǒng)中的各個從機(jī)在執(zhí)行同步控制后,查詢收到的呼叫包 中呼叫從機(jī)的地址和數(shù)據(jù)傳送方向標(biāo)識,如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送 呼叫包時數(shù)據(jù)由從機(jī)發(fā)往主機(jī),則與呼叫包中呼叫從機(jī)的地址相匹配的從機(jī)查 詢在主機(jī)發(fā)送呼叫包前發(fā)送的數(shù)據(jù)標(biāo)識,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則與呼叫包 中呼叫從機(jī)的地址相匹配的從機(jī)向主機(jī)發(fā)送新的數(shù)據(jù)包的數(shù)據(jù);若數(shù)據(jù)標(biāo)識為 繼續(xù)標(biāo)識,則與呼叫包中呼叫^M4幾的地址相匹配的從機(jī)繼續(xù)向主機(jī)發(fā)送在上一
個呼叫周期該從機(jī)未發(fā)送完的數(shù)據(jù)包的數(shù)據(jù);
如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送呼叫包時數(shù)據(jù)由主機(jī)發(fā)往從機(jī),則從 機(jī)查詢在主機(jī)發(fā)送呼叫包前接收的數(shù)據(jù)標(biāo)識,其中,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則與呼叫包中呼叫從機(jī)的地址相匹配的從機(jī)接收主機(jī)發(fā)送的新的數(shù)據(jù)包的數(shù)
據(jù);若數(shù)據(jù)標(biāo)識為繼續(xù)標(biāo)識,則與呼叫包中呼叫從機(jī)的地址相匹配的從;f幾繼續(xù) 接收主機(jī)發(fā)送的在上一個呼叫周期未發(fā)送完的數(shù)據(jù)包的數(shù)據(jù)。
本發(fā)明基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的方法,進(jìn)一步的,該 方法還包括分布式系統(tǒng)的異常保護(hù)方法,包括設(shè)備作為從機(jī)投入已有分布式 系統(tǒng)的保護(hù)、設(shè)備作為主機(jī)投入已有分布式系統(tǒng)的保護(hù)、從機(jī)退出分布式系統(tǒng) 的保護(hù)、以及分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出的保護(hù);
具體為,分布式系統(tǒng)中的主機(jī)將定期以廣播命令的形式發(fā)送系統(tǒng)檢測命令, 分布式系統(tǒng)中的其他各個設(shè)備接收系統(tǒng)檢測命令并進(jìn)行應(yīng)答,主機(jī)通過檢測應(yīng) 答的地址判斷是否有設(shè)備新投入或從機(jī)退出分布式系統(tǒng)。該系統(tǒng)檢測命令為廣 #^令,根據(jù)約定是地址為O的數(shù)據(jù)包。
當(dāng)設(shè)備作為從機(jī)投入已有分布式系統(tǒng)時,即設(shè)備的地址為分布式系統(tǒng)中空 閑的從機(jī)地址,該設(shè)備在靜音狀態(tài)后第一次接收到系統(tǒng)檢測命令時發(fā)送應(yīng)答, 分布式系統(tǒng)內(nèi)的主才;i^測到發(fā)送應(yīng)答的i殳備的地址為分布式系統(tǒng)內(nèi)沒有用到過 的從機(jī)地址、即原本空閑的從機(jī)地址,也就是可用從機(jī)地址,分布式系統(tǒng)主機(jī) 從原本空閑的從機(jī)地址中去除此地址,將其納入從機(jī)進(jìn)行管理,該設(shè)備進(jìn)行從
當(dāng)有從才幾退出分布式系統(tǒng)時,分布式系統(tǒng)內(nèi)的主才*測到應(yīng)答的地址缺少 某個已經(jīng)使用的從機(jī)地址,則根據(jù)實際需要加以處理,比如提醒有從機(jī)退出、 提供退出的從機(jī)的地址等;
當(dāng)設(shè)備作為主機(jī)投入已有分布式系統(tǒng)時,即設(shè)備地址為分布式系統(tǒng)中原主 機(jī)的地址,該設(shè)備在靜音狀態(tài)后第一次接收到系統(tǒng)檢測命令時,向分布式系統(tǒng) 中的原主機(jī)發(fā)送應(yīng)答,分布式系統(tǒng)中的原主機(jī)檢測到應(yīng)答的地址與自身地址相 同,則分布式系統(tǒng)中的原主機(jī)繼續(xù)檢測是否有申請主機(jī)命令,如果該設(shè)備在靜 音狀態(tài)后,向分布式系統(tǒng)中原主機(jī)發(fā)送申請主機(jī)命令,則原主機(jī)在檢測到此設(shè) 備應(yīng)答后的一#爻時間內(nèi),'比如在到下次此設(shè)備發(fā)送應(yīng)答的這段時間內(nèi),檢測 到申請主機(jī)命令后,將自身的主機(jī)地址更改為分布式系統(tǒng)中的可用從機(jī)地址,降格為從機(jī),進(jìn)行>^4幾運(yùn)作,包括接收呼叫包和執(zhí)行同步控制等;新投入的 主機(jī),進(jìn)行主機(jī)運(yùn)作,包括周期性的發(fā)送呼叫包、定期發(fā)送廣播命令以及控 制整個分布式系統(tǒng)的通信等;如果作為主機(jī)投入的設(shè)備沒有發(fā)送申請主機(jī)命令, 原主機(jī)在一段時間內(nèi)沒有收到申請主機(jī)命令,則原主機(jī)下發(fā)分布式系統(tǒng)中的可 用從機(jī)地址給該設(shè)備,該設(shè)備作為^y4^進(jìn)行^M幾運(yùn)作;
此外,當(dāng)分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出后,各從機(jī)會在一段時間、 如設(shè)置的異常時間內(nèi)沒有接收到呼叫包,從而從機(jī)不能產(chǎn)生MCU的外部中斷, 從機(jī)中的硬件時鐘定時器將會完成多個硬件時鐘周期,如2 ~ 3個硬件時鐘周期,
各從才;^艮據(jù)自身的地址號,延時不同的時間后,主動發(fā)送申請主機(jī)命令,申請
成為主機(jī),如地址號為1的從機(jī)延時0.1秒鐘申請主機(jī),地址號為2的從機(jī)延時0.2 秒鐘申請主機(jī)等;其中,先發(fā)送申請主機(jī)命令的從機(jī)將不會接收到其他從機(jī)發(fā) 送的申請主機(jī)命令,從而成為主機(jī),地址改為主機(jī)的地址,代替原主機(jī)進(jìn)行主 機(jī)運(yùn)作;申請主機(jī)命令以廣旨令的形式發(fā)送;
當(dāng)原先的主機(jī)重新^后,將按照上述的分布式系統(tǒng)中投入的設(shè)備為主機(jī) 時的方法進(jìn)行操作,這里不再贅述。
上述的所有主機(jī)和從機(jī)的操作方法,在分布式系統(tǒng)中的每臺設(shè)備都可以執(zhí) 行,也就是說,分布式系統(tǒng)中的每臺設(shè)備既可以作為主機(jī)也可以作為從機(jī)按照 上述的方法進(jìn)4于運(yùn)作。
以上為本發(fā)明基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的方法的較佳實 施例,通過上述方法,本發(fā)明基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的系 統(tǒng),如圖2所示,該系統(tǒng)包括主才幾20和從才幾21;其中,
主機(jī)20,用于在當(dāng)前呼叫周期產(chǎn)生呼叫包,發(fā)送呼叫包后,延時至從機(jī)觸 發(fā)的外部中斷的起始時刻,執(zhí)行主機(jī)的同步控制;進(jìn)一步用于主機(jī)的數(shù)據(jù)接收 和發(fā)送;
從機(jī)21,用于接收主機(jī)下發(fā)的呼叫包,產(chǎn)生接收中斷,由接收中斷觸發(fā)外 部中斷,在外部中斷的起始時刻,執(zhí)行該從機(jī)自身的同步控制;進(jìn)一步用于從 機(jī)的數(shù)據(jù)接收和發(fā)送;下面對主機(jī)20和從才幾21在實現(xiàn)分布式系統(tǒng)的同步控制中的具體運(yùn)作進(jìn)行 分別闡述。
主機(jī)20包括第一定時模塊201、呼叫包模塊202、第一收發(fā)模塊203、 延時同步模塊204,其中,
第一定時模塊201,用于對主機(jī)20發(fā)送呼叫包的呼叫周期進(jìn)行計時,在每 個呼叫周期觸發(fā)呼叫包4莫塊202;
呼叫包模塊202,用于根據(jù)第一定時模塊201的觸發(fā)產(chǎn)生地址幀作為呼叫
包;
第一4議模塊203,用于發(fā)送呼叫包模塊202產(chǎn)生的呼叫包,并同時觸發(fā) 延時同步模塊204;進(jìn)一步用于主機(jī)20和從機(jī)21間的數(shù)據(jù)傳送;
延時同步模塊204,用于延時至從機(jī)21觸發(fā)的外部中斷的起始時刻時,執(zhí) 行主機(jī)20的同步控制;延時同步模塊204可根據(jù)設(shè)定的延時時間進(jìn)行延時。
主機(jī)20進(jìn)一步包括第一數(shù)據(jù)標(biāo)識模塊205和第一數(shù)據(jù)控制模塊206,其
中,
第一定時模塊201在每個呼叫周期,進(jìn)一步用于觸發(fā)第一數(shù)據(jù)標(biāo)識模塊
205;
第 一數(shù)據(jù)標(biāo)識模塊205 ,用于根據(jù)第 一收發(fā)模塊203中主機(jī)20在當(dāng)前呼叫 周期內(nèi)向從機(jī)21發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;其具體實 現(xiàn)可參照圖1步驟102中主機(jī)和從機(jī)間進(jìn)行數(shù)據(jù)傳送的相關(guān)描述,在此不再贅 述;
第一收發(fā)模塊203,進(jìn)一步用于主機(jī)20和從機(jī)21間的數(shù)據(jù)傳送,向從機(jī) 21發(fā)送第一數(shù)據(jù)標(biāo)識才莫塊205確定的數(shù)據(jù)標(biāo)識;還用于接收從機(jī)21發(fā)送的數(shù) 據(jù)標(biāo)識;
呼叫包模塊202產(chǎn)生呼叫包具體為產(chǎn)生地址幀作為呼叫包,根據(jù)第一收 發(fā)模塊203中上一個呼叫周期中主機(jī)20和從機(jī)21間的數(shù)據(jù)傳送方向設(shè)置呼叫 包中的數(shù)據(jù)傳送方向標(biāo)識,并i殳置呼叫包中的呼叫從才幾的地址;所述呼叫包的 具體格式可參照圖1步驟101中的相關(guān)描述,在此不再贅述;延時同步模塊204執(zhí)行主機(jī)20的同步控制后,進(jìn)一步用于觸發(fā)第 一數(shù)據(jù)控 制模塊206;
第一數(shù)據(jù)控制模塊206,用于根據(jù)延時同步模塊204的觸發(fā),依據(jù)上一個 呼叫周期中的數(shù)據(jù)標(biāo)識及主機(jī)發(fā)送的呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī) 的地址,控制第一收發(fā)模塊203在當(dāng)前呼叫周期與^y4/L21間傳送數(shù)據(jù),上一個 呼叫周期中的數(shù)據(jù)標(biāo)識具體可以是笫一數(shù)據(jù)標(biāo)識才莫塊205在上一個呼叫周期確 定的、和/或從才幾21在上一個呼叫周期發(fā)送的數(shù)據(jù)標(biāo)識;其具體實現(xiàn)可參照圖1 步驟104中的相關(guān)描述,在此不再贅述。
另外,主機(jī)20可以進(jìn)一步包括間歇時間模塊207,用于控制第一收發(fā)模 塊203延時間歇時間后發(fā)送呼叫包,以確保主機(jī)20發(fā)送呼叫包時分布式系統(tǒng)中 沒有數(shù)據(jù)在傳輸。
從機(jī)21包括第二收發(fā)模塊211、接收中斷模塊212和外部中斷模塊214, 其中,
第二收發(fā)模塊211,用于接收來自主機(jī)20的呼叫包;進(jìn)一步用于^M4幾21 和主才幾20間的數(shù)據(jù)傳送;
接收中斷模塊212,用于檢測到第二》|議模塊211收到呼叫包時產(chǎn)生接收 中斷,并觸發(fā)外部中斷模塊214;
外部中斷模塊214,用于根據(jù)接收中斷模塊212的觸發(fā),觸發(fā)外部中斷, 在外部中斷的起始時刻,執(zhí)行從機(jī)21的同步控制。
從機(jī)21進(jìn)一步包括第二數(shù)據(jù)標(biāo)識模塊215和第二數(shù)據(jù)控制模塊216,其
中,
第二數(shù)據(jù)標(biāo)識模塊215,用于根據(jù)第二收發(fā)模塊211中從機(jī)21在當(dāng)前呼叫 周期內(nèi)向主機(jī)20發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;其具體實 現(xiàn)可參照圖1步驟102中主機(jī)和從機(jī)間的數(shù)據(jù)傳送的相關(guān)描述,在此不再贅述;
第二4t^;漠塊211,進(jìn)一步用于向主機(jī)20發(fā)送第二數(shù)據(jù)標(biāo)識模塊215確定 的數(shù)據(jù)標(biāo)識;還用于接收主機(jī)20發(fā)送的數(shù)據(jù)標(biāo)識;
外部中斷模塊214執(zhí)行從機(jī)21的同步控制后,進(jìn)一步用于觸發(fā)第二數(shù)據(jù)控制模塊216;
第二數(shù)據(jù)控制4莫塊216,用于根據(jù)外部中斷模塊214的觸發(fā),依據(jù)上一個 呼叫周期中的數(shù)據(jù)標(biāo)識及從機(jī)收到的呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī) 的地址,控制第二收發(fā)模塊211在當(dāng)前呼叫周期與主機(jī)20間傳送數(shù)據(jù),上一個 呼叫周期中的數(shù)據(jù)標(biāo)識具體可以是第二數(shù)據(jù)標(biāo)識模塊215在上一個呼叫周期確 定的、和/或主機(jī)20在上一個呼叫周期發(fā)送的數(shù)據(jù)標(biāo)識;其具體實現(xiàn)可參照圖1 步驟107中的相關(guān)描述,在此不再贅述。
另外,從機(jī)21可以進(jìn)一步包括硬件時鐘定時器217,外部中斷模塊214 進(jìn)一步用于在外部中斷過程中對石更件時鐘定時器217的寄存器進(jìn)^f亍復(fù)位處理, 使硬件時鐘定時器217不產(chǎn)生中斷。
當(dāng)然,本發(fā)明實現(xiàn)基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng)也包 括用于在出現(xiàn)異常時進(jìn)行異常保護(hù)的系統(tǒng),該系統(tǒng)置于分布式系統(tǒng)的所有設(shè)備 中。如圖3所示,主機(jī)30包括第二定時模塊301、廣旨令模塊302、檢測 分析模塊303和地址發(fā)送模塊304,其中,
第二定時模塊301,用于對檢測周期進(jìn)行計時,每個檢測周期觸發(fā)廣播命 令模塊302;
廣播命令模塊302,用于根據(jù)第二定時模塊301的觸發(fā),發(fā)送系統(tǒng)檢測命 令,該系統(tǒng)檢測命令為廣4旨令,根據(jù)約定是地址為O的數(shù)據(jù)包;
檢測分析模塊303,用于接收應(yīng)答,通過檢測應(yīng)答的地址判斷是否有設(shè)備 新投入或從機(jī)退出分布式系統(tǒng),確定有從機(jī)退出分布式系統(tǒng)時,才艮據(jù)實際需要 加以處理;確定有從才幾新^分布式系統(tǒng)時,觸發(fā)地址發(fā)送模塊304從原本空 閑的從機(jī)地址中去除此地址;確定有主機(jī)新投入分布式系統(tǒng)時,并且未接收到 主機(jī)申請命令,觸發(fā)地址發(fā)送模塊304向?qū)?yīng)主機(jī)發(fā)送可用從機(jī)地址;
地址發(fā)送模塊304,用于根據(jù)檢測分析才莫塊303的觸發(fā)從原本空閑的從才幾 地址中去除新^v從機(jī)的地址或提供可用從機(jī)地址。
主機(jī)30進(jìn)一步包括地址轉(zhuǎn)換才莫塊305 ,
檢測分析模塊303確定應(yīng)答的地址與主機(jī)地址相同時,進(jìn)一步用于確定是否在設(shè)定時間內(nèi)收到主機(jī)申請命令,如果收到,則確定有主機(jī)新投入分布式系
統(tǒng),觸發(fā)地址轉(zhuǎn)換模塊305;如果未收到,則觸發(fā)地址發(fā)送模塊304向?qū)?yīng)設(shè) 備發(fā)送可用從才幾地址;
地址轉(zhuǎn)換模塊305,用于根據(jù)檢測分析模塊303的觸發(fā)將主機(jī)地址更改為 可用從機(jī)地址,并可進(jìn)一步觸發(fā)圖2中的第一定時模塊停止計時,使其所在設(shè) 備由主才幾變?yōu)閺臋C(jī)。
如圖3所示,投入現(xiàn)有分布式系統(tǒng)的設(shè)備包括廣播命令應(yīng)答模塊311、 主機(jī)申請模塊312和地址轉(zhuǎn)換模塊313,其中,
廣播命令應(yīng)答模塊311,用于接收來自主機(jī)的系統(tǒng)檢測命令,使用可用從 機(jī)地址或主機(jī)地址向主機(jī)返回應(yīng)答;
主機(jī)申請模塊312,用于發(fā)送申請主機(jī)命令;
地址轉(zhuǎn)換模塊313,用于更改自身主機(jī)地址為主機(jī)提供的可用從機(jī)地址或 更改自身從機(jī)地址為主機(jī)地址。
以上各模塊相結(jié)合的具體實現(xiàn)是如果廣*令應(yīng)答模塊311使用可用從 機(jī)地址向主機(jī)返回應(yīng)答,址轉(zhuǎn)換4莫塊313無需更改地址;如果廣播命令應(yīng)答模 塊311使用主機(jī)地址向主機(jī)返回應(yīng)答,并且主機(jī)申請模塊312不發(fā)送申請主機(jī) 命令,則地址轉(zhuǎn)換模塊313將所在主機(jī)的地址更改為主機(jī)提供的可用從機(jī)地址; 如果廣播命令應(yīng)答模塊311使用主機(jī)地址向主機(jī)返回應(yīng)答,并且主機(jī)申請模塊 312發(fā)送了申請主機(jī)命令,則地址轉(zhuǎn)換模塊313無需更改地址,仍然使用主機(jī) 地址,其所在設(shè)備為主才幾。
另外,設(shè)備作為從機(jī)時,其包括的主機(jī)申請模塊312可以在硬件時鐘定時 器完成多個硬件時鐘周期時,根據(jù)從機(jī)地址延時發(fā)送申請主機(jī)命令,并且,沒 有收到其他設(shè)備發(fā)送的申請主機(jī)命令的設(shè)備,通過內(nèi)部的地址轉(zhuǎn)換模塊313將 自身從機(jī)地址更改為主機(jī)地址,該設(shè)備作為主機(jī)。
上述的實現(xiàn)基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng)布置在分布 式系統(tǒng)中的每臺設(shè)備上,以實現(xiàn)分布式系統(tǒng)的同步控制。
f說明假設(shè)某/>司的電源產(chǎn)品中,需要把幾套電源設(shè)備并聯(lián)輸出,各個設(shè)備的監(jiān)
控器之間通過RS485網(wǎng)絡(luò)組網(wǎng)通信,將其中一臺監(jiān)控器設(shè)定為主機(jī),其他監(jiān)控 器作為從機(jī),由主機(jī)收集、采集各個作為從機(jī)的監(jiān)控器的信息后進(jìn)行統(tǒng)一的管 理,完成整個分布式系統(tǒng)的控制,如調(diào)節(jié)整個分布式系統(tǒng)中各個電源設(shè)備的 整流器的輸出電壓、輸出電流等。
比如,主機(jī)通過統(tǒng)一下發(fā)給各個從 M目同的脈寬調(diào)制(PWM)值,來調(diào)節(jié) 各個從機(jī)管理的整流器電壓。在實際應(yīng)用中,為了不引起輸出電壓的紊亂,需 要全部的監(jiān)控器在同一時刻向各自管理的整流器下發(fā)更新后的PWM值,實現(xiàn) 同步控制。各監(jiān)控器間使用RS485通信,各監(jiān)控器之間的連接如圖4所示,A 為監(jiān)控器的發(fā)送端口, B為監(jiān)控器的接收端口,將主機(jī)的端口A和從機(jī)的端口 A連接起來,主機(jī)的端口 B和AM/U的端口 B連接起來,從機(jī)N中的N不大于 126。
主、從機(jī)端均增加外部中斷電路,如圖5所示,由MCU51的一個輸出引 腳(PB0)連接外部中斷電路50中單穩(wěn)態(tài)觸發(fā)電路501的輸入端,單穩(wěn)態(tài)觸發(fā) 電路501的輸出端連接MCU51的外部中斷引腳(EXINT)。
在主、從機(jī)的通信中,數(shù)據(jù)包全部采用9位數(shù)據(jù)位、l位起始位、l位終止 位的方式通信。數(shù)據(jù)包的第9位(TB8)被用作為表征該幀是地址幀還是數(shù)據(jù) 幀,為1時表示該幀數(shù)據(jù)為一個地址幀,為O時表示該幀數(shù)據(jù)為數(shù)據(jù)幀。
地址幀的各位^故如下定義TB8為l,表示該幀數(shù)據(jù)為地址幀;第2位至 第8位表示呼叫從機(jī)的地址,并約定地址O表示廣播,地址127表示主機(jī);第 l位(TBO)作為數(shù)據(jù)傳送方向標(biāo)識,TBO為O,表示需要#立刻應(yīng)答,數(shù)據(jù) 由從機(jī)發(fā)往主機(jī);TBO為1,表示主機(jī)后續(xù)要下發(fā)命令數(shù)據(jù),通知從機(jī)繼續(xù)接 收,數(shù)據(jù)由主機(jī)發(fā)往地址匹配的從機(jī);
在正常的數(shù)據(jù)通信中,設(shè)備之間互相發(fā)送的數(shù)據(jù)均為TB8=0的數(shù)據(jù)幀。 TB8=1的地址幀作為呼叫包使用,由主機(jī)端周期性發(fā)出。
另外,所有監(jiān)控器均可以作為主機(jī)或者從機(jī)使用,在初始投入運(yùn)作時的一 段時間內(nèi),處于靜音狀態(tài),靜音狀態(tài)是為了,在這些監(jiān)控器是投入到已有的分布式系統(tǒng)時,其中,被設(shè)置成為主機(jī)的監(jiān)控器,如果在靜音狀態(tài)時沒有接收到
呼叫包,則進(jìn)行主機(jī)運(yùn)作;如果在靜音狀態(tài)時接收到呼叫包,說明分布式系統(tǒng) 中有另 一主機(jī)存在,則分布式系統(tǒng)認(rèn)為該監(jiān)控器作為主機(jī)新投入分布式系統(tǒng), 而采取異常保護(hù);
當(dāng)監(jiān)控器的地址與約定的主機(jī)地址不相同時,則該監(jiān)控器可以作為從機(jī); 下面詳細(xì)說明所有監(jiān)控器實現(xiàn)執(zhí)行PWM同步命令的步驟,如圖6所示 步驟601:主機(jī)首先發(fā)送一個廣播式呼叫包,即發(fā)送呼叫從機(jī)的地址為0 的地址幀,并且設(shè)定該地址幀的TBO為1,通知各個^y^繼續(xù)接收后續(xù)數(shù)據(jù), 在后續(xù)數(shù)據(jù)中將PWM值發(fā)送給所有從機(jī);各個從機(jī)在接收到PWM值后,將 PWM值保存;
步驟602:主機(jī)確定以10ms為一個周期,發(fā)送呼叫包給系統(tǒng)內(nèi)的所有從機(jī), 作為同步信號,并對主機(jī)和從機(jī)間的數(shù)據(jù)傳送進(jìn)行數(shù)據(jù)標(biāo)識;
主機(jī)確定以10ms為一個周期,發(fā)送呼叫包給系統(tǒng)內(nèi)的所有從機(jī),此外, 主機(jī)和從機(jī)間進(jìn)行數(shù)據(jù)傳送時,主機(jī)或者從才*據(jù)在10ms內(nèi)可以傳送的數(shù)據(jù) 包的字節(jié)數(shù),確定主機(jī)或者從機(jī)在每個10ms內(nèi)傳送的數(shù)據(jù)包的字節(jié)數(shù)并且留 有一個字節(jié)作為數(shù)據(jù)標(biāo)識,這樣,在主機(jī)發(fā)送呼叫包后或者從機(jī)接收到呼叫包 后,主機(jī)或者從機(jī)按照在10ms內(nèi)傳送的數(shù)據(jù)包的字節(jié)數(shù),將數(shù)據(jù)包的一段進(jìn) 行傳送并在每段傳送完后傳送數(shù)據(jù)標(biāo)識。這里的數(shù)據(jù)標(biāo)識,用來表明在一個 10ms內(nèi)的數(shù)據(jù)包是否發(fā)送完整,包括繼續(xù)標(biāo)識和終止標(biāo)識,即在發(fā)送完數(shù)據(jù) 包的含有停止命令的最后一段后發(fā)送終止標(biāo)識;在發(fā)送完其他各段后發(fā)送繼續(xù) 標(biāo)識,如果發(fā)送的數(shù)據(jù)包長度比較短,在一個10ms內(nèi) 即可完成發(fā)送,則只發(fā) 送終止標(biāo)識。
步驟603:主機(jī)發(fā)送完呼叫包后,延時一段時間,主機(jī)把PWM值下發(fā)給 自己的整流器;
該延時時間為呼叫包的發(fā)送時間加上從機(jī)中斷響應(yīng)時間,在波特率為 9600bps時,由于在RS485通信中發(fā)送呼叫包還要加上起始位與停止位,所以 發(fā)送呼叫包的時間為(9+2) xi/9600us,從機(jī)中斷響應(yīng)時間具體可以通過從才幾響應(yīng)服務(wù)程序匯編代碼行中得到,或者通過實際測量得到;
步驟604:主機(jī)給自己的整流器下發(fā)PWM值之后,主樹艮據(jù)呼叫包中的 數(shù)據(jù)傳送方向標(biāo)識和從機(jī)地址,以及在發(fā)送呼叫包前的數(shù)據(jù)標(biāo)識,繼續(xù)發(fā)送或 接收數(shù)據(jù);
具體為,主機(jī)在給自己的整流器下發(fā)PWM值之后,根據(jù)呼叫包中設(shè)置的數(shù) 據(jù)傳送方向標(biāo)識,如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送呼叫包時,數(shù)據(jù)由從機(jī) 發(fā)往主機(jī),主才幾查詢發(fā)送呼叫包前收到的數(shù)據(jù)標(biāo)識,其中,若數(shù)據(jù)標(biāo)識為終止 標(biāo)識,則主機(jī)接收與呼叫包中從機(jī)地址相匹配的從機(jī)發(fā)送的數(shù)據(jù)包的數(shù)據(jù);若 數(shù)據(jù)標(biāo)識為繼續(xù)標(biāo)識,則主機(jī)接收與呼叫包中從機(jī)地址相匹配的從機(jī)發(fā)送的在 上個10ms未發(fā)送完的數(shù)據(jù)包的數(shù)據(jù);
如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)發(fā)送呼叫包時,數(shù)據(jù)由主機(jī)發(fā)往從機(jī),則 主機(jī)查詢發(fā)送呼叫包前發(fā)送的數(shù)據(jù)標(biāo)識,其中,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則主 機(jī)向與呼叫包中從機(jī)地址相匹配的*發(fā)送新的數(shù)據(jù)包的數(shù)據(jù);若數(shù)據(jù)標(biāo)識為 繼續(xù)標(biāo)識,則主機(jī)繼續(xù)向與呼叫包中從機(jī)地址相匹配的從機(jī)發(fā)送在上個1 Oms 未發(fā)送完的數(shù)據(jù)包的數(shù)據(jù);
步驟605:在主機(jī)發(fā)送完呼叫包后,從機(jī)接收到呼叫包,產(chǎn)生接收中斷, 在接收中斷中,設(shè)置圖5中MCU 51的PBO為高,以觸發(fā)外部中斷電路50中 的單穩(wěn)態(tài)觸發(fā)電路501;
步驟606:圖5中外部中斷電路50中的單穩(wěn)態(tài)觸發(fā)電路501接收到MCU 51 的PBO為高后,單穩(wěn)態(tài)觸發(fā)電路501的輸出端觸發(fā)MCU51的外部中斷,各從 機(jī)向各自的整流器同步下發(fā)PWM值;
外部中斷電路50的單穩(wěn)態(tài)觸發(fā)電路501接收到MCU 5 1的PBO為高后, 單穩(wěn)態(tài)觸發(fā)電路501的輸出端改變MCU 51的EXINT端口的狀態(tài),觸發(fā)MCU 51 的外部中斷,在外部中斷的起始時刻,各從機(jī)執(zhí)行向各自的整流器同步,下發(fā) 步驟601中收到的PWM值,此外,在外部中斷中,對從沖幾MCU 51的硬件時 鐘定時器寄存器進(jìn)行復(fù)位,防止該從機(jī)進(jìn)入無主機(jī)的異常保護(hù);
步驟607:所有從機(jī)向各自的整流器下發(fā)PWM值后,根據(jù)呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和#地址,以及在發(fā)送呼叫包前的數(shù)據(jù)標(biāo)識,繼續(xù)傳送或接
收數(shù)據(jù);
具體為,所有從機(jī)向各自的整流器下發(fā)PWM值后,查詢收到的呼叫包中的 呼叫從機(jī)的地址和數(shù)據(jù)傳送方向標(biāo)識,如果數(shù)據(jù)傳送方向標(biāo)識表示主機(jī)在發(fā)送 呼叫包時,數(shù)據(jù)由從機(jī)發(fā)往主機(jī),則與呼叫包中從機(jī)地址相匹配的^M4^查詢在 主機(jī)發(fā)送呼叫包前發(fā)送的數(shù)據(jù)標(biāo)識,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則與呼叫包中從 機(jī)地址相匹配的從才幾向主機(jī)發(fā)送新的數(shù)據(jù)包中的數(shù)據(jù);若數(shù)據(jù)標(biāo)識為繼續(xù)標(biāo)識, 則與呼叫包中從機(jī)地址相匹配的從機(jī)繼續(xù)向主機(jī)發(fā)送在上個10ms未發(fā)送完的 數(shù)據(jù)包中的翁L據(jù);
如果數(shù)據(jù)傳送方向標(biāo)識表示后續(xù)數(shù)據(jù)由主才幾發(fā)往從才幾,則從4幾查詢發(fā)送呼 叫包前收到的數(shù)據(jù)標(biāo)識,其中,若數(shù)據(jù)標(biāo)識為終止標(biāo)識,則與呼叫包中從機(jī)地 址相匹配的從機(jī)接收主機(jī)發(fā)送的新的數(shù)據(jù)包中的數(shù)據(jù);若數(shù)據(jù)標(biāo)識為繼續(xù)標(biāo)識, 則與呼叫包中從機(jī)地址相匹配的從機(jī)繼續(xù)接收主機(jī)發(fā)送的在上個10ms未發(fā)送 完的數(shù)椐包中的數(shù)據(jù)。
這樣,分布式系統(tǒng)中的所有監(jiān)控器就會同時下發(fā)PWM值給各自的整流器了。
此外,該分布式系統(tǒng)也將對異常情況進(jìn)行保護(hù),包括監(jiān)控器作為從機(jī)投 入已有分布式系統(tǒng)的保護(hù)、監(jiān)控器作為主機(jī)投入已有分布式系統(tǒng)的保護(hù)、監(jiān)視 器機(jī)退出系統(tǒng)的保護(hù)以及分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出的保護(hù);
具體為,分布式系統(tǒng)中的主機(jī)將定期以廣播命令的形式發(fā)送系統(tǒng)檢測命令, 分布式系統(tǒng)中的其他各個監(jiān)控器收到系統(tǒng)檢測命令并進(jìn)行應(yīng)答,主4緣測應(yīng)答 的地址判斷是否有監(jiān)控器新^或^M4幾退出系統(tǒng)。
當(dāng)監(jiān)控器作為從機(jī)投入已有分布式系統(tǒng)時,即監(jiān)控器地址為分布式系統(tǒng)中 空閑的從機(jī)地址,該監(jiān)控器在靜音狀態(tài)后第一次收到系統(tǒng)檢測命令時發(fā)送應(yīng)答, 分布式系統(tǒng)內(nèi)的主才*測到發(fā)送應(yīng)答的地址,為分布式系統(tǒng)內(nèi)沒有用到過的從 機(jī)地址,即原本空閑的可用vM4U也址,分布式系統(tǒng)內(nèi)的主機(jī)從原本空閑的從機(jī) 地址中去除此地址,將該監(jiān)控器納入從機(jī)進(jìn)行管理;當(dāng)有從機(jī)退出系統(tǒng)時,系統(tǒng)內(nèi)的主才賺測到應(yīng)答的地址缺少某個已經(jīng)使用
的從機(jī)地址,則提醒有從機(jī)退出,并提供退出從機(jī)的地址;
當(dāng)監(jiān)控器作為主機(jī)^v已有分布式系統(tǒng)時,即監(jiān)控器地址為系統(tǒng)中原主機(jī) 地址,該監(jiān)控器在靜音狀態(tài)后第一次接收到系統(tǒng)檢測命令時,向系統(tǒng)中的原主 機(jī)發(fā)送應(yīng)答,分布式系統(tǒng)中的原主機(jī)檢測到應(yīng)答的地址與自身地址相同,則分 布式系統(tǒng)內(nèi)的原主機(jī)繼續(xù)檢測是否有申請主機(jī)命令,如果該監(jiān)控器在靜音狀態(tài) 后,向分布式系統(tǒng)中原主機(jī)發(fā)送申請主機(jī)命令,則原主機(jī)在檢測到此監(jiān)控器應(yīng) 答后的一段時間內(nèi),比如在到下次此監(jiān)控器發(fā)送應(yīng)答的這段時間內(nèi),檢測到 申請主機(jī)命令后,將自身的主機(jī)地址更改為分布式系統(tǒng)中的可用從機(jī)地址,降 格為從機(jī),進(jìn)行從才/L^作,包括接收呼叫包和執(zhí)行同步控制等;新投入的監(jiān) 控器,進(jìn)行主機(jī)運(yùn)作,包括周期性的發(fā)送呼叫包、定期發(fā)送廣播命令以及控 制整個分布式系統(tǒng)的通信等;如果作為主機(jī)投入的監(jiān)控器沒有發(fā)送申請主機(jī)的 廣播命令,原主機(jī)在一段時間內(nèi)沒有收到申請主機(jī)命令,則原主機(jī)下發(fā)分布式 系統(tǒng)中的可用^y^幾地址給該監(jiān)控器,該監(jiān)控器作為從才幾進(jìn)行從才^作;
此外,當(dāng)分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出后,各從機(jī)監(jiān)控器會在一 段時間沒有接收到呼叫包,從而不能產(chǎn)生MCU的外部中斷,從機(jī)中的硬件時鐘 定時器將會完成多個硬件時鐘周期,如2~3個硬件時鐘周期,各從才M艮據(jù)自身 的地址號,延時不同的時間后,主動發(fā)送申請主機(jī)命令,申請成為主機(jī),其中 地址號為1的從機(jī)延時0.1秒鐘申請主機(jī),地址號為2的從機(jī)延時0.2秒鐘申請主 機(jī),地址號為N的延時N/10秒鐘申請主機(jī);其中,先發(fā)送申請包的從機(jī)將不會 接收到其他從才幾發(fā)送的申請主機(jī)命令而成為主才幾,地址更改為主才幾的地址, 替原主機(jī)進(jìn)行主機(jī)運(yùn)作;申請主機(jī)命令以廣播命令的形式發(fā)送;
當(dāng)原先的主機(jī)重新^后,將按照上述的,當(dāng)監(jiān)控器作為主機(jī)M已有分 布式系統(tǒng)時的方法進(jìn)行操作,這里不再贅述。
以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范 圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng) 包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種實現(xiàn)分布式系統(tǒng)的同步控制的方法,其特征在于,該方法包括主機(jī)在當(dāng)前呼叫周期產(chǎn)生呼叫包,并發(fā)送呼叫包給分布式系統(tǒng)中的所有從機(jī);主機(jī)延時至從機(jī)觸發(fā)的外部中斷的起始時刻,執(zhí)行同步控制;各從機(jī)接收呼叫包,產(chǎn)生接收中斷,由接收中斷觸發(fā)外部中斷,在外部中斷的起始時刻,執(zhí)行同步控制。
2、 根據(jù)權(quán)利要求1所述的實現(xiàn)分布式系統(tǒng)的同步控制的方法,其特征在于, 所述產(chǎn)生呼叫包,具體為設(shè)置第9位數(shù)據(jù)位為呼叫包標(biāo)識,根據(jù)上一個呼叫周期中的數(shù)據(jù)傳送方向設(shè)置數(shù)據(jù)傳送方向標(biāo)識,并設(shè)置呼叫從機(jī)的地址; 和/或,所述從機(jī)包括MCU和外部中斷電路,該外部中斷電路至少包括單穩(wěn)態(tài)觸 發(fā)電路,所述由接收中斷觸發(fā)外部中斷電路,具體為接收中斷中,設(shè)置MCU 的與外部中斷電路相連接的輸出端口為高,外部中斷電路中的單穩(wěn)態(tài)觸發(fā)電路 接收到所述端口為高后,單穩(wěn)態(tài)觸發(fā)電路的輸出端觸發(fā)MCU的外部中斷;和/ 或,所述發(fā)送呼叫包之前,進(jìn)一步包括延時間歇時間,所述間歇時間內(nèi)不進(jìn) 行數(shù)據(jù)傳輸;和/或,所述主才幾延時的延時時間的長度為主機(jī)發(fā)送呼叫包的時刻至從機(jī)觸發(fā)外 部中斷的起始時刻之間的時間差,所述時間差配置在主才幾中;或者,由呼叫包 的發(fā)送時間加上從^L的接收中斷響應(yīng)時間和外部中斷響應(yīng)時間計算所得。
3、 根據(jù)權(quán)利要求2所述的實現(xiàn)分布式系統(tǒng)的同步控制的方法,其特征在于, 所述觸發(fā)MCU的外部中斷之后,進(jìn)一步包括在MCU的外部中斷中,對MCU的硬件時鐘定時器的寄存器進(jìn)行復(fù)位處理;和/或,設(shè)置每個呼叫周期內(nèi)允許傳送的數(shù)據(jù)的最大字節(jié)數(shù),所述發(fā)送呼叫包之后 進(jìn)一步包括主機(jī)根據(jù)當(dāng)前呼叫周期向從機(jī)發(fā)送的數(shù)據(jù)包數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;和/或,設(shè)置每個呼叫周期內(nèi)允許傳送的數(shù)據(jù)的最大字節(jié)數(shù),所述從機(jī)接收呼叫包 之后進(jìn)一步包括根據(jù)當(dāng)前呼叫周期向主機(jī)發(fā)送的數(shù)據(jù)包數(shù)據(jù)在其所屬數(shù)據(jù)包 中的位置進(jìn)行數(shù)據(jù)標(biāo)識。
4、 根據(jù)權(quán)利要求3所述的實現(xiàn)分布式系統(tǒng)的同步控制的方法,其特征在于, 所述執(zhí)行同步控制之后,進(jìn)一步包括依據(jù)上一個呼叫周期中的數(shù)據(jù)標(biāo)識以及 所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識、呼叫從機(jī)的地址,在當(dāng)前呼叫周期繼續(xù)數(shù) 據(jù)的傳送。
5、 根據(jù)權(quán)利要求1至4任一所述的實現(xiàn)分布式系統(tǒng)的同步控制的方法,其 特征在于,該方法進(jìn)一步包括進(jìn)行同步控制的異常保護(hù),包括設(shè)^f乍為從機(jī)投入已有分布式系統(tǒng)的保護(hù),具體為主機(jī)通過發(fā)送系統(tǒng)檢 測命令得知有從機(jī)的^^,分布式系統(tǒng)主機(jī)從原本空閑的從機(jī)地址中去除投入 的從機(jī)的地址,將投入設(shè)備作為從機(jī)納入分布式系統(tǒng);和/或,設(shè)備作為主機(jī)投入已有分布式系統(tǒng)的保護(hù),具體為原主機(jī)通過發(fā)送系統(tǒng) 檢測命令確定有主機(jī)投入,根據(jù)該主機(jī)是否發(fā)申請主機(jī)命令,確定分布式系統(tǒng) 的主才凡;和/或,從機(jī)退出分布式系統(tǒng)的保護(hù),具體為當(dāng)主才幾檢測到有從機(jī)退出分布式系 統(tǒng)時,主機(jī)進(jìn)行對應(yīng)處理;和/或,分布式系統(tǒng)中無主機(jī)或者主機(jī)因故退出的保護(hù),具體為各從機(jī)在設(shè)置的 異常時間內(nèi)沒有接收到呼叫包,則各從4M艮據(jù)自身地址號在對應(yīng)時間主動發(fā)送 申請主機(jī)命令,先發(fā)送申請主機(jī)命令的從機(jī)成為主機(jī)。
6、 一種實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),其特征在于,該系統(tǒng)包括 主機(jī),用于在當(dāng)前呼叫周期性產(chǎn)生呼叫包,發(fā)送呼叫包后,延時至從機(jī)觸發(fā)的外部中斷的起始時刻,執(zhí)行主機(jī)的同步控制;從機(jī),用于接收主機(jī)下發(fā)的呼叫包,產(chǎn)生接收中斷,由接收中斷觸發(fā)外部 中斷,在外部中斷的起始時刻,執(zhí)行該從機(jī)自身的同步控制。
7、 根據(jù)權(quán)利要求6所述的實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),其特征在于,所述主機(jī)包括第一定時模塊,用于對主機(jī)發(fā)送呼叫包的呼叫周期進(jìn)行計時,在每個呼叫周期觸發(fā)呼叫包模塊;呼叫包模塊,用于根據(jù)第一定時模塊的觸發(fā)產(chǎn)生地址幀作為呼叫包; 第一收發(fā)模塊,用于發(fā)送呼叫包模塊產(chǎn)生的呼叫包,并同時觸發(fā)延時同步模塊;延時同步模塊,用于延時至從機(jī)觸發(fā)的外部中斷的起始時刻時,執(zhí)行主機(jī) 的同步控制;和/或,從機(jī)包括第二收發(fā)模塊、接收中斷模塊和外部中斷模塊,其中, 第二jj議模塊,用于接收來自主機(jī)的呼叫包;接收中斷模塊,用于檢測到第二收發(fā)模塊收到呼叫包時產(chǎn)生接收中斷,并觸發(fā)外部中斷模塊;外部中斷模塊,用于根據(jù)接收中斷模塊的觸發(fā),觸發(fā)外部中斷,在外部中斷的起始時刻,執(zhí)行從機(jī)的同步控制。
8、根據(jù)權(quán)利要求7所述的實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),其特征在于, 所述主機(jī)進(jìn)一步還包括第一數(shù)據(jù)標(biāo)識模塊和第一數(shù)據(jù)控制模塊,其中, 第一定時模塊在每個呼叫周期,進(jìn)一步用于觸發(fā)第一數(shù)據(jù)標(biāo)識模塊; 第一數(shù)據(jù)標(biāo)識模塊,用于根據(jù)第 一收發(fā)模塊中主機(jī)在當(dāng)前呼叫周期內(nèi)向從機(jī)發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;第一收發(fā)模塊,進(jìn)一步用于主機(jī)和從機(jī)間的數(shù)據(jù)傳送,向從機(jī)發(fā)送所述數(shù)據(jù)標(biāo)識;還用于接^lt^機(jī)發(fā)送的數(shù)據(jù)標(biāo)識;延時同步模塊執(zhí)行主機(jī)的同步控制后,進(jìn)一步用于觸發(fā)第一數(shù)據(jù)控制模塊; 第一數(shù)據(jù)控制模塊,用于根據(jù)延時同步模塊的觸發(fā),依據(jù)上一個呼叫周期中的數(shù)據(jù)標(biāo)識及所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫從機(jī)的地址,控制第一^模塊在當(dāng)前呼叫周期與從機(jī)間傳送數(shù)據(jù);和/或,所述從機(jī)進(jìn)一步包括第二數(shù)據(jù)標(biāo)識模塊和第二數(shù)據(jù)控制模塊,其中,第二數(shù)據(jù)標(biāo)識模塊,用于根據(jù)第二收發(fā)模塊中從機(jī)在當(dāng)前呼叫周期內(nèi)向主機(jī)發(fā)送的數(shù)據(jù)在其所屬數(shù)據(jù)包中的位置進(jìn)行數(shù)據(jù)標(biāo)識;第二收發(fā)模塊,進(jìn)一步用于從機(jī)和主機(jī)間的數(shù)據(jù)傳送;向主機(jī)發(fā)送所述數(shù)據(jù)標(biāo)識;還用于接收主機(jī)發(fā)送的數(shù)據(jù)標(biāo)識;外部中斷模塊執(zhí)行從機(jī)的同步控制后,進(jìn)一步用于觸發(fā)第二數(shù)據(jù)控制模塊; 第二數(shù)據(jù)控制才莫塊,用于根據(jù)外部中斷模塊的觸發(fā),依據(jù)上一個呼叫周期中的數(shù)據(jù)標(biāo)識及所述呼叫包中的數(shù)據(jù)傳送方向標(biāo)識和呼叫^li的地址,控制第二收發(fā)模塊在當(dāng)前呼叫周期與主機(jī)間傳送數(shù)據(jù)。
9、 根據(jù)權(quán)利要求8所述的實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),其特征在于, 所述主機(jī)進(jìn)一步包括間歇時間模塊,用于控制第一收發(fā)模塊延時間歇時間后發(fā)送呼叫包;和/或,所述從;f幾進(jìn)一步包括硬件時鐘定時器,外部中斷^t塊進(jìn)一步用于在外部 中斷過程中對硬件時鐘定時器的寄存器進(jìn)行復(fù)位處理。
10、 根據(jù)權(quán)利要求6至9任一所述的實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng), 其特征在于,所述主機(jī)包括第二定時模塊、廣旨令模塊、檢測分析模塊和地址發(fā)送 模塊,其中,第二定時模塊,用于對檢測周期進(jìn)行計時,每個檢測周期觸發(fā)廣播命令模塊;廣播命令模塊,用于根據(jù)第二定時模塊的觸發(fā),發(fā)送系統(tǒng)檢測命令;檢測分析模塊,用于接收應(yīng)答,通過檢測應(yīng)答的地址判斷是否有設(shè)備新投 入或從機(jī)退出分布式系統(tǒng),確定有從才幾退出分布式系統(tǒng)時,進(jìn)行對應(yīng)處理;確 定有從機(jī)新"^分布式系統(tǒng)時,觸發(fā)地址發(fā)送才莫塊從原本空閑的從機(jī)地址中去 除所述地址;確定有主機(jī)新投入分布式系統(tǒng)時,并且未接收到主機(jī)申請命令, 觸發(fā)地址發(fā)送才莫塊向?qū)?yīng)主才幾發(fā)送可用從才幾地址;地址發(fā)送模塊,用于根據(jù)檢測分析模塊的觸發(fā)從原本空閑的從機(jī)地址中去 除新^7v從機(jī)的地址或提供可用從機(jī)地址;所述從機(jī)或新投入的所述設(shè)備包括廣播命令應(yīng)答模塊、主機(jī)申請模塊和地址轉(zhuǎn)換模塊,其中,廣播命令應(yīng)答模塊,用于接收來自主機(jī)的系統(tǒng)檢測命令,使用可用從機(jī)地址或主機(jī)地址向主機(jī)返回應(yīng)答;主機(jī)申請模塊,用于發(fā)送申請主機(jī)命令;地址轉(zhuǎn)換模塊,用于更改自身主機(jī)地址為主機(jī)提供的可用從機(jī)地址或更改 自身從機(jī)地址為主機(jī)地址。
11、根據(jù)權(quán)利要求IO所述的實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng),其特征在 于,所述地址轉(zhuǎn)換模塊所在的設(shè)備為主機(jī)時,檢測分析模塊確定應(yīng)答的地址與主機(jī)地址相同時,進(jìn)一步用于確定是否在 設(shè)定時間內(nèi)收到主機(jī)申請命令,如果收到,則確定有主機(jī)新投入分布式系統(tǒng), 觸發(fā)地址轉(zhuǎn)換模塊;如果未收到,則觸發(fā)地址發(fā)送模塊向?qū)?yīng)設(shè)備發(fā)送可用從 機(jī)地址;地址轉(zhuǎn)換模塊,用于根據(jù)檢測分析模塊的觸發(fā)將主機(jī)地址更改為可用從機(jī) 地址。
全文摘要
本發(fā)明公開了一種實現(xiàn)分布式系統(tǒng)的同步控制的方法,分布式系統(tǒng)的主機(jī)周期性地發(fā)送呼叫包,將此呼叫包作為整個分布式系統(tǒng)的同步信號,分布式系統(tǒng)中各個從機(jī)接收到呼叫包后產(chǎn)生接收中斷,從而觸發(fā)外部中斷,在外部中斷的起始時刻執(zhí)行同步控制;主機(jī)延時至從機(jī)調(diào)用外部中斷的起始時刻,執(zhí)行同步控制,從而實現(xiàn)整個分布式系統(tǒng)的同步控制;同時,本發(fā)明還公開了一種基于RS485網(wǎng)絡(luò)實現(xiàn)分布式系統(tǒng)的同步控制的系統(tǒng)。本發(fā)明方案中,無需在分布式系統(tǒng)中增加額外的時鐘線纜,只需要簡單的硬件電路,配合易于實現(xiàn)的軟件流程,就可以實現(xiàn)分布式系統(tǒng)的同步控制,所需的硬件成本非常低,簡單易行,具有較大的實用價值。
文檔編號H04L29/08GK101610145SQ20091008850
公開日2009年12月23日 申請日期2009年7月3日 優(yōu)先權(quán)日2009年7月3日
發(fā)明者開 張, 勇 熊 申請人:中興通訊股份有限公司