向緒友,周 超,賀 藝,李 亮,楊雨辰
(湖南省農業(yè)信息與工程研究所,湖南 長沙 410125)
智能化育苗盤架是一種環(huán)境完全可控工廠化育苗生產設備,架體為金屬構件,設置2個盤組,每個盤組設置5~7層盤托,育苗盤穴置于盤托中,支持包括潮汐式育苗在內的多種工廠化育苗模式[1-2];具有統(tǒng)一的構件接口、網(wǎng)絡接口、電源接口和灌溉接口,可用模塊化組裝方法聯(lián)結成復合盤架;內置通信網(wǎng)絡(TCN,tray communication network)連接內部變送器和執(zhí)行器等ECU(Electronic Control Unit)設備,用于實現(xiàn)對盤架內水肥、光照等環(huán)境因子進行高可靠自主容錯控制,進一步降低育苗管理、投入品使用和能耗等成本[3-5]。筆者設計了一種育苗盤架通信網(wǎng)絡(TCN)的網(wǎng)絡結構和通信協(xié)議,較好地滿足了智能化育苗的實際應用需求。
TCN總體結構如圖1所示。上層為工業(yè)以太網(wǎng)(NE),是育苗盤架的標準網(wǎng)絡接口,用于連接外部網(wǎng)絡、育苗盤架內置寬帶網(wǎng)絡設備(如攝像頭)以及級聯(lián)育苗盤架。下層為CAN總線(NC),用于連接育苗盤架內變送器和執(zhí)行器等節(jié)點設備。NE與NC之間通過協(xié)議轉換模塊連接,使NC節(jié)點能通過NE與外部網(wǎng)絡通信。
圖1 TCN結構示意圖
實際應用中,通常將多個育苗盤架級聯(lián)后再集成上位系統(tǒng)組成可管理的基本生產單元(PU)。PU包含一個上位系統(tǒng)和n(n≤15)個育苗盤架,其網(wǎng)絡拓撲結構如圖2所示。
圖2 PU網(wǎng)絡拓撲結構示意圖
NC網(wǎng)絡節(jié)點是一種CAN總線設備,除了具有基本CAN總線設備屬性外,還包含基于統(tǒng)一編碼的節(jié)點標識符、尋址寄存器(CTR)、位置寄存器(CLR)和節(jié)點共享變量(NSV)等特征,這些特征用于滿足育苗盤架智能化的特殊需求。
NC節(jié)點標識符(NID)用于節(jié)點尋址,由第一標識符、第二標識符和第三標識符組成。第一標識符是統(tǒng)一分配給入網(wǎng)節(jié)點設備的分類編碼(NDT),第二標識符是部署時分配給同類在網(wǎng)節(jié)點設備的編號(NDN),第三標識符是在網(wǎng)節(jié)點設備作用的盤組號(NDG)。這種形式的NID用于在多主通信模式下支持點到點、點到多點和廣播3種通信方式,原則上不允許NC中存在NDT、NDN和NDG均相同的節(jié)點。
利用NDT將一種物理設備劃分成多種不同類型的節(jié)點設備/邏輯設備,將節(jié)點應用和節(jié)點間通信建立在邏輯設備之上,有利于降低設備研發(fā)和使用成本。例如,該設計中的溢水流量變送器和進水流量變送器本質上是NDT不同的流量變送器。
具體實現(xiàn)時,NDT是圖3所示意的5位位組,保留位組00000B和11111B后,可編碼30個類型的邏輯設備。00000B保留給廣播通信方式,11111B保留給協(xié)議網(wǎng)關。
圖3 NDT編碼示意圖
NDN是圖4所示的3位位組,保留位組000B后,可編碼6個邏輯設備。000B保留給點對多點通信方式。
圖4 NDN編碼示意圖
例如,NID中包含11101001B的節(jié)點是NC中的1號溢水控制執(zhí)行器,NID中包含11101010B的節(jié)點是NC中的2號溢水控制執(zhí)行器。當溢水流變變送器(NDT為00010B)感知到存在溢水流量時,用點對多點消息通信方式修改NDT為11101B的節(jié)點的溢水監(jiān)控共享變量值,從而1號溢水控制執(zhí)行器和2號溢水控制執(zhí)行器觸發(fā)關閉進水閥的處理過程。
CTR和CLR寄存器用于存儲節(jié)點標識符和在PU中的位置信息。位置信息是一個三元組(LX, LY,LZ),作用范圍僅限于節(jié)點所屬的PU,用于方便設備維護。
CTR是8位寄存器,分成2個位組,格式如圖5所示,第7位到第3位存儲節(jié)點的NDT,第2位到第0位存儲節(jié)點NDN。
圖5 CTR位組格式
CLR是8位寄存器,分成3個位組,格式如圖6所示,第7位至第4位為盤架號(育苗盤架在PU中的編號),第3位為盤組號,第2位至第0位是盤層號。LX、LY和LZ約束了一個PU最多包含15個育苗盤架(保留0000B),一個育苗架最多存在2個盤組,一個盤組最多存在7個盤層。LY也是節(jié)點的第三標識符。
圖6 CLR位組格式
CTR和CLR在節(jié)點啟動時被初始化,初始化值取自于持久化裝置(如非易失性存儲器、DIP開關等)。
節(jié)點共享變量(NSV)用于存儲節(jié)點的配置、狀態(tài)和過程數(shù)據(jù),節(jié)點間通過消息讀寫彼此的NSV。NSV是一個如圖7所示TAV結構的實例,由Tage、Attri和Value這3個域組成,Tage域是統(tǒng)一分配的NSV的唯一標識符,Attri域是NSV的操作屬性,Value域是NSV的值。通信時,NSV的值轉換成兩字節(jié)格式(TBF,two byte format)后封裝在PDU中。
圖7 TAV結構
如圖8所示,Attri域各位組的語義為:
圖8 Attri域位組格式
A1,訪問權限,00B表示可讀寫,01B表示只讀,10B和11B保留;
A2,掃描優(yōu)先級,用于指定節(jié)點應用掃描和處理NSV的時間周期;
A3,Value域長度(字節(jié)數(shù))。
節(jié)點初始化后,節(jié)點應用周期性地掃描NSV表,并根據(jù)NSV值的變化情況觸發(fā)相應的處理過程。掃描周期定義為相隔多少個時鐘脈沖掃描一次NSV表,一個NSV可關聯(lián)多個掃描周期,每個掃描周期的大小可動態(tài)設置。掃描優(yōu)先級基于掃描周期定義,缺省定義3個優(yōu)先級SP1、SP2和SP3,對應掃描周期的時鐘脈沖數(shù)分別為s1、s2和s3,s3<s2<s1,約定A2.0為1B時按周期s3觸發(fā)NSV為SP3定義的處理過程,A2.1為1B時按周期s2觸發(fā)NSV為SP2定義的處理過程,A2.2為1B時按周期s1觸發(fā)NSV為SP1定義的處理過程。通常,SP3用于觸發(fā)高實效性處理過程(如關閉進水閥),SP1用于觸發(fā)低時效性處理過程(如感知數(shù)據(jù)上傳)。
該設計僅討論NC的應用層通信協(xié)議。
NC是基于CAN總線的網(wǎng)絡,CAN 協(xié)議只定義了數(shù)據(jù)鏈路層和物理層,需要針對育苗盤架通信網(wǎng)絡特定應用需求(可靠、自主、容錯等)自定義應用層協(xié)議——NCAP?;贜CAP的NC基本通信模型如圖9所示,PDU是協(xié)議數(shù)據(jù)單元。
圖9 基于NCAP的NC基本通信模型
NCAP設計成無連接和無會話管理的通信協(xié)議,只支持R2(request,response)通信模式,僅包含請求信息(R1M)和應答信息(R2M)2種消息對象,相對DeviceNet、CANopen等基于CAN總線的應用層協(xié)議[6-7]而言是一種簡單協(xié)議。
NCAP將一個完整的通信過程定義成消息事務(MT,簡稱為事務),事務關聯(lián)參與通信的左節(jié)點和右節(jié)點,包含一個R1M、一個或多個R2M、起始時間(MTT)和生命期(MTP)4個基本屬性,MTT是左節(jié)點創(chuàng)建事務時的節(jié)點事務時間(節(jié)點系統(tǒng)時間的一種表達形式),MTP是事務從創(chuàng)建到終止所經歷的時間,MTT和MTP定義了事務的時間邊(起止時間窗口),表示為tw(mtt,tvp),其中,mtt是事務的MTT值,tvp是事務的MTP值。
通信時,左節(jié)點創(chuàng)建事務后生成該事務的M1R并發(fā)送給右節(jié)點,右節(jié)點接收處理M1R后生成同一事務下的M2R后發(fā)送給左節(jié)點,一個右節(jié)點只能產生一個M2R。事務中的R1M與R2M之間存在一對多關系,節(jié)點應用利用事務屬性識別R1M與R2M之間的對應關系,判斷R1M和R2M的時效性。NCAP未定義事務間上下文關系,因此協(xié)議層面不支持分段傳輸。
為了滿足自主容錯控制需求,NCAP支持點到點、點到多點和廣播通信方式。假定NC中存在n個節(jié)點,點對點指左節(jié)點將R1M發(fā)送給唯一1個右節(jié)點,特點是相關事務包含1個R1M和1個R2M,典型應用場景是變送器將感知數(shù)據(jù)發(fā)送給協(xié)議轉換模塊;點對多點指左節(jié)點將1個R1M同時發(fā)送給m(n≥m>1)NDT相同的右節(jié)點,特點是相關事務包含1個R1M和m個R2M,典型應用場景是溢水變送器將流量值發(fā)送給多個溢水控制執(zhí)行器;廣播指左節(jié)點將R1M同時發(fā)送給所有節(jié)點,特點是相關事務包含一個R1M和n個R2M,典型應用場景是同步節(jié)點系統(tǒng)時間。
具體實現(xiàn)時,節(jié)點應用基于CAN擴展數(shù)據(jù)幀的29位標識符指定通信方式。
NCAP協(xié)議的消息格式以圖10所示的CAN擴展數(shù)據(jù)幀為基礎定義,表示為PDU。PDU由PDU頭(PDUH)和通信數(shù)據(jù)(PDUD)組成,分別對應于CAN擴展數(shù)據(jù)幀的29位標識符和8字節(jié)數(shù)據(jù)域。由于SOF、SRR、IDE、RTR等位組完全由CAN規(guī)范決定,對節(jié)點應用透明,PDU中沒有體現(xiàn)這些位組。通信時,PDU被封裝成CAN擴展數(shù)據(jù)幀后通過物理介質傳送到其他節(jié)點,DLC在封裝時總是置為8。
圖10 CAN擴展數(shù)據(jù)幀
3.3.1 PDUH PDUH是NCAP對CAN擴 展 數(shù) 據(jù) 幀29位標識符(ID.28~ID.0)的一種具體編碼,由8個位組組成,格式如圖11所示。
圖11 PDUH位組格式
以下基于消息m描述PDUH各位組語義。
MC,占用標識符位ID.28~ID.27,值為00B時表示m是內網(wǎng)消息,值為01B時表示m是全網(wǎng)消息,值為10B時表示m是時鐘同步消息,禁用11B。內網(wǎng)消息僅限于在NC節(jié)點間傳遞,全網(wǎng)消息可以在NTCN節(jié)點間傳遞。只有協(xié)議轉換模塊能發(fā)送時鐘同步消息,禁用11B是因為CAN 協(xié)議規(guī)定消息幀標識符前7位不能全為顯性位(1B)。
COT,占用標識符位ID.26,值為0B時表示m是R1M,值1B時表示m是R2M。
DNT,占用標識符位ID.25~ID.21,取值為dnt或00000B,前者表示只有節(jié)點設備類型代碼為dnt的節(jié)點才能接收m,后者表示NC上所有節(jié)點為候選接收節(jié)點。協(xié)議規(guī)定非候選接收節(jié)點不能接收m,M2R中該位組不能置為00000B。
DNN,占用標識符位ID.20~ID.18,取值為dnn或000B,前者表示只有節(jié)點設備編號為dnn的節(jié)點才能接收m,后者表示NC上所有匹配DNT的節(jié)點都能接收m。協(xié)議規(guī)定M2R中該位組總是置為000B。
SNT,占用標識符位ID.17~ID.13,發(fā)送節(jié)點的第一標識符,取值為CTR寄存器的NTC。
SDL,占用標識符位ID.12~ID.5,發(fā)送節(jié)點的部署位置信息,取值于CLR寄存器。
LRI,占用標識符位ID.4,位置相關指示符,值為0B時表示在節(jié)點尋址中使用節(jié)點第三標識符,限定只有匹配SDL.LY的節(jié)點才能接受m;值為1B時表示節(jié)點判斷是否接收m與節(jié)點第三標識符無關。
TVP,占用標識符位ID.3~ID.0,取值為:1+mtp/8,其中,mtp是消息所在事務的生命期。
3.3.2 PDUD PDUD是CAN數(shù)據(jù)幀的數(shù)據(jù)域,長度為8個字節(jié),格式如圖12所示。
圖12 PDUD格式
MTT,消息的時間戳,值為左節(jié)點創(chuàng)建當前事務時的節(jié)點事務時間。事務時間定義為(節(jié)點系統(tǒng)時間& FFFFFFFFH),時間單位為ms。事務中的M1R和M2R均使用同一MTT值。使用MTT時,節(jié)點應通過網(wǎng)絡獲取統(tǒng)一的系統(tǒng)時間。
MTP,消息的通信數(shù)據(jù),一個TAV結構的對象。當m用于讀寫目標節(jié)點的共享變量nsv時,Tag域填寫這個nsv的標識符;Value域置為這個nsv的有效TBF值;Attri域中各位組的語義為:
A1,在M1R中,00B表示讀操作,01B表示寫操作,10B和11B保留;在M2R中,用10B表示成功應答,用11B表示失敗應答,00B和01B保留。
A2,在M1R中置為掃描優(yōu)先級;在M2R中,成功應答時置為000B,失敗應答時置成錯誤代碼。
A3,總是置為10B。
TBF值是NSV值的一種編碼形式,編碼規(guī)則參考SAEJ1939規(guī)范制定,TBF值限定在0~65 536范圍內,NCAP統(tǒng)一預定義每個共享變量TBF值的編碼規(guī)則。
NCAP協(xié)議規(guī)定節(jié)點產生事務的間隔時間不小于1 ms。通信時,左節(jié)點創(chuàng)建消息事務mt插入到事務列表,生成mt的請求消息m1r發(fā)送給右節(jié)點;所有右節(jié)點接收、處理m1r后生成mt的應答消息m2r響應給左節(jié)點。左節(jié)點收到一個m2r就認為發(fā)送成功。
以下內容以mt、m1r和m2r關系為基礎描述,且用mt.tw(mtt,tvp) 表示mt的起止時間窗口,其中,mtt是mt的開始時間,tvp是mt的生命期。
左節(jié)點生成m1r時,其PDU位組PDUH.COT置成0B、PDUH.TVP置成tvp、PDUD.MTT置為mtt,其它位組根據(jù)實際需要設置。
右節(jié)點收到m1r后執(zhí)行圖13所示的基本處理流程。流程中,m1r被識別為無效消息時直接丟棄,被識別為有效信息時執(zhí)行相應處理過程后響應m2r,被識別為時間同步消息后更新節(jié)點系統(tǒng)時間后響應m2r。消息過期判斷方法為:當左節(jié)點收到m1r時,如果其事務時間不在mt.tw(mtt,tvp)中,視m1r為過期消息。
圖13 M1R基本處理流程
右節(jié)點生成m2r時,其PDU位組PDUH.COT置為1B、PDUH.TVP置為tvp、PDUD.MTT置為mtt,其它位組根據(jù)實際情況設置。
左節(jié)點收到m2r后執(zhí)行圖14所示的基本處理流程。用mtt查詢事務列表,如果查詢結果為空,表示mt已終止,m2r被視為無效消息。當mt存在于事務列表時,表示m2r有效,則更新事務列表。更新包括修改事務狀態(tài)、刪除事務等操作。運行時,左節(jié)點事務監(jiān)控器(monitor)按預定時間周期(如8 ms)掃描事務列表,發(fā)現(xiàn)當前事務時間不在mt.tw (mtt,tvp)中時刪除mt。
圖14 M2R基本處理流程
具體實現(xiàn)時,可利用CAN消息過濾機制省略DNT匹配過程。
NC是CAN總線網(wǎng)絡,支持節(jié)點時鐘同步[8],包含一個時鐘源節(jié)點(T節(jié)點,如協(xié)議轉換模塊)、n個時間敏感節(jié)點(S節(jié)點,如,變送器,執(zhí)行器),其消息幀傳輸滿足條件:幀到達各右節(jié)點CAN控制器且被完全接收的延時時間小于一個定值(如250 μs);右節(jié)點從幀接收完成到中斷服務程序處理該幀的延遲時間小于一個定值(如500 μs)。
節(jié)點時間同步僅同步S節(jié)點的系統(tǒng)時間,使任意2個S節(jié)點的系統(tǒng)時間之差小于1 ms或更小?;就搅鞒虨椋海?)T節(jié)點作為左節(jié)點按定義的時間間隔周期性地廣播時間同步消息(sync),sync中封裝了T節(jié)點的系統(tǒng)時間tT;(2)右節(jié)點接收sync,從sync中解析出tT,將tT設置為節(jié)點系統(tǒng)時間;(3)tS為右節(jié)點接收sync時的系統(tǒng)時間,Δt=tS-tT,基于Δt調整各事務的起止時間窗口參數(shù)。
生成sync時,其PDU位組PDUH.MC置為10B、PDUH.DNT置為00000B、PDUH.DNN置為000B、PDUD.LRI置為1B,PDUD置為tT。
設計了一種面向智能化育苗盤架控制系統(tǒng)的網(wǎng)絡,內容包括網(wǎng)絡結構、節(jié)點組件和通信協(xié)議。通過定義級聯(lián)網(wǎng)絡接口,統(tǒng)一分配節(jié)點標識符,規(guī)范通信數(shù)據(jù)格式,以及引入共享變量、消息事務和節(jié)點系統(tǒng)時間同步機制,較好地解決了育苗盤架多級級聯(lián)和自主容錯控制的通信技術問題,初步驗證能滿足實際應用需求,而且發(fā)現(xiàn)無連接通信對降低節(jié)點應用復雜性、提高可靠性等方面有一定作用。