摘要:為了在開發(fā)帶有IO-Link技術(shù)的設(shè)備中提供有效的固件開發(fā)環(huán)境。以IO-Link技術(shù)為背景,依據(jù)IO-Link技術(shù)協(xié)議設(shè)計(jì)了固件開發(fā)結(jié)構(gòu)。該固件結(jié)構(gòu)具有穩(wěn)定、可重用等特點(diǎn)。基于該固件結(jié)構(gòu),用戶依據(jù)不同的需求來設(shè)定相關(guān)的參數(shù)就能夠便捷的開發(fā)具有IO-Link技術(shù)的設(shè)備。
關(guān)鍵詞:自動(dòng)化;IO-Link;技術(shù);協(xié)議棧;固件
在傳統(tǒng)的自動(dòng)控制系統(tǒng)中,現(xiàn)場(chǎng)的測(cè)量?jī)x表以及傳感器和執(zhí)行器遇到故障或者用戶希望修改此類設(shè)備的參數(shù)時(shí),通常需要應(yīng)用工程師到現(xiàn)場(chǎng)對(duì)設(shè)備進(jìn)行維護(hù)或設(shè)定。而使用了帶有IO-Link技術(shù)的設(shè)備,只需要將現(xiàn)場(chǎng)設(shè)備直接替換,設(shè)備會(huì)自動(dòng)下載相應(yīng)的參數(shù)信息,無(wú)需對(duì)新設(shè)備進(jìn)行設(shè)定。當(dāng)用戶需要修改設(shè)備參數(shù)時(shí),只需要在應(yīng)用層將參數(shù)設(shè)定好,系統(tǒng)會(huì)按照IO-Link協(xié)議規(guī)范將參數(shù)自動(dòng)下載到設(shè)備中。IO-Link接口技術(shù)消除了傳感器與執(zhí)行器上的瓶頸,使得數(shù)字量的點(diǎn)對(duì)點(diǎn)連接具有對(duì)話能力,他用標(biāo)準(zhǔn)的三線制電纜代替了復(fù)雜的接口,并給整個(gè)處理級(jí)賦予了一致的參數(shù)化和診斷概念[1]。IO-Link技術(shù)從一開始提出就注定將會(huì)在自動(dòng)化發(fā)展過程中留下深深的足跡,它以其特殊的性能受到用戶的好評(píng),國(guó)內(nèi)外眾多知名的傳感器、執(zhí)行器和自動(dòng)化設(shè)備的制造商已經(jīng)將IO-Link技術(shù)應(yīng)用到他們的產(chǎn)品中。IO-Link 技術(shù)作為一種將執(zhí)行器或傳惑器集成于自動(dòng)化系統(tǒng)中的低成本的通信解決方案與公眾見面,目的是把與過程的最后一米連接做得透明度更高,通信性能更強(qiáng)[2]。
1 IO-Link技術(shù)概述
1.1 IO-Link系統(tǒng)組成
IO-Link是通向執(zhí)行器和傳感器的最后一步,也被譽(yù)為自動(dòng)化的最后一米技術(shù)[3]。IO-Link技術(shù)是一種將傳統(tǒng)和智能傳感器和執(zhí)行器集成在自動(dòng)化系統(tǒng)中的低成本通信接口技術(shù),是一種獨(dú)立于現(xiàn)場(chǎng)總線的通信接口,它可以實(shí)現(xiàn)傳統(tǒng)傳感器與智能傳感器的混合運(yùn)行[4]。一般來說IO-Link系統(tǒng)由許多IO-Link設(shè)備、傳感器、執(zhí)行器或者他們的組合通過標(biāo)準(zhǔn)3線制傳感器/執(zhí)行器電纜連接到IO-Link主站設(shè)備上組成,主站可以是一個(gè)具有不同設(shè)計(jì)和不同保護(hù)等級(jí)的設(shè)備。IO-Link系統(tǒng)的結(jié)構(gòu)如下圖。
圖1 IO-Link系統(tǒng)結(jié)構(gòu)
一個(gè)IO-Link主站可以有一個(gè)或者多個(gè)端口,每個(gè)端口只能連接一個(gè)IO-Link設(shè)備[5]。同樣,也可以將一個(gè)IO-Link設(shè)備從站接入IO-Link主站的端口,在IO-Link的從站上接入普通的現(xiàn)場(chǎng)傳感器、執(zhí)行器。因此IO-link是一種點(diǎn)到點(diǎn)的通信,而不是一種現(xiàn)場(chǎng)總線。
圖2 IO-Link點(diǎn)對(duì)點(diǎn)的連接
1.2 IO-Link啟動(dòng)
IO-Link設(shè)備初始默認(rèn)為標(biāo)準(zhǔn)I/O模式啟動(dòng),主站端口可以進(jìn)行組態(tài),端口配置成標(biāo)準(zhǔn)I/O模式時(shí),將作為常規(guī)的數(shù)字量輸入輸出端口使用,如果配置成通信模式時(shí),主站件檢測(cè)端口所連接的IO-Link設(shè)備。這個(gè)過程稱為喚醒。IO-Link通訊模式與標(biāo)準(zhǔn)I/O口模式見下圖。
圖3 IO-Link通訊模式與標(biāo)準(zhǔn)I/O口模式
在喚醒期間,IO-Link主站設(shè)備發(fā)送特定的信號(hào)并等待設(shè)備應(yīng)答。主站設(shè)備先嘗試定義的最高波特率,如果不成功則嘗試低一級(jí)的波特率。在每一個(gè)傳輸速率下三次嘗試喚醒設(shè)備。如果主設(shè)備接收到應(yīng)答(例如設(shè)備被喚醒),將會(huì)進(jìn)入通訊模式。首先是交換通信參數(shù),之后將開始交換周期性的過程數(shù)據(jù)。
如果設(shè)備在運(yùn)行期間被移除,IO-Link主站設(shè)備偵聽到通信中斷,將會(huì)向控制系統(tǒng)發(fā)出報(bào)文,并且周期性的嘗試喚醒設(shè)備。如果設(shè)備被再次喚醒,如果需要將讀出通訊參數(shù),之后將開始周期數(shù)據(jù)交換。
如果IO-Link主站設(shè)備中斷通訊,主站設(shè)備和設(shè)備都將切換為標(biāo)準(zhǔn)I/O口模式,這也叫做回落。
2 IO-Link協(xié)議概述
IO-Link不能算一種單獨(dú)的工業(yè)網(wǎng)絡(luò),而只是一種簡(jiǎn)單的協(xié)議,利用現(xiàn)有的點(diǎn)對(duì)點(diǎn)連接技術(shù)增加網(wǎng)絡(luò)效率,增加設(shè)備間的信息交換能力[6]。基于應(yīng)用廣泛的三線技術(shù),IO-Link協(xié)議使用戶快速運(yùn)行現(xiàn)場(chǎng)裝置,維護(hù)更加簡(jiǎn)便。僅僅使用一根電纜就可以完成數(shù)據(jù)傳輸和能量供給,IO-Link協(xié)議簡(jiǎn)化了連接程序,減少電纜投入。而且,允許用戶從一個(gè)傳感器下載設(shè)置的參數(shù)提供給替換的傳感器產(chǎn)品,因此不再需要攜帶操作手冊(cè)到現(xiàn)場(chǎng)進(jìn)行設(shè)置[7]。
基本上,IO-link協(xié)議進(jìn)行交換的有三種數(shù)據(jù)類型:周期性數(shù)據(jù)(也稱為過程數(shù)據(jù))、非周期數(shù)據(jù)或者服務(wù)性數(shù)據(jù)、事件型數(shù)據(jù)。
只有IO-Link主設(shè)備發(fā)出請(qǐng)求后,IO-Link設(shè)備才發(fā)送數(shù)據(jù),IO-Link主設(shè)備會(huì)明確地發(fā)出非周期數(shù)據(jù)和事件的請(qǐng)求,在主設(shè)備的空閑報(bào)文后才發(fā)送周期數(shù)據(jù)。
1) 過程數(shù)據(jù)(PD-Process data)
設(shè)備的過程數(shù)據(jù)通過數(shù)據(jù)幀周期的傳輸,保證了過程數(shù)據(jù)寬度不超過2個(gè)字節(jié)。如果過程數(shù)據(jù)長(zhǎng)度超寬,將會(huì)被分割并通過幾個(gè)周期來傳輸。當(dāng)過程數(shù)據(jù)有誤時(shí)將會(huì)輸出診斷信息。
2) 服務(wù)數(shù)據(jù)(SD-Service data)
服務(wù)數(shù)據(jù)交換是非周期的,而且是基于IO-Link主設(shè)備的請(qǐng)求。首先,IO-Link主設(shè)備發(fā)送一個(gè)請(qǐng)求給IO-Link設(shè)備,IO-Link設(shè)備給予響應(yīng)。服務(wù)數(shù)據(jù)可以用來讀取設(shè)備狀態(tài)和參數(shù)值,也可以用來寫參數(shù)值和發(fā)送指令。
服務(wù)數(shù)據(jù)和過程數(shù)據(jù)可以在一個(gè)報(bào)文傳輸,也可以在幾個(gè)報(bào)文里傳輸。IO-Link報(bào)文結(jié)構(gòu)如下圖。
圖4 IO-Link報(bào)文結(jié)構(gòu)
3) 事件型數(shù)據(jù)
當(dāng)有事件發(fā)生時(shí),設(shè)備首先置位事件標(biāo)志,事件標(biāo)志位在過程數(shù)據(jù)報(bào)文的CKECK/STAT字節(jié)的第七位中傳輸。主設(shè)備偵聽該為且讀出事件報(bào)告。如果有事件報(bào)告將不允許服務(wù)數(shù)據(jù)交換。這也就意味著設(shè)備的狀態(tài)如過熱、短路等可以通過事件向PLC或可視化系統(tǒng)報(bào)告。
IO-Link主設(shè)備可以產(chǎn)生自己的事件和狀態(tài)例如開路、通訊中斷、過載等,并通過相應(yīng)的現(xiàn)場(chǎng)總線傳輸事件和狀態(tài)。
3 IO-Link協(xié)議棧解析
3.1 IO-Link協(xié)議棧結(jié)構(gòu)
IO-Link設(shè)備協(xié)議棧已經(jīng)完整的封裝好了,并提供了良好的用戶應(yīng)用接口程序,協(xié)議棧的結(jié)構(gòu)圖如下。
圖5 IO-Link設(shè)備協(xié)議棧結(jié)構(gòu)
協(xié)議棧解析:
1) STACK_Init(const TUnsigned8 *parameter);
設(shè)備協(xié)議棧初始化,協(xié)議棧初始化前必須將硬件設(shè)備進(jìn)行預(yù)設(shè),主要完成內(nèi)部數(shù)據(jù)結(jié)構(gòu)的復(fù)位。IO-Link設(shè)備的類型描述、通訊屬性、設(shè)備參數(shù)和診斷數(shù)據(jù)設(shè)置都在此函數(shù)中設(shè)定。當(dāng)IO-Link設(shè)備連接后,通過IODD解析器DTMs(設(shè)備管理類型器)來解析IO-Link設(shè)備的設(shè)備描述,以及對(duì)IO-Link設(shè)備的控制[8]。另外,配置參數(shù)將會(huì)以IO-Link技術(shù)規(guī)范中定義的32個(gè)字節(jié)方式分配給協(xié)議棧,數(shù)組參數(shù)將會(huì)作為指針分配,協(xié)議棧需要這些參數(shù)來進(jìn)行通信。協(xié)議棧初始化包含了功能預(yù)定義的參數(shù),分配協(xié)議棧的參數(shù)。初始化幀模式,置位幀緩沖器用于接收新的數(shù)據(jù)幀。初始化所有事件句柄模式,復(fù)位所有狀態(tài),等待事件發(fā)生。
2) STACK_Start(TUnsigned8 Baudrate);
激活I(lǐng)O-Link協(xié)議棧,保存用戶選用的傳輸速率,所有參數(shù)使用設(shè)備定義的傳輸速率進(jìn)行交換,同時(shí)選定特定的數(shù)據(jù)幀格式,使能說有必須的外部中斷和串行數(shù)據(jù)中斷等
3) STACK_Run;
IO-Link協(xié)議棧開始運(yùn)行,周期的進(jìn)行過程數(shù)據(jù)和參數(shù)交換。
3.2 固件結(jié)構(gòu)設(shè)計(jì)
具有IO-Link技術(shù)的設(shè)備開發(fā)可以調(diào)用IO-Link協(xié)議棧來完成,通過對(duì)協(xié)議棧的參數(shù)配置、和任務(wù)調(diào)度來進(jìn)行IO-Link數(shù)據(jù)傳輸。設(shè)備的固件主程序包含了以下協(xié)議棧的幾個(gè)接口函數(shù)。
main()
{
OLIMEX_EX_Board_GPIO_Config();
/*完成STM32的硬件配置,使能通用定時(shí)器時(shí)鐘,通用IO口配置等工作*/
Debug_UART_Config();//配置用于調(diào)試的串行口
STACK_Init(const TUnsigned8 *parameter);
STACK_Start(TUnsigned8 Baudrate);
STACK_Run;
}
在協(xié)議棧的初始化接口函數(shù)中還包含了硬件接口、數(shù)據(jù)幀和時(shí)間等的初始化。在協(xié)議棧的啟動(dòng)接口函數(shù)中還包含了硬件接口的標(biāo)準(zhǔn)輸入輸出方式和通訊模式的選擇,數(shù)據(jù)幀、時(shí)間的規(guī)定和硬件外部信息中斷允許等任務(wù)。協(xié)議棧配置與啟動(dòng)后進(jìn)入運(yùn)行狀態(tài),能夠按照預(yù)設(shè)的方式與IO_link主站設(shè)備保持通訊。IO-Link設(shè)備固件結(jié)構(gòu)的詳細(xì)結(jié)構(gòu)框圖如下。
圖6 IO-Link固件結(jié)構(gòu)
4 結(jié)束語(yǔ)
IO-Link技術(shù)可以在整個(gè)設(shè)備范圍向傳感器和執(zhí)行器提供各種數(shù)據(jù),使用IO-Link可以憑直覺對(duì)傳感器層的系統(tǒng)進(jìn)行參數(shù)化,設(shè)計(jì)時(shí)可以對(duì)傳感器/執(zhí)行器功能的穩(wěn)固性等加以檢查[9]。使用了帶有IO-Link技術(shù)的設(shè)備可以增強(qiáng)生產(chǎn)加工設(shè)備的可用性、保證生產(chǎn)加工流程和生產(chǎn)數(shù)據(jù)的暢通無(wú)阻,簡(jiǎn)化工業(yè)現(xiàn)場(chǎng)的布線連接[10]。
IO-Link固件主要是提供了完成IO-Link數(shù)據(jù)交換的準(zhǔn)備以及數(shù)據(jù)通訊的通道方式的設(shè)定等工作,IO-Link設(shè)備的開發(fā)必須基于IO-Link的協(xié)議棧,它提供了IO-Link數(shù)據(jù)傳輸?shù)囊?guī)范,按照文中提出的固件結(jié)構(gòu),用戶可以基于協(xié)議棧按照協(xié)議規(guī)范來設(shè)定參數(shù),產(chǎn)品設(shè)計(jì)出符合不同應(yīng)用場(chǎng)合的不同類型的集成IO-Link技術(shù)的工業(yè)自動(dòng)化設(shè)備。
參考文獻(xiàn):
[1] IO-Link可實(shí)現(xiàn)更高的生產(chǎn)率和系統(tǒng)性能——巴魯夫在MOTEK2006展會(huì)上推出新的通訊標(biāo)準(zhǔn)[J]. 世界制造技術(shù)與裝備市場(chǎng), 2007,(02)
[2] IO-Link有助于車床制造商提高生產(chǎn)率[J]. 現(xiàn)代制造, 2008,(48)
[3] 與時(shí)俱進(jìn)的PROFIBUS和PROFINET[J]. 中國(guó)食品工業(yè), 2006,(09)
[4] 任曉明. FA&PA新力量——PROFIBUS和PROFINET最新技術(shù)新聞發(fā)布會(huì)[J]. 機(jī)電產(chǎn)品市場(chǎng), 2006,(10)
[5] 盧祁. 中國(guó)PROFIBUS&PROFINET協(xié)會(huì)(CPA)第二次會(huì)員大會(huì)[J]. 中國(guó)儀器儀表, 2011,(03)
[6] 傅昆. 現(xiàn)場(chǎng)級(jí)聯(lián)網(wǎng)技術(shù)的新進(jìn)展[J]. 現(xiàn)代制造, 2006,(29)
[7] 線性傳感器的領(lǐng)導(dǎo)者[J]. 自動(dòng)化博覽, 2010,(05)
[8] 李薇瑾. 設(shè)備類型管理器及應(yīng)用[J]. 儀器儀表標(biāo)準(zhǔn)化與計(jì)量, 2010,(04)
[9] 利用IO-Link控制現(xiàn)場(chǎng)設(shè)備[J]. 現(xiàn)代制造, 2007,(27)
[10] Frank-Josef Heimerl. 聲納傳感器采用IO-Link技術(shù)優(yōu)化生產(chǎn)加工控制[J]. 現(xiàn)代制造, 2009,(22)
摘自《自動(dòng)化博覽》2011年第十期