Modbus ASCII從站自動(dòng)獲取站地址方法及從站的制作方法
【專利摘要】本發(fā)明公開了一種Modbus?ASCII從站自動(dòng)獲取站地址方法及從站,其中方法包括:從站向所在的Modbus?ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述Modbus?ASCII網(wǎng)絡(luò)中其它從站占用;當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus?ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址,本發(fā)明實(shí)施例,可以解決從站無法自動(dòng)獲取站地址的問題,使從站可實(shí)現(xiàn)即插即用,提高M(jìn)odbus?ASCII網(wǎng)絡(luò)的靈活性和可擴(kuò)展能力。
【專利說明】Modbus ASCI I從站自動(dòng)獲取站地址方法及從站
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及工業(yè)網(wǎng)絡(luò)控制【技術(shù)領(lǐng)域】,尤其涉及一種Modbus ASCII中從站自動(dòng)獲取站地址的方法及從站。
【背景技術(shù)】
[0002]Modbus (—種總線)是由Modicon (莫迪康)公司于1979年發(fā)明,是全球首個(gè)真正用于工業(yè)現(xiàn)場(chǎng)的總線協(xié)議,其經(jīng)過數(shù)年發(fā)展,已被廣泛應(yīng)用且可在串行通信或者以太網(wǎng)上實(shí)現(xiàn)。其中Modbus按照傳輸模式主要分為ASCIKAmerican Standard Code for InformationInterchange,美國(guó)標(biāo)準(zhǔn)信息交換碼)模式或RTU (Remote Terminal Unit,遠(yuǎn)程終端單元)模式,基于這兩種模式的Modbus分別被本領(lǐng)域技術(shù)人員稱為“Modbus ASCII”和“ModbusRTU ”。
[0003]對(duì)于Modbus ASCII,其鏈路協(xié)議為主-從協(xié)議,即在同一時(shí)間,總線可以有至少一個(gè)從站,但是僅能有一個(gè)主站,并且通信由主站發(fā)起請(qǐng)求,從站響應(yīng)主站的請(qǐng)求而實(shí)現(xiàn),具體的主站可用單播模式和廣播模式發(fā)起與從站的通信,其中單播模式是指主站尋址單個(gè)從站,被尋址的從站接收并處理主站的請(qǐng)求,并在處理完請(qǐng)求后向主站返回響應(yīng);其中廣播模式是指主站向所有的從站發(fā)送請(qǐng)求,該請(qǐng)求僅限于寫命令,并且從站無須返回應(yīng)答。
[0004]目前對(duì)于Modbus ASCII中從站當(dāng)其入網(wǎng)時(shí),需要為其配置站地址,其中站地址的配置方式主要包括硬件設(shè)置和軟件分配,其中硬件設(shè)置是指通過設(shè)置撥碼開關(guān)組合或手持設(shè)定器,選擇某個(gè)通信站地址,實(shí)現(xiàn)手動(dòng)配置;其中軟件分配一般是通過Modbus ASCII中主站對(duì)從站進(jìn)行地址分配而實(shí)現(xiàn)。但是,隨著網(wǎng)絡(luò)節(jié)點(diǎn)數(shù)的擴(kuò)展,系統(tǒng)設(shè)備人員對(duì)站地址的管理難度不斷增加,易造成網(wǎng)絡(luò)站地址使用混淆,每個(gè)站地址作用和使用意義不明確。尤其對(duì)于主站進(jìn)行地址分配的方式,復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和任務(wù)關(guān)系使得主站的識(shí)別難度及復(fù)雜度劇增,難以實(shí)現(xiàn)地址自動(dòng)分配功能,并且對(duì)于傳統(tǒng)自動(dòng)地址配置方式實(shí)現(xiàn)通常發(fā)生在網(wǎng)絡(luò)初始化和故障恢復(fù)過程中,各網(wǎng)絡(luò)通信站通過檢測(cè)網(wǎng)絡(luò)的異常行為,實(shí)現(xiàn)網(wǎng)絡(luò)地址的自動(dòng)分配,然而在網(wǎng)絡(luò)正常運(yùn)行中,系統(tǒng)無法識(shí)別是否有新的節(jié)點(diǎn)加入,即從站不具備即插即用能力,靈活性和可擴(kuò)展能力弱。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種Modbus ASCII中從站自動(dòng)獲取站地址的方法及從站,用于解決從站無法自動(dòng)獲取站地址的問題,使從站可實(shí)現(xiàn)即插即用,提高M(jìn)odbus ASCII的靈活性和可擴(kuò)展能力。
[0006]本發(fā)明提供了一種Modbus ASCII從站自動(dòng)獲取站地址方法,包括:
[0007]從站向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用;
[0008]當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址。
[0009]進(jìn)一步,所述從站發(fā)送地址復(fù)用探測(cè)包之前還包括:所述從站根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為所述臨時(shí)站地址,所述網(wǎng)絡(luò)地址表用于記錄所述從站檢測(cè)到的已被其它從站占用的站地址。
[0010]進(jìn)一步,所述從站向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,包括:
[0011]所述從站探測(cè)到所述通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí)時(shí)間;
[0012]當(dāng)所述隨時(shí)延時(shí)時(shí)間到達(dá)時(shí),所述從站向所在Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送所述地址復(fù)用探測(cè)包。
[0013]進(jìn)一步,當(dāng)所述從站至少兩次發(fā)送含同一臨時(shí)站地址的地址復(fù)用探測(cè)包均未收到檢測(cè)應(yīng)答時(shí),所述探測(cè)結(jié)果才為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用。
[0014]進(jìn)一步,所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址之后,還包括:當(dāng)所述從站接收到含該固定通信地址的地址復(fù)用探測(cè)包時(shí),做出檢測(cè)應(yīng)答。
[0015]進(jìn)一步,所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址之后,還包括:
[0016]所述從站根據(jù)所述固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包;
`[0017]所述從站響應(yīng)所述主站收到所述組網(wǎng)請(qǐng)求包后發(fā)送的用于請(qǐng)求所述從站基本信息的請(qǐng)求報(bào)告。
[0018]本發(fā)明還提供了一種用于Modbus ASCII中自動(dòng)獲取站地址的從站,包括:
[0019]探測(cè)模塊,用于向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用;
[0020]處理模塊,用于當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址。
[0021]進(jìn)一步,還包括:臨時(shí)站地址生成模塊,用于根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為所述臨時(shí)站地址,所述網(wǎng)絡(luò)地址表用于記錄所述從站檢測(cè)到的已被其它從站占用的站地址。
[0022]進(jìn)一步,所述探測(cè)模塊,包括:
[0023]隨機(jī)延時(shí)時(shí)間產(chǎn)生單元,用于當(dāng)探測(cè)到所述通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí)時(shí)間;
[0024]發(fā)送單元,用于當(dāng)所述隨時(shí)延時(shí)時(shí)間到達(dá)時(shí),所述從站向所在Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送所述地址復(fù)用探測(cè)包。
[0025]進(jìn)一步,還包括:組網(wǎng)模塊,用于根據(jù)所述固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包;以及用于響應(yīng)所述主站收到所述組網(wǎng)請(qǐng)求包后發(fā)送的用于請(qǐng)求所述從站基本信息的請(qǐng)求?艮告。
[0026]本發(fā)明的有益效果:
[0027]本發(fā)明實(shí)施例,由從站向通信鏈路發(fā)送地址復(fù)用探測(cè)包探測(cè)地址復(fù)用包中的臨時(shí)站地址是否被其它從站占用,當(dāng)探測(cè)結(jié)果為未被占用時(shí),則從站占用該臨時(shí)站地址,從而解決了從站如何自動(dòng)獲取站地址的問題,從而實(shí)現(xiàn)了網(wǎng)絡(luò)設(shè)備的自動(dòng)組網(wǎng),使得在設(shè)計(jì)網(wǎng)絡(luò)系統(tǒng)過程中可實(shí)現(xiàn)任務(wù)控制與Modbus ASCII通信的分離,增強(qiáng)了網(wǎng)絡(luò)設(shè)計(jì)和管理的靈活性,同時(shí)在網(wǎng)絡(luò)設(shè)備的更替和擴(kuò)展的過程中,可實(shí)現(xiàn)設(shè)備的即插即用,無需配置靜態(tài)通信地址,增強(qiáng)了通信地址的利用率,除此之外,在單個(gè)或多個(gè)新入網(wǎng)從站自動(dòng)獲取地址過程中,Modbus ASCII主站將不參與站地址指派或干預(yù),極大降低了主站的負(fù)荷。
【專利附圖】
【附圖說明】
[0028]下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述:
[0029]圖1是Modbus ASCII網(wǎng)絡(luò)的拓?fù)鋱D。
[0030]圖2是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第一實(shí)施例的流程不意圖。
[0031]圖3是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第二實(shí)施例的流程不意圖。
[0032]圖4是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第三實(shí)施例的流程不意圖。
[0033]圖5是本發(fā)明提供的從站自動(dòng)獲取站地址的詳細(xì)流程圖。
[0034]圖6是Modbus ASCII主站識(shí)別新入網(wǎng)絡(luò)從站的流程圖。
[0035]圖7是本發(fā)明一種實(shí)際應(yīng)用方法的示意圖。
[0036]圖8是本發(fā)明提供的用于Modbus ASCII中自動(dòng)獲取站地址的從站的實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0037]如圖1所示,是Modbus ASCII網(wǎng)絡(luò)的拓?fù)鋱D,其主要由一個(gè)Modbus ASCII主站和若干個(gè)Modbus ASCII從站構(gòu)成,其中各個(gè)站之間通過RS-485總線連接,并在485總線兩端分別接入120Ω的終端電阻。Modbus ASCII網(wǎng)絡(luò)中各站之間通信均采用該總線傳輸,而且每個(gè)正確的通信報(bào)文均符合Modbus ASCII傳輸協(xié)議標(biāo)準(zhǔn)。
[0038]根據(jù)Modbus ASCII傳輸協(xié)議標(biāo)準(zhǔn)的規(guī)定:通訊首先由主站向從站發(fā)起請(qǐng)求,而且Modbus ASCII的主站每次只能發(fā)起一個(gè)通信事務(wù),網(wǎng)絡(luò)中所有從站都會(huì)接收到該請(qǐng)求報(bào)文,然后通過解析該報(bào)文的地址域內(nèi)容,判斷該內(nèi)容是否為本站地址,若是則作出相應(yīng)的應(yīng)答響應(yīng),否則丟棄該報(bào)文。其中地址域的有效范圍為1-247,另外O號(hào)地址為廣播地址,所有從站收到“O號(hào)地址”請(qǐng)求時(shí)均不進(jìn)行報(bào)文應(yīng)答。
[0039]根據(jù)Modbus ASCII傳輸協(xié)議標(biāo)準(zhǔn)的規(guī)定:Modbus ASCII采用主從通信模式。網(wǎng)絡(luò)通信首先由主站向某個(gè)從站發(fā)起請(qǐng)求(攜帶從站的站地址),該請(qǐng)求被網(wǎng)絡(luò)中所有的從站接收,從站接收到請(qǐng)求后,將請(qǐng)求中攜帶的站地址與本身的站地址進(jìn)行比較,若相同,則說明該請(qǐng)求是發(fā)往本站的,需要進(jìn)行應(yīng)答,若不相同,則說明該請(qǐng)求與本站無關(guān),丟棄請(qǐng)求。
[0040]也就是說,在Modbus ASCII網(wǎng)絡(luò)中,若網(wǎng)絡(luò)任意節(jié)點(diǎn)發(fā)起通信,其他所有節(jié)點(diǎn)均可以接收到此報(bào)文,然后各從站通過檢測(cè)報(bào)文的地址域來判斷是否為本站數(shù)據(jù)以決定是否應(yīng)答?;诖耍景l(fā)明實(shí)施例意識(shí)到:從站想要獲取站地址時(shí),可以以臨時(shí)主站(偽主站)的身份,向網(wǎng)絡(luò)中發(fā)送包含某地址的復(fù)用檢測(cè)包,若該地址已經(jīng)被其它從站占用,那么從站將會(huì)收到占用該地址的其它從站相應(yīng)的應(yīng)答,若該地址未被其它從站占用,則從站不會(huì)收到相應(yīng)的應(yīng)答,此時(shí)從站可以占用該站地址。基于此思路,本發(fā)明提供如下技術(shù)思路。
[0041]請(qǐng)參考圖2,是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第一實(shí)施例的流程示意圖,其包括:
[0042]步驟S21、從站向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包。
[0043]其中,從站可以是新入網(wǎng)的從站,其要完成入網(wǎng)必須獲得一個(gè)未被當(dāng)前已完成入網(wǎng)的其它從站占用的占地址。或者從站可以為已經(jīng)入網(wǎng)的從站,但由于故障原因,需要重新獲取站地址,從而避免該從站地址在故障過程中被其他從站占用。
[0044]其中,地址復(fù)用探測(cè)包包含臨時(shí)站地址。
[0045]其中,地址復(fù)用探測(cè)包用于探測(cè)其中的臨時(shí)站地址是否已被Modbus ASCII網(wǎng)絡(luò)中其它從站占用。由Modbus ASCII傳輸協(xié)議可知,若該臨時(shí)站地址已被Modbus ASCII網(wǎng)絡(luò)中某個(gè)從站占用,那么當(dāng)該從站收到地址復(fù)用探測(cè)包后,將做相應(yīng)的應(yīng)答。
[0046]其中,地址復(fù)用探測(cè)包的具體內(nèi)容主要由Modbus ASCII診斷功能碼08H和子功能碼OOHOOH構(gòu)成,根據(jù)Modbus ASCII協(xié)議規(guī)范要求,該地址復(fù)用探測(cè)包對(duì)應(yīng)的協(xié)議數(shù)據(jù)包(即 Protocol Data Unit,簡(jiǎn)稱為“PDU”)可表示為:30H 38H 30H 30H 30H 30H,其中 30H38H為功能碼為08H的ASCII編碼,30H 30H30H 30H為功能碼08H的子功能碼OOHOOH的ASCII編碼。
[0047]具體的,步驟S21可以包括:從站探測(cè)到通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí)時(shí)間;當(dāng)隨機(jī)延時(shí)時(shí)間到達(dá)時(shí),從站向通信鏈路發(fā)送地址復(fù)用探測(cè)包。此處,通信鏈路空閑是指接收到字符CR,LF后,網(wǎng)絡(luò)中無任何行為,其中CR,LF對(duì)應(yīng)的ASCII碼分別為ODH和0AH,根據(jù)Modbus ASCII協(xié)議規(guī)定,若Modbus ASCII通信站連續(xù)接收到這兩個(gè)字符,則表示上一幀報(bào)文傳輸結(jié)束。此處,隨機(jī)延時(shí)時(shí)間的產(chǎn)生可以是由從站調(diào)用隨機(jī)延時(shí)函數(shù)而實(shí)現(xiàn)。此處,在探測(cè)到通信鏈路空閑時(shí),并不立即發(fā)送地址復(fù)用探測(cè)包而是采取延時(shí)一段時(shí)間后再發(fā)送地址復(fù)用探測(cè)包的好處是可以避免或減小新入網(wǎng)設(shè)備(即新入網(wǎng)從站)所發(fā)送的地址復(fù)用探測(cè)包與其他通信報(bào)文沖突的概率。
[0048]步驟S22、當(dāng)探測(cè)結(jié)果為該臨時(shí)站地址未被Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),從站占用該臨時(shí)站地址作為該從站的固定通信地址。
[0049]其中,當(dāng)從站至少兩次發(fā)送含同一臨時(shí)站地址的地址復(fù)用探測(cè)包均未收到檢測(cè)應(yīng)答時(shí),探測(cè)結(jié)果才為臨時(shí)站地址未被Modbus ASCII網(wǎng)絡(luò)中其它從站占用,這樣可以提高準(zhǔn)確性。此處,兩次相同的地址復(fù)用探測(cè)包應(yīng)保持足夠的發(fā)送間隔,以保證其它從站有足夠的時(shí)間響應(yīng)。
[0050]其中,未收到檢測(cè)應(yīng)答是指從站發(fā)送地址復(fù)用探測(cè)包之后,在規(guī)定的時(shí)間內(nèi)未收到任何報(bào)文,或者雖然在規(guī)定的時(shí)間內(nèi)有收到報(bào)文,但收到的報(bào)文均不是針對(duì)地址復(fù)用探測(cè)包所做的應(yīng)答。
[0051]另外,在從站自動(dòng)獲取地址的過程中,Modbus ASCII中主站將不對(duì)此行為做任何處理,即當(dāng)主站接收到地址復(fù)用探測(cè)包后,由于該報(bào)文為非主站請(qǐng)求應(yīng)答,主站將其作為無效報(bào)文舍去。
[0052]本實(shí)施例,各個(gè)新入網(wǎng)從站都將模擬主站功能,在網(wǎng)絡(luò)空閑階段發(fā)送地址復(fù)用探測(cè)包,可以將這些從站稱之為臨時(shí)偽主站。而對(duì)于真正的Modbus ASCII主站在這一過程中將不會(huì)對(duì)地址復(fù)用探測(cè)行為作任何反應(yīng),而只是將其作為一個(gè)無效的通信包給忽略。偽主站與真正的Modbus ASCII主站之間是作用在不同的時(shí)段,二者之間并不沖突。而且當(dāng)新入網(wǎng)從站完成通信地址自動(dòng)獲取以后,將失去臨時(shí)偽主站的功能。
[0053]本實(shí)施例,由從站向通信鏈路發(fā)送地址復(fù)用探測(cè)包探測(cè)地址復(fù)用包中的臨時(shí)站地址是否被其它從站占用,當(dāng)探測(cè)結(jié)果為未被占用時(shí),則從站占用該臨時(shí)站地址,從而解決了從站如何自動(dòng)獲取站地址的問題,實(shí)現(xiàn)了網(wǎng)絡(luò)設(shè)備的自動(dòng)組網(wǎng),使得在設(shè)計(jì)網(wǎng)絡(luò)系統(tǒng)過程中可實(shí)現(xiàn)任務(wù)控制與Modbus ASCII通信的分離,增強(qiáng)了網(wǎng)絡(luò)設(shè)計(jì)和管理的靈活性,同時(shí)由于站地址的獲取完全由從站主導(dǎo),因此在網(wǎng)絡(luò)設(shè)備的更替和擴(kuò)展的過程中,可實(shí)現(xiàn)設(shè)備的即插即用,無需配置靜態(tài)通信地址,增強(qiáng)了通信地址的利用率,除此之外,在單個(gè)或多個(gè)新入網(wǎng)從站自動(dòng)獲取地址過程中,Modbus ASCII主站將不參與站地址指派或干預(yù),極大降低了主站的負(fù)荷。
[0054]請(qǐng)參考圖3,是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第二實(shí)施例的流程示意圖,其包括:
[0055]步驟S31、從站根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為臨時(shí)站地址。
[0056]與步驟S21 —步驟S22分別相同的步驟S32 —步驟S33。
[0057]其中,網(wǎng)絡(luò)地址表用于記錄從站檢測(cè)到的已被其它從站占用的站地址。
[0058]其中,網(wǎng)絡(luò)地址表中每個(gè)元素的長(zhǎng)度為一個(gè)字節(jié),由于Modbus ASCII中從站地址為1-247,因此網(wǎng)絡(luò)地址表的最大長(zhǎng)度為247。
[0059]其中,對(duì)從站而言,網(wǎng)絡(luò)地址表最初為空,當(dāng)從站接收到站地址為CAi的通信數(shù)據(jù)包時(shí),則表明該站地址CAi已經(jīng)被其他從站占用,則從站將CAi加入網(wǎng)絡(luò)地址表中,其中CAi e U,U={1,2,…,247}。另外,當(dāng)從站以站地址CAi作為臨時(shí)站地址進(jìn)行探測(cè),若收到相應(yīng)的應(yīng)答時(shí),也表明該站地址CAi已被占用,從站也將其加入網(wǎng)絡(luò)地址表中。
[0060]其中,從站根據(jù)網(wǎng)絡(luò)地址表獲取地址值最小的空閑地址作為臨時(shí)站地址時(shí),其中空閑地址為1-247號(hào)站地址中除去網(wǎng)絡(luò)地址表中已檢測(cè)到被占用的站地址,即有(FCAjFCAi e U-AT},其中FCAi為空閑地址集合,AT為該從站已檢測(cè)被使用站地址集合(其中該集合元素與網(wǎng)絡(luò)地址表內(nèi)容一一對(duì)應(yīng))。顯然,空閑網(wǎng)絡(luò)地址數(shù)目大于1,然后步驟S31選擇其中最小的作為臨時(shí)站地址,即MIN(FCAi)。
[0061]請(qǐng)參考圖4,是本發(fā)明提供的Modbus ASCII從站自動(dòng)獲取站地址方法的第三實(shí)施例的流程示意圖,其包括:
[0062]與步驟Sll —步驟S12相同的步驟S41 —步驟S42。
[0063]步驟S43、從站根據(jù)獲取的固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包。
[0064]其中,組網(wǎng)請(qǐng)求包R(CAi)的請(qǐng)求功能碼為11H,基于Modbus ASCII的組網(wǎng)請(qǐng)求包R(CAi)的格式為:3AH ASCII (固定通信地址)31H31H LRC0DH0AH,其中 3AH為Modbus ASCII為幀起始符;ASCII (固定通信地址)為固定通信地址的ASCII編碼方式,長(zhǎng)度為兩個(gè)無符號(hào)字節(jié)類型;31H31H功能碼IlH的ASCII編碼;LRC碼為ASCII (固定通信地址)31H31H的LRC (Longitudinal Redundancy Check,縱向冗余校驗(yàn))校驗(yàn)碼;OD和OAH是報(bào)文結(jié)束標(biāo)示符。
[0065]其中,已采用步驟S41和步驟S42的方式獲得固定通信地址的從站發(fā)送組網(wǎng)請(qǐng)求包R(CAi)仍然需要等待網(wǎng)絡(luò)空閑并隨機(jī)延時(shí)一段時(shí)間后進(jìn)行。[0066]步驟S44、從站響應(yīng)主站收到組網(wǎng)請(qǐng)求包后發(fā)送的用于請(qǐng)求從站基本信息的請(qǐng)求?艮告。
[0067]其中,在每個(gè)從站中均有都有標(biāo)識(shí)該站的基本信息的參數(shù)Qi,該參數(shù)包括從站的類型、功能等基本信息。
[0068]其中,當(dāng)Modbus ASCII中主站接收到組網(wǎng)請(qǐng)求包時(shí)R(CAi),說明站地址為MIN(FCAi)的從站正在請(qǐng)求組網(wǎng)識(shí)別,那么主站則通過請(qǐng)求報(bào)告從站ID(功能碼:11H),識(shí)別該請(qǐng)求組網(wǎng)識(shí)別的從站的基本信息,以完成組網(wǎng)識(shí)別。
[0069]其中,處于等待主站識(shí)別階段的從站,當(dāng)其收到主站請(qǐng)求報(bào)文后,將設(shè)備信息Θ i按照Modbus ASCII功能碼IlH規(guī)范封裝,然后應(yīng)答給主站,到此為該從站可進(jìn)入正常通信模式。
[0070]另外,當(dāng)從站占用該臨時(shí)站地址作為該從站的固定通信地址后,從站即使在組網(wǎng)請(qǐng)求階段接收到含該固定通信地址的地址復(fù)用探測(cè)包時(shí),也做出相應(yīng)的檢測(cè)應(yīng)答,表示該站地址已被占用。
[0071]另外,由以上實(shí)施例分析可知:對(duì)于Modbus ASCII中主站在處理通信事物過程中,其接收到網(wǎng)絡(luò)通信包總體分為三種情況:
[0072]1、從站的請(qǐng)求響應(yīng)報(bào)文。此報(bào)文通常是發(fā)生在Modbus ASCII主站發(fā)出通信請(qǐng)求后,網(wǎng)絡(luò)中相應(yīng)從站作出的響應(yīng)。在此過程中,Modbus ASCII從站按照協(xié)議規(guī)范正常處理此報(bào)文。
[0073]2、新入網(wǎng)從站請(qǐng)求報(bào)文。按照本發(fā)明實(shí)施例提供的自動(dòng)獲取站地址的方法,在地址檢測(cè)階段,主要站將不參與地址分配等任何角色。而當(dāng)從站獲取有效地址后,由主站將無法獲取該從站的信息,由從站主動(dòng)向網(wǎng)絡(luò)主站發(fā)送組網(wǎng)請(qǐng)求通信報(bào)文包。當(dāng)主站接收到該格式的報(bào)文包時(shí),則表示網(wǎng)絡(luò)中有新從站已經(jīng)加入,等待主站識(shí)別。然后Modbus ASCII主站則主動(dòng)向該從站發(fā)起請(qǐng)求從站ID,識(shí)別該從站的設(shè)備類型和功能等。
[0074]3、網(wǎng)絡(luò)異常報(bào)文。此報(bào)文一般包括,通信錯(cuò)誤報(bào)文(包括LRC檢驗(yàn)錯(cuò),奇偶校驗(yàn)錯(cuò)、字符溢出等等)、非請(qǐng)求報(bào)文。其中,對(duì)于主站來說,地址復(fù)用檢測(cè)報(bào)文也將被視作非請(qǐng)求報(bào)文。
[0075]請(qǐng)參考圖5,是本發(fā)明提供的從站自動(dòng)獲取站地址的詳細(xì)流程圖,其包含了本發(fā)明實(shí)施例的諸多細(xì)節(jié),這有助于幫助理解本發(fā)明,但是對(duì)于本領(lǐng)域技術(shù)人員而言,這諸多細(xì)節(jié)限定而成的技術(shù)方案僅是本發(fā)明較優(yōu)的技術(shù)方案,不應(yīng)理解為本發(fā)明的唯一實(shí)現(xiàn)方式或者對(duì)保護(hù)范圍的限定。圖5的流程包括:
[0076]步驟S501、當(dāng)從站啟動(dòng)后,初始化自身配置。
[0077]此處,初始化自身配置包括系統(tǒng)配置初始化、通信初始化、參數(shù)初始化等等。
[0078]除此之外,步驟S501的從站需要定義網(wǎng)絡(luò)地址表,即AT,其最大長(zhǎng)度為247,每個(gè)元素為無符號(hào)字節(jié)類型,其作用主要用于存儲(chǔ)該站檢測(cè)被使用過的站地址(也可稱為“通信地址”)。
[0079]然后,步驟S501的從站定義地址復(fù)用檢測(cè)計(jì)數(shù)器Cl和組網(wǎng)請(qǐng)求計(jì)數(shù)器C2,分別用于計(jì)算臨時(shí)站地址復(fù)用檢測(cè)次數(shù)和組網(wǎng)請(qǐng)求識(shí)別的次數(shù)。
[0080]最后,步驟S501的從站配置有關(guān)的通信計(jì)時(shí)器、響應(yīng)超時(shí)計(jì)時(shí)器和隨機(jī)延時(shí)計(jì)時(shí)器等。[0081]步驟S502、當(dāng)初始化完成以后,根據(jù)網(wǎng)絡(luò)地址表AT,獲取最小的空閑地址,準(zhǔn)備地址復(fù)用探測(cè)報(bào)文,并清零計(jì)數(shù)器Cl和C2。
[0082]此處,若網(wǎng)絡(luò)當(dāng)前正在進(jìn)行通信報(bào)文傳輸,則繼續(xù)等待鏈路空閑。若此時(shí)鏈路為空閑狀態(tài),則根據(jù)隨機(jī)延遲策略產(chǎn)生一個(gè)隨機(jī)數(shù),然后設(shè)定延時(shí)時(shí)間,開啟延時(shí)定時(shí)器。
[0083]然后,處于延時(shí)等待的從站,需要實(shí)時(shí)監(jiān)測(cè)通信鏈路的信息。若在延時(shí)結(jié)束之前,通信鏈路無任何通信行為,則發(fā)送已準(zhǔn)備好的地址復(fù)用探測(cè)包。若在此階段檢測(cè)到有鏈路報(bào)文傳輸,則放棄此次地址復(fù)用發(fā)送的機(jī)會(huì),然后等待下一次鏈路空閑。于此同時(shí),從站還接收鏈路中的報(bào)文信息。
[0084]步驟S503、當(dāng)從站接受到有新報(bào)文時(shí),檢查基本通信錯(cuò)誤,其中包括LRC校驗(yàn)、字符奇偶校驗(yàn)、字符溢出驗(yàn)證、通信報(bào)文長(zhǎng)度驗(yàn)證和幀間字符超時(shí)驗(yàn)證等。若校驗(yàn)無錯(cuò)誤則進(jìn)入步驟S504,解析該報(bào)文,然后進(jìn)入步驟S505 ;若其中有一個(gè)條件不滿足則直接進(jìn)入步驟S507。
[0085]步驟S504、檢查地址域內(nèi)容,獲取其中的站地址。
[0086]步驟S505、若步驟S504獲取的站地址與本站臨時(shí)站地址相同,則說明該臨時(shí)站地址已經(jīng)被其他從站占用,然后進(jìn)入步驟S506。若該內(nèi)容不等于本站臨時(shí)站地址,則表明其他從站正在通信,然后舍去該無效通信包,直接進(jìn)入步驟S507。
[0087]步驟S506、經(jīng)步驟S505判斷,本站已獲取的地址與其他站沖突,根據(jù)“先檢測(cè),先獲取”的規(guī)則,本站必須放棄該地址的占用,避免地址沖突。首先該站需要更新網(wǎng)絡(luò)地址表,將該站地址加入網(wǎng)絡(luò)地址表中,為下次獲取網(wǎng)絡(luò)空閑地址提供可靠性依據(jù)。然后本站再次根據(jù)網(wǎng)絡(luò)地址表重新獲取最小網(wǎng)絡(luò)空閑地址和準(zhǔn)地址復(fù)用檢測(cè)通信報(bào)文包,等待鏈路空閑,準(zhǔn)備新一路的地址檢測(cè),此步驟如同步驟S502。與此同時(shí),該站需要清零計(jì)數(shù)器Cl和C2,避免歷史數(shù)據(jù)給檢測(cè)結(jié)果帶來錯(cuò)誤信息。
[0088]步驟S507、判斷響應(yīng)是否超時(shí)。
[0089]在本發(fā)明提供的方式是通過地址復(fù)用探測(cè)來判斷本站已獲得的地址是否與其他站重復(fù)。由步驟S502、S506、S510中,每次發(fā)送地址復(fù)用探測(cè)包后,都將啟動(dòng)本站的響應(yīng)超時(shí)定時(shí)器。若響應(yīng)超時(shí)標(biāo)志位置位,則進(jìn)入步驟S508,否則進(jìn)入步驟S502檢測(cè)是否有新的報(bào)文。
[0090]步驟S508、當(dāng)該通信站檢測(cè)到請(qǐng)求響應(yīng)超時(shí),則將地址復(fù)用檢測(cè)計(jì)數(shù)器Cl累加I。
[0091]其中,地址復(fù)用檢測(cè)計(jì)數(shù)器的作用是用于記錄該站對(duì)現(xiàn)使用的地址已經(jīng)發(fā)出檢測(cè)包次數(shù),并均沒有接受到該站有關(guān)的檢測(cè)應(yīng)答。對(duì)地址復(fù)用的多次檢測(cè)可以增強(qiáng)使用該地址的可靠性,避免由于網(wǎng)絡(luò)繁忙或通信錯(cuò)誤帶來的誤導(dǎo)。
[0092]步驟S509、判斷地址復(fù)用測(cè)試是否已經(jīng)達(dá)到的上限值。若Cl累計(jì)響應(yīng)超時(shí)次數(shù)大于或等于該上限值,則進(jìn)入下一個(gè)步驟S511,表明該站已經(jīng)獲取網(wǎng)絡(luò)空閑地址成功,已成功進(jìn)入組網(wǎng)請(qǐng)求階段。若該計(jì)數(shù)器值小于該上限值,則進(jìn)入步驟S510。
[0093]步驟S511、鑒于上一次發(fā)送地址復(fù)用探測(cè)包后,沒有接收到相應(yīng)通信站應(yīng)答,則在該步驟中,則發(fā)送組網(wǎng)請(qǐng)求,并重啟響應(yīng)超時(shí)定時(shí)器。
[0094]在地址檢測(cè)階段,新入網(wǎng)從站成功獲取站地址以后,已經(jīng)具備了基本通信能力。但此過程是在網(wǎng)絡(luò)從站之間,通過以偽主站請(qǐng)求的方式得到該空閑地址,網(wǎng)絡(luò)主站沒有參與該地址自動(dòng)獲取的任務(wù),并不知道有新的網(wǎng)絡(luò)節(jié)點(diǎn)(即從站)已經(jīng)加入到該系統(tǒng)中。[0095]本發(fā)明進(jìn)一步的目的是實(shí)現(xiàn)在網(wǎng)絡(luò)運(yùn)行的任何階段都能檢測(cè)到網(wǎng)絡(luò)有新通信設(shè)備的接入。所以,在組網(wǎng)識(shí)別階段,該新通信從站通過向網(wǎng)絡(luò)主站發(fā)送特定的請(qǐng)求識(shí)別報(bào)文包,通知主站識(shí)別自身設(shè)備的類型、功能等信息。在步驟S511中,當(dāng)該站檢測(cè)到網(wǎng)絡(luò)閑時(shí),向總線鏈路發(fā)送組網(wǎng)請(qǐng)求報(bào)文包。同時(shí)也啟動(dòng)響應(yīng)超時(shí)定時(shí)器,并清零組網(wǎng)請(qǐng)求計(jì)數(shù)器C2,然后進(jìn)入步驟S512中檢測(cè)鏈路報(bào)文。
[0096]本發(fā)明的一個(gè)重要的功能就是能夠同時(shí)支持多個(gè)新通信從站設(shè)備同時(shí)接入網(wǎng)絡(luò)中,并完成相應(yīng)的自動(dòng)獲取地址的任務(wù)。已經(jīng)獲取網(wǎng)絡(luò)空閑地址的通信從站,當(dāng)檢測(cè)到有其他網(wǎng)絡(luò)從站檢測(cè)本站地址是否被占用時(shí),該設(shè)備從站應(yīng)當(dāng)給予應(yīng)答測(cè)試,如步驟S514,表明該地址已經(jīng)被占用,然后進(jìn)入步驟S516判斷是否響應(yīng)超時(shí)。
[0097]如由于通信故障或其他原因,當(dāng)通信從站請(qǐng)求組網(wǎng)請(qǐng)求后,沒有接收到來自系統(tǒng)主站的識(shí)別請(qǐng)求,然后發(fā)生響應(yīng)超時(shí),進(jìn)入步驟S517,對(duì)請(qǐng)求組網(wǎng)次數(shù)累加。然后進(jìn)入步驟S518,判斷的組網(wǎng)請(qǐng)求次數(shù)是否超限。若該站已經(jīng)組網(wǎng)請(qǐng)求次數(shù)已經(jīng)超過了允許的上限值,則放棄對(duì)總線的占用,重新進(jìn)入地址檢測(cè)模式,從新獲取網(wǎng)絡(luò)空閑地址。否則,重新進(jìn)入步驟S511,嘗試與主站發(fā)起組網(wǎng)請(qǐng)求。
[0098]若在步驟S514檢測(cè)到新報(bào)文為主站請(qǐng)求本站ID (身份標(biāo)識(shí)),則說明主站已識(shí)別該通信從站已經(jīng)進(jìn)入網(wǎng)絡(luò),然后進(jìn)入步驟S519應(yīng)答主站請(qǐng)求參數(shù)。在此應(yīng)答過程中無需調(diào)用隨機(jī)延時(shí)策略,因該請(qǐng)求由主站發(fā)起,而本站已經(jīng)受控于Modbus ASCII主站調(diào)度。當(dāng)新入網(wǎng)從站響應(yīng)主站請(qǐng)求后,同時(shí)該站也正式進(jìn)入正常通信模式,整個(gè)從站自動(dòng)獲取通信地址的過程結(jié)束。
[0099]請(qǐng)參考圖6,是Modbus ASCII主站識(shí)別新入網(wǎng)絡(luò)從站的流程圖,其包括:
[0100]首先在步驟S601中,當(dāng)Modbus ASCII中主站檢測(cè)到有新的鏈路報(bào)文時(shí),然后馬上進(jìn)入步驟S602,進(jìn)行基本的通信處理。若步驟S602檢測(cè)該報(bào)文不滿足Modbus ASCII協(xié)議的基本通信驗(yàn)證,則丟棄該錯(cuò)誤信息,然后通過步驟S607返回。若該報(bào)文時(shí)正確報(bào)文檢驗(yàn)爭(zhēng)取,則進(jìn)入步驟S603。
[0101]步驟S603、判斷接收的報(bào)文是否為請(qǐng)求應(yīng)答。根據(jù)Modbus ASCII協(xié)議的基本內(nèi)容,網(wǎng)絡(luò)采用Modbus ASCII主站首先向網(wǎng)絡(luò)的某個(gè)站發(fā)起請(qǐng)求,然后目標(biāo)站根據(jù)請(qǐng)求的內(nèi)容進(jìn)行響應(yīng)。所以當(dāng)主站接收到新的報(bào)文時(shí),首先判斷是不是目標(biāo)從站的功能應(yīng)答。如果是,則進(jìn)入步驟S606根據(jù)Modbus ASCII協(xié)議進(jìn)行報(bào)文解析,最后通過步驟S607返回。若不是請(qǐng)求的目標(biāo)站應(yīng)答,則進(jìn)入步驟S604。
[0102]步驟S604、組網(wǎng)請(qǐng)求報(bào)文的檢測(cè)。當(dāng)主站接收到不是本站請(qǐng)求,但又滿足報(bào)告從站ID的請(qǐng)求通信報(bào)文時(shí),表明網(wǎng)絡(luò)中有新的通信從站等待主站識(shí)別,即在步驟S604中判斷結(jié)果為真,則進(jìn)入步驟S605,增加主動(dòng)識(shí)別從站ID的任務(wù)。若接收到的報(bào)文既不是請(qǐng)求應(yīng)答,也不是新入網(wǎng)從站的組網(wǎng)請(qǐng)求,則丟棄該通信報(bào)文。這其實(shí)也在另一方面體現(xiàn)了 ModbusASCII主站忽略地址復(fù)用檢測(cè)過程。
[0103]請(qǐng)參考圖7,是本發(fā)明的一種實(shí)際應(yīng)用的示意圖,其通過檢測(cè)分析同時(shí)時(shí)間段網(wǎng)絡(luò)通信鏈路報(bào)文信息內(nèi)容介紹本發(fā)明。
[0104]如圖7所示,假設(shè)現(xiàn)有基于Modbus ASCII的網(wǎng)絡(luò)中存在四個(gè)節(jié)點(diǎn)(節(jié)點(diǎn)為ModbusASCII主站或Modbus ASCII從站),其中包括一個(gè)Modbus ASCII主站和三個(gè)Modbus ASCII從站(S1,S2,S4),其中三個(gè)Modbus ASCII從站的站地址分別為1,2,4.Modbus ASCII網(wǎng)絡(luò)采用時(shí)間觸發(fā)方式,在時(shí)間段[tQ,tQ+Λ Tp]內(nèi),Modbus ASCII主站根據(jù)網(wǎng)絡(luò)任務(wù)逐次輪詢各個(gè)從站節(jié)點(diǎn)(SI,S2,S3)。
[0105]若在t=h時(shí)刻,網(wǎng)絡(luò)新加入通信從站Si,由于[tQ,tQ+ATp]時(shí)間段內(nèi)ModbusASCII主站正處于輪詢從站,所以此過程中網(wǎng)絡(luò)一直處于忙碌狀態(tài)。當(dāng)Si在時(shí)檢測(cè)到鏈路為空閑狀態(tài),馬上根據(jù)AT獲取空閑通信地址和準(zhǔn)備地址復(fù)用探測(cè)包。
[0106]然而,由于在[\,t0+ATp]時(shí)間段內(nèi),從站Si還未作任何地址復(fù)用測(cè)試,所以AT為空,則Si第一次獲取的通信站地址為I。根據(jù)本發(fā)明提供的隨機(jī)延時(shí)策略,Si設(shè)置延時(shí)時(shí)間為At3。若在此延時(shí)過程中,鏈路一直保持為空閑狀態(tài),則當(dāng)延時(shí)時(shí)間結(jié)束后馬上發(fā)送關(guān)于地址I的地址復(fù)用探測(cè)包。
[0107]顯然,由于網(wǎng)絡(luò)中通信從站SI占用了該站地址,所以當(dāng)SI接收到Si關(guān)于地址I的復(fù)用測(cè)試時(shí),將會(huì)給予應(yīng)答。然后,Si將根據(jù)該響應(yīng)把地址I加入到AT中,表明該站地址已經(jīng)被其他站使用了,然后重新獲取最小空地址。
[0108]由于地址I已經(jīng)被占用,根據(jù)網(wǎng)絡(luò)地址表,第二次獲取的最小空閑地址為2。顯然該地址也被通信從站S2占用。S2發(fā)出地址2的復(fù)用測(cè)試包后,將收到來自S2的應(yīng)答測(cè)試,然后Si同樣放棄地址2,并更新地址表AT。采用同樣的方法,Si將繼續(xù)獲取最小空閑地址3。由于網(wǎng)絡(luò)中沒有任何從站使用該地址,則如圖顯示,Si連續(xù)發(fā)送三次均沒有接受到通信地址為3的應(yīng)答,則Si將永久占用該地址。值得注意的是,在地址復(fù)用測(cè)試之間需要預(yù)留足夠多的時(shí)間給相應(yīng)站響應(yīng),如圖4中所示,At2為響應(yīng)超時(shí)時(shí)間,且有At2>At3。
[0109]請(qǐng)參考圖8,是本發(fā)明提供的從站的實(shí)施例的結(jié)構(gòu)示意圖,其包括:
[0110]臨時(shí)站地址生成模塊1,用于根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為所述臨時(shí)站地址,所述網(wǎng)絡(luò)地址表用于記錄所述從站檢測(cè)到的已被其它從站占用的站地址。
[0111]探測(cè)模塊2,用于向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用;
[0112]處理模塊3,用于當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址。其中,處理模塊3包括:隨機(jī)延時(shí)時(shí)間產(chǎn)生單元31,用于當(dāng)探測(cè)到所述通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí)時(shí)間;發(fā)送單元32,用于當(dāng)所述隨時(shí)延時(shí)時(shí)間到達(dá)時(shí),所述從站向所在Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送所述地址復(fù)用探測(cè)包。
[0113]組網(wǎng)模塊4,用于根據(jù)所述固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包;以及用于響應(yīng)所述主站收到所述組網(wǎng)請(qǐng)求包后發(fā)送的用于請(qǐng)求所述從站基本信息的請(qǐng)求報(bào)告。
[0114]本實(shí)施例,由從站向通信鏈路發(fā)送地址復(fù)用探測(cè)包探測(cè)地址復(fù)用包中的臨時(shí)站地址是否被其它從站占用,當(dāng)探測(cè)結(jié)果為未被占用時(shí),則從站占用該臨時(shí)站地址,從而解決了從站如何自動(dòng)獲取站地址的問題,從而實(shí)現(xiàn)了網(wǎng)絡(luò)設(shè)備的自動(dòng)組網(wǎng),使得在設(shè)計(jì)網(wǎng)絡(luò)系統(tǒng)過程中可實(shí)現(xiàn)任務(wù)控制與Modbus ASCII通信的分離,增強(qiáng)了網(wǎng)絡(luò)設(shè)計(jì)和管理的靈活性,同時(shí)在網(wǎng)絡(luò)設(shè)備的更替和擴(kuò)展的過程中,可實(shí)現(xiàn)設(shè)備的即插即用,無需配置靜態(tài)通信地址,增強(qiáng)了通信地址的利用率,除此之外,在單個(gè)或多個(gè)新入網(wǎng)從站自動(dòng)獲取地址過程中,ModbusASCII主站將不參與站地址指派或干預(yù),極大降低了主站的負(fù)荷。
[0115]最后說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的宗旨和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。
【權(quán)利要求】
1.一種Modbus ASCII從站自動(dòng)獲取站地址方法,其特征在于:包括: 從站向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述ModbusASCII網(wǎng)絡(luò)中其它從站占用; 當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址。
2.如權(quán)利要求1所述的ModbusASCII從站自動(dòng)獲取站地址方法,其特征在于:所述從站發(fā)送地址復(fù)用探測(cè)包之前還包括:所述從站根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為所述臨時(shí)站地址,所述網(wǎng)絡(luò)地址表用于記錄所述從站檢測(cè)到的已被其它從站占用的站地址。
3.如權(quán)利要求1所述的ModbusASCII從站自動(dòng)獲取站地址方法,其特征在于:所述從站向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,包括: 所述從站探測(cè)到所述通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí); 當(dāng)所述隨機(jī)延時(shí)到達(dá)時(shí),所述從站向所在Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送所述地址復(fù)用探測(cè)包。
4.如權(quán)利要求1所述的ModbusASCII從站自動(dòng)獲取站地址方法,其特征在于:當(dāng)所述從站至少兩次發(fā)送含同一臨時(shí)站地址的地址復(fù)用探測(cè)包均未收到檢測(cè)應(yīng)答時(shí),所述探測(cè)結(jié)果才為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用。
5.如權(quán)利要求1-4中任·一項(xiàng)所述的ModbusASCII從站自動(dòng)獲取站地址方法,其特征在于:所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址之后,還包括:當(dāng)所述從站接收到含該固定通信地址的地址復(fù)用探測(cè)包時(shí),做出檢測(cè)應(yīng)答。
6.如權(quán)利要求1-4中任一項(xiàng)所述的ModbusASCII從站自動(dòng)獲取站地址方法,其特征在于:所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址之后,還包括: 所述從站根據(jù)所述固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包; 所述從站響應(yīng)所述主站收到所述組網(wǎng)請(qǐng)求包后發(fā)送的用于請(qǐng)求所述從站基本信息的請(qǐng)求報(bào)告。
7.一種用于Modbus ASCII中自動(dòng)獲取站地址的從站,其特征在于:包括: 探測(cè)模塊,用于向所在的Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送地址復(fù)用探測(cè)包,所述地址復(fù)用探測(cè)包包含臨時(shí)站地址,所述地址復(fù)用探測(cè)包用于探測(cè)所述臨時(shí)站地址是否已被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用; 處理模塊,用于當(dāng)探測(cè)結(jié)果為所述臨時(shí)站地址未被所述Modbus ASCII網(wǎng)絡(luò)中其它從站占用時(shí),所述從站占用該臨時(shí)站地址作為所述從站的固定通信地址。
8.如權(quán)利要求7所述的從站,其特征在于:還包括: 臨時(shí)站地址生成模塊,用于根據(jù)網(wǎng)絡(luò)地址表生成地址值最小的空閑地址作為所述臨時(shí)站地址,所述網(wǎng)絡(luò)地址表用于記錄所述從站檢測(cè)到的已被其它從站占用的站地址。
9.如權(quán)利要求7所述的從站,其特征在于:所述探測(cè)模塊,包括: 隨機(jī)延時(shí)時(shí)間產(chǎn)生單元,用于當(dāng)探測(cè)到所述通信鏈路空閑時(shí),產(chǎn)生一隨機(jī)延時(shí)時(shí)間; 發(fā)送單元,用于當(dāng)所述隨時(shí)延時(shí)時(shí)間到達(dá)時(shí),所述從站向所在Modbus ASCII網(wǎng)絡(luò)的通信鏈路發(fā)送所述地址復(fù)用探測(cè)包。
10.如權(quán)利要求7-9中任一項(xiàng)所述的從站,其特征在于:還包括: 組網(wǎng)模塊,用于根據(jù)所述固定通信地址,向主站發(fā)送組網(wǎng)請(qǐng)求包;以及用于響應(yīng)所述主站收到所述組網(wǎng)請(qǐng) 求包后發(fā)送的用于請(qǐng)求所述從站基本信息的請(qǐng)求報(bào)告。
【文檔編號(hào)】H04L29/12GK103716420SQ201410003551
【公開日】2014年4月9日 申請(qǐng)日期:2014年1月3日 優(yōu)先權(quán)日:2014年1月3日
【發(fā)明者】趙亦欣, 吳小軍, 劉靜, 彭正福, 楊智, 蘇曉貝 申請(qǐng)人:西南大學(xué)