本發(fā)明涉及工業(yè)自動化領(lǐng)域,尤指一種Modbus協(xié)議遙控返信讀取的方法和裝置。
背景技術(shù):
Modbus協(xié)議是工業(yè)自動化領(lǐng)域廣泛應用的平衡型應答通信協(xié)議,已經(jīng)成為通用工業(yè)標準。Modbus協(xié)議支持傳統(tǒng)的串口(RS-232、RS-422、RS-485)和以太網(wǎng)設備。Modbus通信使用主(Master,也稱主站)—從(Slave,也稱從站)技術(shù),即在同一時刻,僅一個主站設備能初始化傳輸(查詢,也叫請求,依次查詢稱為輪詢),從站設備根據(jù)主站設備查詢提供的數(shù)據(jù)作出相應反應。主站設備可單獨和從站設備通信,也能以廣播方式和所有從站設備通信。如果單獨通信,從站設備返回一消息作為回應,如果主站設備是以廣播方式查詢的,則從站設備不作任何回應。
如圖1所示,主站設備在準備新一次的請求時,一開始會優(yōu)先檢查是否有遙控命令需要發(fā)送,如果有,則獲得遙控信息并生成遙控報文,發(fā)送遙控報文并隨后啟動接收超時定時器,如果在超時時間內(nèi)成功收到從站設備應答,則表明此次遙控發(fā)送成功了,但這只能說明從站設備成功接收到了命令,是否成功還需要隨后主站設備通過發(fā)送請求所讀取到的真正遙控返信點才能看出。因為,遙控處理通常為異步應答,即從站設備收到遙控命令后,并檢查當前是否滿足執(zhí)行遙控所需條件,然后會先給主站設備發(fā)送相應的應答,隨后才會執(zhí)行遙控,如果遙控成功了,會將相應的遙控返信點的信息更新至從站數(shù)據(jù)區(qū)中供主站設備輪詢更新,只有當主站設備輪詢到該信息時,主站設備方能知悉遙控真正成功了,存在讀取的遙控返信延遲時間長、獲得返信時刻的時間波動范圍大的問題。
技術(shù)實現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明提供了一種Modbus協(xié)議遙控返信的方法,能夠縮短讀取遙控返信的延遲時間、減小返信時刻的時間波動范圍,實現(xiàn)遙控返信的讀取時間與設備數(shù)量無關(guān),與輪詢表大小無關(guān)。
為了達到本發(fā)明目的,本發(fā)明提供了一種Modbus協(xié)議遙控返信讀取的方法,包括:
主站設備向從站設備發(fā)送遙控命令;
到達所述遙控命令對應的返信讀取延遲時間時,所述主站設備向所述從站設備發(fā)送遙控返信請求,以獲取所述從站設備的遙控返信。
為了達到本發(fā)明目的,本發(fā)明還提供了一種Modbus協(xié)議遙控返信讀取的裝置,應用于主站設備,包括:
第一發(fā)送模塊,用于向從站設備發(fā)送遙控命令;
第二發(fā)送模塊,用于到達所述遙控命令對應的返信讀取延遲時間時,所述主站設備向所述從站設備發(fā)送遙控返信請求,以獲取所述從站設備的遙控返信。
與現(xiàn)有技術(shù)相比,本發(fā)明實施例包括:主站設備向從站設備發(fā)送遙控命令并開始計時;到達所述遙控命令對應的返信讀取延遲時間時,所述主站設備向所述從站設備發(fā)送遙控返信請求,以獲取所述從站設備的遙控返信。本發(fā)明實施例針對使用現(xiàn)有技術(shù)的遙控方法出現(xiàn)的設備數(shù)量越多、輪詢表越大,讀取返信的延遲時間越長的缺點,進行了優(yōu)化,遙控返信的讀取時間與設備數(shù)量完全無關(guān),與輪詢表大小完全無關(guān),實現(xiàn)延時少、波動小的快速穩(wěn)定的遙控返信,進而提升自動化水平。
進一步地,通過配置每個遙控命令對應的返信讀取延遲時間,可以根據(jù)設備實際情況對每個遙控命令對應的返信讀取延遲進行精準配置,提高了遙控返信的讀取效率。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖說明
附圖用來提供對本發(fā)明技術(shù)方案的進一步理解,并且構(gòu)成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術(shù)方案,并不構(gòu)成對本發(fā)明技術(shù)方案的限制。
圖1為現(xiàn)有含遙控的輪詢流程圖;
圖2為Modbus輪詢表示意圖;
圖3為本發(fā)明實施例的Modbus協(xié)議遙控返信讀取的方法流程圖;
圖4為本發(fā)明應用示例的含遙控的輪詢流程圖;
圖5為本發(fā)明實施例的Modbus協(xié)議遙控返信讀取的裝置示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,下文中將結(jié)合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
在本文中,遙控返信,含義為自動化系統(tǒng)遙控操作(執(zhí)行分/合等)變位信號返送,即從站設備的遙控結(jié)果反饋信息;遙控返信點,指從站設備對執(zhí)行遙控命令的結(jié)果所需反饋信息的邏輯單位(例如,分/合狀態(tài))。當從站設備接收到主站設備的遙控命令,執(zhí)行該遙控命令后,將遙控返信點的信息更新至從站數(shù)據(jù)區(qū),從站設備接收到主站設備發(fā)送遙控返信請求時,查詢數(shù)據(jù)區(qū)數(shù)據(jù),向主站設備返回應答消息,該應答消息中攜帶遙控返信。
在現(xiàn)有技術(shù)中,遙控返信點就涵蓋在輪詢表(如圖3所示,記輪詢表中請求總數(shù)為N)中,這個包含了遙控返信點的請求(以下簡稱這個請求為Rx)通常就是一個普通的請求,和其他請求是一個優(yōu)先級,都得排隊等待輪詢。換言之,發(fā)送遙控命令后,主站設備仍然會按照之前的輪詢次序依次從輪詢表中獲得下一次需要發(fā)送的請求。所以,主站在發(fā)送遙控命令后一直到從主站獲得遙控返信的間隔時間(記為Ts)的波動范圍是Ts最小~Ts最大,其中,
Ts最小=設備遙控成功的時間(以下記為Tx)+遙控返信請求發(fā)出后直到收到應答所經(jīng)歷的時間(以下記為Tr);其中,Tx的含義為主站設備發(fā)送遙控后一直到從站設備給設備數(shù)據(jù)區(qū)中的遙控返信點置值成功所經(jīng)歷的時間;
Ts最大=Tx+(N×請求間隔)+Tr;
其中,一個TCP局域網(wǎng)的典型Tr時間為10毫秒,因此,Tr可以忽略不計,所以,Ts最小≈Tx,Ts最大≈Tx+(N×請求間隔)。
Ts的期望值是:Tx+(N×請求間隔/2)。
以串口Modbus RTU(RemoteTerminalUnit,遠程終端單元)通信為例,一個典型的接入例子:一個串口接入10臺從站設備,每個從站設備有6個請求,請求間隔時間為100毫秒,那么請求總數(shù)為N=10×6=60,(N×請求間隔/2)=60×100/2毫秒=3秒,即Ts期望值是Tx+3秒,最壞需要Tx+6秒,波動范圍是Tx~Tx+6秒。
工業(yè)自動化領(lǐng)域,衡量自動化水平高低的一個重要指標就是遙控反饋性能,顯然以上的遙控反饋指標Ts有點慢了,而且反饋的快慢還需憑運氣(波動范圍大),不能確定地事先預測。而且,設備數(shù)量越多、輪詢表越大,讀取的返信延遲越長、獲得返信時刻的波動范圍越大。
本發(fā)明實施例針對使用現(xiàn)有技術(shù)的遙控方法出現(xiàn)的設備數(shù)量越多、輪詢表越大,Ts的延遲越長、獲得返信時刻的波動范圍越大的缺點,進行了針對性的優(yōu)化。
如圖3所示,本發(fā)明實施例的Modbus協(xié)議遙控返信讀取的方法,包括:
步驟101,主站設備向從站設備發(fā)送遙控命令;
步驟102,到達所述遙控命令對應的返信讀取延遲時間時,所述主站設備向所述從站設備發(fā)送遙控返信請求,以獲取所述從站設備的遙控返信。
其中,步驟101之后,如果該從站設備向主站設備發(fā)送應答消息則該遙控命令發(fā)送成功;如果主站設備超時未接收到所述從站設備的應答消息則該遙控命令發(fā)送失敗。
可以從遙控命令發(fā)送時開始計時,也可以在該遙控命令發(fā)送成功時(主站設備接收到應答消息)開始計時。
其中,通常采用主站設備向從站設備發(fā)送遙控命令并開始計時的方式,當采用這種方式時,若所述遙控命令發(fā)送失敗,則所述主站設備重新發(fā)送所述遙控命令并重新開始計時。
可以預先配置每個遙控命令對應的返信讀取延遲時間,所述返信讀取延遲時間與每個遙控命令對應的從設備執(zhí)行動作時長相關(guān)。
步驟102執(zhí)行之后,所述主站設備接收所述從站設備發(fā)送的遙控返信應答消息,所述遙控返信應答消息中攜帶遙控返信。
若所述遙控返信請求發(fā)送失敗,則重新發(fā)送所述遙控返信請求。如果主站設備超時未接收到所述從站設備的遙控返信應答消息,則該遙控返信請求發(fā)送失敗。
如圖4所示,為本發(fā)明應用示例的含遙控的輪詢流程圖,包括:
步驟201,判斷是否有遙控命令需要發(fā)送,若有,則執(zhí)行步驟202,若沒有,則執(zhí)行步驟203;
其中,遙控命令是高優(yōu)先級命令,所以先判斷是否有遙控命令需要發(fā)送;
步驟202,獲得遙控信息,執(zhí)行步驟204;
步驟203,從輪詢表中依次讀取一條請求;
步驟204,生成報文;
步驟205,發(fā)送報文并啟動超時定時器;
此步驟中,若發(fā)送的報文是遙控命令,還啟動遙控返信計時器;
步驟206,判斷報文是否成功接收,如果超時定時器時間到還未接收到從站設備的應答,則表示未成功接收,執(zhí)行步驟207,若成功接收從站設備的應答,則執(zhí)行步驟208;
步驟207,執(zhí)行超時處理,根據(jù)執(zhí)行策略,可能是重新發(fā)送報文,或者不再重新發(fā)送,執(zhí)行步驟209;
步驟208,處理接收到的數(shù)據(jù);
步驟209,準備下一次發(fā)送;
步驟210,判斷是否有遙控返信請求需要發(fā)送,若有,則執(zhí)行步驟211,若沒有,則執(zhí)行步驟212;
其中,遙控返信計時器時間到,表示有遙控返信請求需要發(fā)送;而且遙控返信請求是高優(yōu)先級命令,所以在輪詢表中的請求發(fā)送之前,先發(fā)送遙控返信請求;
步驟211,獲得遙控返信信息,執(zhí)行步驟213;
步驟212,從輪詢表中依次讀取一條請求;
步驟213,生成報文;
步驟214,發(fā)送報文并啟動超時定時器;
步驟215,判斷報文是否成功接收,如果超時定時器時間到還未接收到從站設備的應答,則表示未成功接收,執(zhí)行步驟216,若成功接收從站設備的應答,則執(zhí)行步驟217;
步驟216,執(zhí)行超時處理,根據(jù)執(zhí)行策略,可能是重新發(fā)送報文,或者不再重新發(fā)送,執(zhí)行步驟218;
步驟217,處理接收到的數(shù)據(jù);
步驟218,準備下一次發(fā)送。
需要說明的是,上述流程圖為了表示先發(fā)送遙控命令,后發(fā)送遙控返信請求,所以分為兩部分(步驟201~209和步驟210~218)進行表示;在實際應用中,步驟201~209和步驟210~218可以合并,即每次流程執(zhí)行時,可以先執(zhí)行判斷是否有遙控返信應答消息需要發(fā)送,如果有,則獲得遙控返信信息,如果沒有,則判斷是否有遙控命令需要發(fā)送,如果有,則獲得遙控信息,如果沒有,則從輪詢表中獲取一條請求,之后執(zhí)行步驟204~209;或者,每次流程執(zhí)行時,可以先執(zhí)行判斷是否有遙控命令需要發(fā)送,如果有,則獲得遙控信息,如果沒有,則判斷是否有遙控返信請求需要發(fā)送,如果有,則獲得遙控返信信息,如果沒有,則從輪詢表中獲取一條請求,之后執(zhí)行步驟204~209。另外,每次發(fā)送遙控命令時,啟動遙控返信計時器。如果遙控命令沒有成功接收,則重新發(fā)送該遙控命令,并重啟遙控返信計時器。如果遙控返信請求沒有成功接收,則重新發(fā)送該遙控返信請求。遙控命令和遙控返信請求均可以設置最大重發(fā)次數(shù),若重發(fā)次數(shù)等于最大重發(fā)次數(shù),則可能出現(xiàn)故障,不再重發(fā),可以提示告警等信息。
在本發(fā)明實施例中,所述遙控返信請求,既可以由主站設備的驅(qū)動自動發(fā)送,也可以由上位機(如人機界面)通過組態(tài)人為或者自動發(fā)送。
在本發(fā)明實施例中,可以對每個遙控命令的返信讀取延遲時間進行精準配置,配置時可以略大于Tx(設備遙控成功的時間)。其中,Tx與從站設備的動作特性相關(guān),比如,一個開關(guān)的合動作可能需要100毫秒即可完成,而一個開關(guān)的分動作則可能需要500毫秒,雖然每個遙控命令的返信讀取延遲時間可能有所不同,但是這些值是可以事先測定的,并且這些值不會隨著運行而會產(chǎn)生大的改變,即完全可以事先測定并且依據(jù)各個遙控返信測試值進行每個遙控所對應返信請求的延遲時間配置。即:可以設置返信讀取延遲時間為遙控命令對應的從設備執(zhí)行動作時長加上預設時長,該預設時長可以是一個固定的較短時間,如100毫秒。
仍以上面例子為例:一個串口接入10臺從站設備,每個從站設備有6個請求,請求間隔時間為100毫秒(記為T1),假設T0=200毫秒,那么請求總數(shù)為N=10×6=60。
使用現(xiàn)有技術(shù)的遙控返信流程時:(N×請求間隔/2)=60×100/2毫秒=3秒,Ts期望值是3秒+T0=3.2秒,最壞需要Ta+6=6.2秒,Ts的波動范圍高達200~6200毫秒!
使用本發(fā)明實施例的技術(shù)時,假設某遙控配置了對應的返信請求,并且配置的返信讀取延遲時間為300毫秒(記為T0a,大于Tx),Ts的范圍大幅縮小為T0a~(T0a+T1)毫秒=300~400毫秒。
舉例來說,假如地鐵的一條線路有46個站,每天需要順序上電和順序斷電,以順序斷電為例,采用現(xiàn)有技術(shù)方法完成46個站點斷電大約需要6分鐘,而采用本發(fā)明實施例的方法,則大約只需要30秒,極大提高了斷電效率,節(jié)省了斷電時間。
從上描述可知,本發(fā)明實施例的方法實現(xiàn)了Ts與設備數(shù)量完全無關(guān),與輪詢表大小完全無關(guān),不僅有效縮短了Ts,而且可以使Ts的實際波動范圍達到最優(yōu)。在串行總線下,當接入的設備越多、輪詢表越大,越是凸顯本發(fā)明的先進性。
如圖5所示,為本發(fā)明實施例的Modbus協(xié)議遙控返信讀取的裝置示意圖,該裝置應用于主站設備,包括:
第一發(fā)送模塊31,用于向從站設備發(fā)送遙控命令;
第二發(fā)送模塊32,用于到達所述遙控命令對應的返信讀取延遲時間時,向所述從站設備發(fā)送遙控返信請求,以獲取所述從站設備的遙控返信。
可選地,該裝置還包括:
配置模塊33,用于預先配置每個遙控命令對應的返信讀取延遲時間,所述返信讀取延遲時間與每個遙控命令對應的從設備執(zhí)行動作時長相關(guān)。
所述返信讀取延遲時間為遙控命令對應的從設備執(zhí)行動作時長加上預設時長。
可選地,所述第一發(fā)送模塊31,進一步用于向從站設備發(fā)送遙控命令并開始計時;若所述遙控命令發(fā)送失敗,則重新發(fā)送所述遙控命令并重新開始計時。
可選地,所述第二發(fā)送模塊32,進一步用于若所述遙控返信請求發(fā)送失敗,則重新發(fā)送所述遙控返信請求。
綜上所述,本發(fā)明實施例中,發(fā)送遙控命令后返信請求的發(fā)送,不僅包含在常規(guī)的輪詢表中,還可以關(guān)聯(lián)具體的遙控,這樣,一旦遙控操作時,即可觸發(fā)遙控返信快速讀取流程(本專利),從而實現(xiàn)無延時、無波動的快速穩(wěn)定的遙控返信,進而提升自動化水平。
雖然本發(fā)明所揭露的實施方式如上,但所述的內(nèi)容僅為便于理解本發(fā)明而采用的實施方式,并非用以限定本發(fā)明。任何本發(fā)明所屬領(lǐng)域內(nèi)的技術(shù)人員,在不脫離本發(fā)明所揭露的精神和范圍的前提下,可以在實施的形式及細節(jié)上進行任何的修改與變化,但本發(fā)明的專利保護范圍,仍須以所附的權(quán)利要求書所界定的范圍為準。