[發明專利]提高PLC控制器與上位機通訊傳輸和數據處理效率的方法有效
| 申請號: | 202010466104.7 | 申請日: | 2020-05-28 |
| 公開(公告)號: | CN111722581B | 公開(公告)日: | 2021-10-22 |
| 發明(設計)人: | 李鋼;鄭作鏗;曲小平;郝明明;張偉峰 | 申請(專利權)人: | 國電南瑞科技股份有限公司 |
| 主分類號: | G05B19/05 | 分類號: | G05B19/05;G06F9/54 |
| 代理公司: | 南京蘇高專利商標事務所(普通合伙) 32204 | 代理人: | 張弛 |
| 地址: | 211106 江*** | 國省代碼: | 江蘇;32 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 提高 plc 控制器 上位 通訊 傳輸 數據處理 效率 方法 | ||
1.一種提高PLC控制器與上位機通訊傳輸和數據處理效率的方法,其特征在于,
將PLC總體分為兩類,分別為PLC控制器和遠程IO模塊;
遠程IO模塊帶有模擬量和數字量的輸入和輸出功能,用于測量和控制,遠程IO模塊還帶有與子系統PLC進行通訊功能;
PLC控制器帶有通訊功能和數據處理功能;
PLC控制器的通訊功能,用于完成各種通訊任務,包括與上位機通訊和與下位機通訊,與下位機通訊包括與遠程IO模塊通訊、與子系統PLC通訊、與子系統通訊模塊通訊,這些通訊任務不受PLC控制器的用戶程序控制,PLC通訊配置完成后,自主通訊,通訊的數據存取在PLC控制器中供通訊用的寄存器中;
PLC控制器的數據處理功能,由用戶程序控制,對通訊功能讀取到供通訊用的寄存器中的數據,進行邏輯判斷,作出決策,再寫入供通訊用的寄存器中,由PLC控制器的通訊功能進行通訊,以達到控制的目的;
前述PLC控制器的供通訊用的寄存器,按照與通訊對側設備約定的點表進行填寫,通訊對側設備包括上位機和下位機,下位機包括遠程IO模塊、子系統PLC、子系統通訊模塊;
前述PLC控制器與上位機進行通訊,數據存儲在若干個通訊數據包中,數據包長度受限于與上位機通訊的報文長度的限制,通訊數據包分為三類,分別為數字量數據包、表示數字的模擬量數據包、純模擬量數據包,數字量數據包放入數字量,表示數字的模擬量數據包放入表示數字的模擬量,純模擬量數據包放入純模擬量數據;每個通訊數據包的表示為數字量、表示數字的模擬量、純模擬量三種數據包中的一種的設置變量保存在PLC控制器中和上位機中;
前述數字量,是指外部觸點的開關量,有接通和斷開兩種狀態,分別以0和1表示;
前述表示數字的模擬量,是指用于計數的數據,表現為模擬量,但當作數字量進行處理;
前述純模擬量,是指測量的電壓、電流、溫度、濕度會波動的數值;
前述數字量和表示數字的模擬量,合稱為非純模擬量;
前述通訊數據包由若干個數據寄存器組成,稱為通訊寄存器;
每個通訊數據包包括多個遠程IO模塊的輸入數據、或者包括多個子系統的輸入數據;
PLC控制器與上位機通訊的第一個通訊數據包,作為特殊數據包,依據數據包的總量,占用若干個數據寄存器作為狀態寄存器,用于與上位機傳遞信息;
PLC控制器與上位機通訊的第一個通訊數據包以外的通訊數據包,稱為后續數據包:
前述狀態寄存器的各個位用于表示每個后續數據包的“PLC控制器數據包有變化數據標志位”、“PLC控制器正在存儲數據包標志位”、“上位機正在讀取數據包標志位”、“上位機數據包讀取完成標志位”;
“PLC控制器數據包有變化數據標志位”的定義:為“1”分別對應表示其對應的PLC控制器存儲的數據包中至少有一個數據發生變化;為“0”分別對應表示其對應的PLC控制器存儲的數據包中沒有一個數據發生變化;
“PLC控制器正在存儲數據包標志位”的定義:為“1”分別對應表示其對應的數據包PLC控制器正在存儲;為“0”分別對應表示其對應的數據包PLC控制器未在存儲;
“上位機正在讀取數據包標志位”的定義:為“1”分別對應表示其對應的數據包上位機正在讀取;為“0”分別對應表示其對應的數據包上位機未正在讀??;
“上位機數據包讀取完成標志位”的定義:為“1”分別對應表示其對應的數據包上位機讀取完成;為“0”分別對應表示其對應的數據包上位機還未讀取;
在PLC控制器中開辟存儲空間,用于存放后續數據包的暫存數據包,暫存數據包內部的數據寄存器稱為暫存寄存器,暫存數據包中的每個暫存寄存器與前述用于與上位機通訊的通訊數據包中對應的通訊寄存器的定義完全一致,與暫存數據包對應的前述用于與上位機通訊的數據包稱為對應的數據包;與暫存寄存器對應的前述用于與上位機通訊的數據包中的寄存器稱為對應的數據寄存器;
PLC控制器初始化時,依次進行如下操作:所有后續數據包“上位機正在讀取數據包標志位”置“0”,把所有后續數據包“PLC控制器正在存儲數據包標志位”置“1”;把每個數據包對應的通訊獲得的下位機的存儲在寄存器中的數據,復制到每個數據包對應的數據寄存器中;所有后續數據包“PLC控制器數據包有變化數據標志位”置“1”;所有后續數據包“PLC控制器正在存儲數據包標志位”置“0”;
PLC控制器開始正常處理流程時,先把第一個數據包對應的存儲在寄存器中的通訊獲得的下位機的存儲在寄存器中的數據,復制到第一個數據包對應的數據寄存器中;再把后續數據包對應的存儲在寄存器中的通訊獲得的下位機的數據,復制到后續數據包對應的暫存數據包對應的數據寄存器中;
“PLC控制器當前數據包處理編號”變量置“2”,此“PLC控制器當前數據包處理編號”變量設置在PLC控制器中,用于表示PLC控制器程序當前正在處理的數據包的編號;
下面進入后續數據包的處理流程:“PLC控制器當前數據包寄存器處理編號”變量置“1”,此“PLC控制器當前數據包寄存器處理編號”變量設置在PLC控制器中,用于表示PLC控制器程序當前正在處理的數據包中的寄存器的編號;
PLC控制器依次對于后續數據包,分別按照純模擬量數據包和非純模擬量數據包分別逐個進行暫存數據包與對應的數據包有無變化數據的比較和處理;
當發現當前數據包有寄存器存在變化數據后,如果當前數據包“上位機正在讀取數據包標志位”為“0”,并且“上位機數據包讀取完成標志位”為“1”,則當前數據包“PLC控制器正在存儲數據包標志位”置“1”,當前數據包“PLC控制器數據包有變化數據標志位”置“1”,當前數據包“上位機數據包讀取完成標志位”置“0”,此數據包后續的數據不再比較,把當前暫存數據包中的所有數據,復制到當前數據包對應的數據寄存器,完成復制操作后,把當前數據包“PLC控制器正在存儲數據包標志位”置“0”,把“PLC控制器當前數據包處理編號”加1,進入下一個循環,直到比較完成所有后續數據包的數據;如果前述當前數據包“上位機正在讀取數據包標志位”為“1”,或者“上位機數據包讀取完成標志位”為“0”,則放棄前述標志位設置和復制操作,也把“PLC控制器當前數據包處理編號”加1,進入下一個循環,直到比較完成所有后續數據包的數據;
當比較完成當前數據包,沒有發現有變化的數據后,如果當前數據包“上位機正在讀取數據包標志位”為“0”,并且當前數據包“上位機數據包讀取完成標志位”為“1”,則把當前數據包“PLC控制器正在存儲數據包標志位”置“1”,當前數據包“PLC控制器數據包有變化數據標志位”置“0”,當前數據包“上位機數據包讀取完成標志位”置“0”;對于純模擬量數據包,把當前暫存數據包中的所有數據復制到當前數據包對應的數據寄存器,對于非純模擬量數據包,不進行此復制操作;再把當前數據包“PLC控制器正在存儲數據包標志位”置“0”,把“PLC控制器當前數據包處理編號”加1,進入下一個循環,直到比較完成所有后續數據包的數據;
前述對數據寄存器逐個比較,判斷是否有變化,包括對純模擬量數據包和非純模擬量數據包的比較;
前述對非純模擬量的比較,即對數字量或者表示數字的模擬量的比較是指,把暫存寄存器與對應的寄存器逐一比較,當不一致時,則認為當前的暫存寄存器是變化數據;
前述對純模擬量的比較是指,在PLC控制器中配置對應于純模擬量的變量,用于設置各個純模擬量對應的變化閾值和幅值閾值,對純模擬量的暫存寄存器的數值與對應的幅值閾值逐一進行比較,當超過幅值閾值,則認為當前的暫存寄存器是變化數據;對純模擬量的暫存寄存器的數值與對應的寄存器數值逐一進行相減比較,當超過變化閾值,則認為當前的暫存寄存器是變化數據;
前述數據包“PLC控制器數據包有變化數據標志位”置“0”,意味著數據包沒有變化數據,對于數字量數據包或者表示數字的模擬量數據包而言,是每個暫存寄存器與對應的寄存器數值相同,即沒有變化;對于純模擬量數據包而言,是每個暫存寄存器數值沒有超過設定的變化閾值和幅值閾值;
在上位機中,設置“上位機有變化數據包標志”變量,變量為“1”表示在上位機一輪數據包的處理中,存在“PLC控制器正在存儲數據包標志位”為“0”,并且“PLC控制器數據包有變化數據標志位”為“1”的后續數據包,即上位機有需要處理的存在變化數據的后續數據包;
在上位機中,設置各個后續數據包“上位機記錄數據包讀取有變化位”變量,變量為“1”表示此后續數據包有變化數據,用于標記有變化數據的后續數據包,用于上位機對有變化的數據包進行后續處理;當上位機處理完成此有變化的數據包后,把此數據包“上位機記錄數據包讀取有變化位”變量置“0”;
前述一輪指上位機依次處理一遍所有數據包;
在上位機中,設置“上位機當前數據包處理編號”變量,用于記錄當前上位機處理的數據包的編號;
上位機初始化時,把“循環讀取一個數據包編號”變量置“2”;
上位機開始新的一輪處理數據時,先無條件讀取第一個數據包數據,以便根據第一個數據包中的狀態寄存器,依次對后續數據包分別進行處理操作;再把“上位機有變化數據包標志”置“0”、把所有后續數據包“上位機記錄數據包讀取有變化位”置“0”、“上位機當前數據包處理編號”置“2”;
上位機對于“PLC控制器正在存儲數據包標志位”為“1”的后續數據包,不作處理,“上位機當前數據包處理編號”加1,去處理下一個數據包;
上位機對于“PLC控制器正在存儲數據包標志位”為“0”并且“PLC控制器數據包有變化數據標志位”為“0”的后續數據包,把當前數據包“上位機正在讀取數據包標志位”置“1”,當前數據包“上位機數據包讀取完成標志位”置“1”,當前數據包“上位機正在讀取數據包標志位”置“0”,“上位機當前數據包處理編號”加1,去處理下一個數據包;
上位機對于“PLC控制器正在存儲數據包標志位”為“0”并且“PLC控制器數據包有變化數據標志位”為“1”的后續數據包,依次進行如下操作:當前數據包“上位機正在讀取數據包標志位”置“1”,讀取當前數據包所有數據,當前數據包“上位機數據包讀取完成標志位”置“1”,當前數據包“上位機正在讀取數據包標志位”置“0”,“上位機有變化數據包標志”置“1”,當前數據包“上位機記錄數據包讀取有變化位”置“1”,“上位機當前數據包處理編號”加1,再去處理下一個數據包;
上位機完成了所有后續數據包中的上述三種數據包的讀取處理后,當“上位機有變化數據包標志”為“1”時,進入下一輪處理數據包的循環;當“上位機有變化數據包標志”為“0”時,進行循環讀取一個數據包;
前述循環讀取一個數據包,步驟依次如下:把“循環讀取一個數據包一輪計數”置“2”,把“循環讀取一個數據包編號”變量的數值賦給“上位機當前數據包處理編號”變量;
當當前數據包“PLC控制器數據包有變化數據標志位”為“0”并且“PLC控制器正在存儲數據包標志位”為“0”時,依次進行如下操作:把當前數據包“上位機正在讀取數據包標志位”置“1”,讀取當前數據包所有數據,當前數據包“上位機數據包讀取完成標志位”置“1”,當前數據包“上位機正在讀取數據包標志位”置“0”,“循環讀取一個數據包編號”加1,當“循環讀取一個數據包編號”大于數據包數量時,“循環讀取一個數據包編號”置“2”,進入下一輪處理數據包的循環;當“循環讀取一個數據包編號”不大于數據包數量時,進入下一輪處理數據包的循環;當當前數據包“PLC控制器數據包有變化數據標志位”為“1”或者“PLC控制器正在存儲數據包標志位”為“1”時,依次進行如下操作:“上位機當前數據包處理編號”加1,當“上位機當前數據包處理編號”大于數據包數量時,把“上位機當前數據包處理編號”置“2”,把“循環讀取一個數據包一輪計數”加1;當“上位機當前數據包處理編號”不大于數據包數量時,把“循環讀取一個數據包一輪計數”加1;當“循環讀取一個數據包一輪計數”不大于數據包數量時,對下一個數據包進行處理,直到“循環讀取一個數據包一輪計數”大于數據包數量時,結束此次循環,進入下一輪處理數據包的循環;
前述在上位機中設置“循環讀取一個數據包編號”變量,用于當上位機在處理完一輪數據包后,沒有讀到變化數據包時,則在每一輪中依次讀取一個沒有變化數據的數據包;前述循環讀取,是指依次讀取;
前述“循環讀取一個數據包一輪計數”變量,在上位機中設置,用于保證循環讀取所有后續數據包中的一個數據包。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于國電南瑞科技股份有限公司,未經國電南瑞科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010466104.7/1.html,轉載請聲明來源鉆瓜專利網。





