何曉東 杜紅濤 黃嘉明
技術(shù)應(yīng)用
面向精細(xì)化工流程控制的通信技術(shù)
何曉東1杜紅濤1黃嘉明2
(1.珠海市長陸工業(yè)自動控制系統(tǒng)股份有限公司,廣東 珠海 5190902.暨南大學(xué)理工學(xué)院,廣東 廣州 510632)
網(wǎng)絡(luò)實(shí)時通信是精細(xì)化工流程控制的重要基礎(chǔ)環(huán)節(jié)。以某生產(chǎn)車間精細(xì)化工流程控制系統(tǒng)為背景,根據(jù)生產(chǎn)需求,設(shè)計(jì)PC端與PLC的通信架構(gòu),并優(yōu)化報(bào)文收發(fā)機(jī)制,使PLC的數(shù)據(jù)可根據(jù)系統(tǒng)的設(shè)定進(jìn)行頻率有差異地讀取,進(jìn)而提高通信效率和生產(chǎn)效率。該方法對中小精細(xì)化工企業(yè)流程控制具有較好的借鑒意義。
流程控制;實(shí)時通信;報(bào)文收發(fā)機(jī)制
根據(jù)某生產(chǎn)車間精細(xì)化工流程控制系統(tǒng)的生產(chǎn)要求,需在PC端實(shí)時查看生產(chǎn)情況與下單操作。PC端通過實(shí)時通信反復(fù)輪詢讀取PLC的現(xiàn)場數(shù)據(jù),解析后放置于PC端的共享內(nèi)存中待用。這對PC端與PLC之間的通信效率與通信質(zhì)量提出較高要求,然而數(shù)據(jù)的實(shí)時性有一定差異。PC端向PLC讀取數(shù)據(jù)時,應(yīng)根據(jù)數(shù)據(jù)實(shí)時性差異有規(guī)律地讀取,從而提高通信效率。
精細(xì)化工流程控制系統(tǒng)從下到上分為現(xiàn)場層、控制層和中心管理層3個層級,包括的主要硬件如表1所示。
現(xiàn)場層主要包括各種傳感器、執(zhí)行機(jī)構(gòu)等設(shè)備,負(fù)責(zé)工業(yè)現(xiàn)場數(shù)據(jù)采集和執(zhí)行各種控制命令。
控制層包括S7-1500系列CPU控制器,負(fù)責(zé)對采集的數(shù)據(jù)進(jìn)行處理并輸出控制信號。
中心管理層包括生產(chǎn)線監(jiān)控系統(tǒng)、配方管理系統(tǒng)與生產(chǎn)排單系統(tǒng)等??刂茖优c中心管理層采用工業(yè)以太網(wǎng)的方式通信。
精細(xì)化工流程控制系統(tǒng)的PLC采用S7-1500。首先,通過數(shù)據(jù)采集模塊把現(xiàn)場數(shù)據(jù)采集到PLC的數(shù)據(jù)塊,并把數(shù)據(jù)類型和讀寫頻率等級相同的數(shù)據(jù)放在相同地址塊的連續(xù)區(qū)域,以便虛設(shè)備批量讀取數(shù)據(jù)和設(shè)置掃描級別來提高通信速率[1-2]。其中,虛設(shè)備定義為記錄PLC數(shù)據(jù)塊中連續(xù)并小于1000個字節(jié)的數(shù)據(jù)地址信息與設(shè)備信息的虛擬設(shè)備[3]。
流程控制系統(tǒng)的通信架構(gòu)圖如圖1所示。首先,初始化虛設(shè)備與虛設(shè)備隊(duì)列,并將虛設(shè)備置于虛設(shè)備隊(duì)列中,虛設(shè)備隊(duì)列用于輪詢讀取虛設(shè)備中的數(shù)據(jù);其次,初始化寫指令隊(duì)列,寫指令隊(duì)列用于存放需進(jìn)行寫操作的指令;再次,根據(jù)讀寫報(bào)文添加機(jī)制(輪詢各虛設(shè)備并按其掃描級別)調(diào)用發(fā)送與解析包生成讀寫報(bào)文,并分別將對應(yīng)的讀寫報(bào)文添加到讀寫報(bào)文隊(duì)列,從而保證讀取現(xiàn)場數(shù)據(jù)時,實(shí)時性要求高的數(shù)據(jù)讀取頻率也高;最后,通道線程查看寫報(bào)文隊(duì)列是否存在寫報(bào)文,若存在,則把寫報(bào)文發(fā)送到指定設(shè)備并讀回結(jié)果報(bào)文,再調(diào)用發(fā)送與解析包解析是否寫操作成功;若寫報(bào)文隊(duì)列為空,則把讀報(bào)文隊(duì)列中的讀報(bào)文依次發(fā)送到指定設(shè)備并讀回結(jié)果報(bào)文,再調(diào)用發(fā)送與解析包把相應(yīng)的數(shù)據(jù)解析到共享內(nèi)存中待用。
圖1 流程控制系統(tǒng)的通信架構(gòu)圖
虛設(shè)備記錄通信數(shù)據(jù)的具體位置信息與設(shè)備信息。一個虛設(shè)備最多可存放數(shù)據(jù)塊中1000個字節(jié)連續(xù)的地址數(shù)據(jù),而一個TCP報(bào)文長度約為1480字節(jié),這樣讀一個虛設(shè)備的數(shù)據(jù)僅需一條讀指令即可。虛設(shè)備增加了掃描級別等字段,用于設(shè)置該設(shè)備的通信頻率[4-6]。
虛設(shè)備初始化所需的參數(shù)(以S7協(xié)議為例)如表2所示。虛設(shè)備參數(shù)定義如下:
1)虛設(shè)備名稱和虛設(shè)備編號可區(qū)分各虛設(shè)備;
2)通信驅(qū)動指采用的通信驅(qū)動名稱;
3)數(shù)據(jù)種類指數(shù)據(jù)屬于哪個數(shù)據(jù)塊,并由指定數(shù)字指代;
4)數(shù)據(jù)格式用于定義變量格式,字節(jié)(8位)、字(16位)和雙字(32位);
5)數(shù)據(jù)具體格式包括整型、無符號整型和浮點(diǎn)數(shù)3種;
6)訪問方式指訪問數(shù)據(jù)的方式,分為只讀、只寫和可讀可寫;
表2 虛設(shè)備初始化所需參數(shù)表
7)開始地址和數(shù)據(jù)長度分別指數(shù)據(jù)在目標(biāo)設(shè)備中的開始位置和讀取數(shù)據(jù)的總長度;
8)超時時間指虛設(shè)備生成對應(yīng)的讀寫報(bào)文后發(fā)送給目標(biāo)設(shè)備,目標(biāo)設(shè)備在指定的超時時間內(nèi)沒有返回結(jié)果報(bào)文時,將修改設(shè)備的掃描級別,使得該設(shè)備的通信頻率降低,從而減少系統(tǒng)異常等待的時間;
9)掃描級別是指發(fā)送讀報(bào)文的頻率等級,掃描級別包括1~10,1000,2000共12個數(shù)值,數(shù)值為1~10時,數(shù)字越小掃描頻率越高;掃描級別為1000代表該虛設(shè)備的數(shù)據(jù)只讀取一次;掃描級別為2000代表該虛設(shè)備的數(shù)據(jù)為定時讀??;
10) IP地址和端口號用于指定發(fā)送報(bào)文目標(biāo)設(shè)備的IP地址和端口號。
根據(jù)系統(tǒng)的通信變量定義虛設(shè)備,虛設(shè)備列表如圖2所示。
圖2 虛設(shè)備列表
為簡化虛設(shè)備定義過程,雙擊虛設(shè)備列表界面即可彈出虛設(shè)備定義程序框界面,如圖3所示。
圖3 虛設(shè)備定義程序框界面
在圖3中,可輸入或選中虛設(shè)備參數(shù),然后一鍵生成虛設(shè)備,并記錄于數(shù)據(jù)庫中。通過該方式使虛設(shè)備定義過程模板化,易于修正。
虛設(shè)備中每個變量代表的具體含義由變量定義模塊來完成。該模塊主要分為開關(guān)量模塊、模擬量模塊和文本量模塊[5],它們分別用來定義大小為1個比特、1個字節(jié)和多個字節(jié)的通信變量位于指定虛設(shè)備的位置信息。
發(fā)送與解析模塊主要完成讀寫報(bào)文生成并填充到讀寫報(bào)文隊(duì)列、解析返回報(bào)文2。通過發(fā)送與解析包里的初始化虛設(shè)備函數(shù),將數(shù)據(jù)庫中的所有虛設(shè)備信息生成對應(yīng)的虛設(shè)備對象填充到虛設(shè)備隊(duì)列中。發(fā)送和解析包含有根據(jù)虛設(shè)備向讀報(bào)文隊(duì)列添加對應(yīng)的讀報(bào)文方法、根據(jù)寫指令生成寫指令報(bào)文并添加到寫報(bào)文隊(duì)列的方法、根據(jù)虛設(shè)備解析對應(yīng)的讀寫報(bào)文的方法等。通過調(diào)用這些方法,使讀寫報(bào)文的生成、添加,結(jié)果報(bào)文的解析更加方便。
讀報(bào)文添加通過虛設(shè)備調(diào)用發(fā)送與解析包中的相應(yīng)方法,直接將該虛設(shè)備生成讀指令報(bào)文并添加到讀報(bào)文隊(duì)列中等待發(fā)送。寫指令報(bào)文根據(jù)寫指令隊(duì)列中寫指令參數(shù)生成,并將對應(yīng)的寫報(bào)文添加到寫報(bào)文隊(duì)列。寫指令中記錄寫操作的位置信息、數(shù)據(jù)長度和寫數(shù)據(jù)的值等參數(shù)。
本文改進(jìn)寫報(bào)文隊(duì)列的添加機(jī)制,改進(jìn)部分主要體現(xiàn)在讀報(bào)文隊(duì)列的添加機(jī)制。通過在每個虛設(shè)備中定義掃描級別字段,不是簡單輪詢虛設(shè)備后立即調(diào)用相應(yīng)方法向讀報(bào)文隊(duì)列中添加相應(yīng)的讀報(bào)文,而是在輪詢過程中根據(jù)掃描級別的設(shè)定,使掃描級別等級越高(數(shù)值越低)的虛設(shè)備添加讀報(bào)文的頻率越高,從而提高實(shí)時性要求較高的數(shù)據(jù)的讀寫效率。
讀寫報(bào)文的添加規(guī)則:首先,在讀報(bào)文隊(duì)列沒滿且讀指令隊(duì)列中沒有讀指令時,輪詢虛設(shè)備隊(duì)列中的虛設(shè)備;輪詢過程中,輪詢到掃描級別為1000的虛設(shè)備時,調(diào)用發(fā)送與解析包中的方法,把對應(yīng)的讀報(bào)文依次添加到讀指令隊(duì)列中,此類數(shù)據(jù)只從現(xiàn)場讀取一次;然后,用計(jì)數(shù)器記錄輪詢虛設(shè)備隊(duì)列的次數(shù),初始值為1;最后,在讀報(bào)文隊(duì)列沒滿的情況下反復(fù)輪詢虛設(shè)備隊(duì)列中的虛設(shè)備,若計(jì)數(shù)器數(shù)值是輪詢虛設(shè)備掃描級別數(shù)值的倍數(shù)且掃描級別不為1000或2000時,分別調(diào)用發(fā)送與解析包中的方法,把對應(yīng)的讀報(bào)文依次添加到讀指令隊(duì)列中;輪詢到掃描級別為2000的虛設(shè)備時,因該虛設(shè)備的數(shù)據(jù)為定時讀取,先看虛設(shè)備中的超時時間,判斷上次發(fā)送時間與系統(tǒng)時間之差是否大于等于報(bào)文中標(biāo)記的超時時間,若大于等于,則調(diào)用發(fā)送與解析包中的方法,把對應(yīng)的讀報(bào)文依次添加到讀指令隊(duì)列中;若小于,則跳過該虛設(shè)備繼續(xù)輪詢下一個虛設(shè)備。當(dāng)寫指令隊(duì)列中存在寫指令時,調(diào)用發(fā)送與解析包中的方法,把對應(yīng)的寫報(bào)文依次添加到寫指令隊(duì)列中。
通道線程主要完成的工作包括:把讀寫報(bào)文隊(duì)列中的報(bào)文依次發(fā)送到具體設(shè)備中(PLC),并接收設(shè)備返回的結(jié)果報(bào)文;調(diào)用發(fā)送與解析包解析返回的數(shù)據(jù)并置于共享內(nèi)存中待用;當(dāng)通信出現(xiàn)問題時,進(jìn)行日志書寫。通道線程的執(zhí)行流程圖如圖4所示。
圖4 通道線程的執(zhí)行流程圖
首先,開啟一個線程,初始化通道與ISO_TP連接;接著,判斷寫報(bào)文隊(duì)列中是否有寫報(bào)文,若存在寫報(bào)文,則從寫報(bào)文隊(duì)列中取出第一個寫報(bào)文,并根據(jù)該寫報(bào)文寫指令中的通道信息,把該報(bào)文發(fā)送到指定設(shè)備,在接收到返回的結(jié)果報(bào)文后,調(diào)用發(fā)送與解析包解析是否寫成功;若寫報(bào)文隊(duì)列為空,則取出讀報(bào)文隊(duì)列中的第一個讀報(bào)文,并根據(jù)該讀報(bào)文虛設(shè)備中的通道信息,把該讀報(bào)文發(fā)送到指定設(shè)備,設(shè)備返回結(jié)果報(bào)文后,通過發(fā)送與解析包解析具體數(shù)據(jù)放置于共享內(nèi)存中待用。
解析過程中由于某些不確定因素,在發(fā)送讀寫報(bào)文后,可能出現(xiàn)較長時間沒收到返回的結(jié)果報(bào)文或返回的結(jié)果報(bào)文校驗(yàn)不成功現(xiàn)象。若出現(xiàn)上述情況,將該讀寫報(bào)文重新發(fā)送到目標(biāo)設(shè)備。若通信還是異常,為不影響其他報(bào)文發(fā)送,合理分配通信時間,則將該指令報(bào)文的掃描級別修改為2000(定時讀取)。一旦通信正常后,則恢復(fù)原來的掃描級別。這樣在輪詢時通信不會進(jìn)入異常等待狀態(tài),從而提高通信效率。
首先,通過變量模塊定義通信變量;然后,通過虛設(shè)備依次定義通信變量位于PLC數(shù)據(jù)塊中的具體位置信息,并初始化虛設(shè)備、虛設(shè)備隊(duì)列、讀指令隊(duì)列、寫報(bào)文隊(duì)列和讀報(bào)文隊(duì)列;最后,導(dǎo)入發(fā)送與解析包,開啟通道線程。此時PLC與PC端的實(shí)時通信完成整體搭建,PLC與PC端通信實(shí)時狀態(tài)圖如圖5所示。
由圖5的發(fā)送欄可知:不同的虛設(shè)備發(fā)送指令包的數(shù)目存在一定的差別,從而得出數(shù)據(jù)讀取的頻率可以通過配置進(jìn)行改變。
圖5 通信連接狀態(tài)圖
經(jīng)過多次現(xiàn)場測試,得到的PLC與PC端的實(shí)時通信測試結(jié)果如表3所示。
表3 PLC與PC端的實(shí)時通信測試結(jié)果
綜合以上數(shù)據(jù)分析可得:PLC與PC端的實(shí)時通信在網(wǎng)絡(luò)與設(shè)備狀態(tài)良好的情況下,丟包率與錯誤率都較低;丟包、錯誤與連接失敗的主要原因是現(xiàn)場網(wǎng)絡(luò)在短時間內(nèi)出現(xiàn)延遲或網(wǎng)速不穩(wěn)定。
本文根據(jù)精細(xì)化工流程控制系統(tǒng)中數(shù)據(jù)對實(shí)時性要求存在差異的特點(diǎn),設(shè)計(jì)PLC與PC端的通信架構(gòu),并實(shí)現(xiàn)了虛設(shè)備模塊、變量定義模塊、發(fā)送與解析模塊、讀寫報(bào)文的添加模塊和通道線程,從而使PLC端的數(shù)據(jù)根據(jù)系統(tǒng)設(shè)定進(jìn)行有差異地讀取,進(jìn)而合理配置資源,提高通信效率。
[1] 王敏,李峰.精細(xì)化工行業(yè)發(fā)展現(xiàn)狀及趨勢[J].云南化工, 2018,45(10):21-22.
[2] 常一帆.工業(yè)自動化控制的現(xiàn)狀及未來發(fā)展趨勢[J].中國管理信息化,2016,19(12):177.
[3] 李占國.化工企業(yè)液位自動化控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)電信息,2013(12):153,155.
[4] 李建民,熊詩波,魏晉宏.西門子S7-200與PC實(shí)時通訊的實(shí)現(xiàn)方法[J].太原理工大學(xué)學(xué)報(bào),2003(4):465-467.
[5] 賈濤.西門子S7-200以太網(wǎng)通訊協(xié)議研究[J].電子技術(shù)與軟件工程,2014(24):30-32.
[6] 董青青.基于TCP協(xié)議的PC與西門子S7-1200PLC通信研究[J].電子測試,2019(19):76-77,79.
Communication Technology for Fine Chemical Process Control
He Xiaodong1Du Hongtao1Huang Jiaming2
(1.Zhuhai Longtec., Ltd, Zhuhai 519090, China 2.College of Science and Engineering of Jinan University, Guangzhou 510632, China)
Network real-time communication is an important part of fine chemical process control. Taking the fine chemical process control system of a production workshop as the background, according to the production demand, the communication architecture between PC and PLC is designed, and the message sending and receiving mechanism is optimized, so that the PLC data can be read differently according to the system setting frequency, so as to improve the communication efficiency and production efficiency. This method can be used for reference in process control of small and medium-sized fine chemical enterprises.
process control; real-time communication; message sending and receiving mechanism
TN914.3
A
1674-2605(2021)01-0009-05
10.3969/j.issn.1674-2605.2021.01.009
何曉東,男,1970年生,本科,高級工程師,主要研究方向:工業(yè)自動化、信息化系統(tǒng)規(guī)劃。E-mail: hexiaodong@longtec.com
杜紅濤,男,1977年生,本科,工程師,主要研究方向:工業(yè)自動化、信息化系統(tǒng)研發(fā)。E-mail: duhongtao@longtec.com
黃嘉明,男,1995年生,本科,碩士,主要研究方向:網(wǎng)絡(luò)通信與信息處理。E-mail: 290045461@qq.com