微波EDA网,见证研发工程师的成长! 2025婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚悢铏圭<闁靛繒濮甸悘宥夋⒑缁嬪潡顎楁い锔诲灦閳ワ箓宕稿Δ浣告疂闂傚倸鐗婄粙鎴︼綖瀹€鈧槐鎾存媴閸濆嫮褰欓梺鎼炲劀閸滀礁鏅i梻浣筋嚙鐎涒晝绮欓幒鏇熸噷闂佽绻愬ù姘跺储婵傚憡绠掓繝鐢靛Т閿曘倝骞婃惔銏㈩洸闁诡垼鐏旀惔銊ョ倞鐟滄繈鐓鈧埞鎴﹀灳瀹曞洤鐓熼悗瑙勬礈閸犳牠銆佸鈧幃娆忣啅椤旈敮鍋撻幘顔解拻闁稿本鐟чˇ锕傛煙鐠囇呯瘈闁诡喚鍏樻俊鐤槼鐎规洖寮堕幈銊ヮ渻鐠囪弓澹曢柣搴㈩問閸犳牠鈥﹂悜钘夋瀬闁归偊鍘肩欢鐐测攽閻樻彃顏撮柛姘嚇濮婄粯鎷呴悷閭﹀殝缂備浇顕ч崐姝岀亱濡炪倖鎸鹃崐锝呪槈閵忕姷顦板銈嗘尵婵兘鏁嶅⿰鍫熲拺缂備焦锚婵箓鏌涢幘瀵告噰鐎规洘绻堟俊鍫曞幢濞嗘埈鍟庣紓浣鸿檸閸欏啴藟閹捐泛濮柍褜鍓熼幃妤€鈻撻崹顔界亪濡炪値鍘鹃崗姗€鐛崘顔碱潊闁靛牆鎳庣粣娑欑節閻㈤潧孝閻庢凹鍠涢崐鎾⒒閸屾艾鈧绮堟笟鈧獮澶愭晸閻樿尙顔囬梺绯曞墲缁嬫垵顔忓┑鍥ヤ簻闁哄啫鍊婚幗鍌炴煕閻旈攱鍣界紒杈ㄦ崌瀹曟帒顫濋钘変壕闁归棿绀佺壕褰掓煟閹达絽袚闁搞倕瀚伴弻銈夊箹娴h閿梺鎼炲妽濮婂綊濡甸崟顖氱闁告鍋熸禒濂告⒑閹肩偛濡奸柛濠傛健瀵鈽夐姀鈺傛櫇闂佹寧绻傚Λ娑⑺囬妷鈺傗拺闁芥ê顦弳鐔兼煕閻樺磭澧电€殿喖顭峰鎾偄閾忚鍟庨梻浣虹帛閸旓箓宕滃鑸靛仧闁哄洢鍨洪埛鎴犵磼鐎n偒鍎ラ柛搴$箲娣囧﹪顢曢敐鍥╃杽閻庢鍠涢褔鍩ユ径濠庢僵妞ゆ劧绲芥刊浼存⒒娴e憡鍟為柟绋挎閸┾偓妞ゆ巻鍋撻崡閬嶆煕椤愶絿绠ユ繛鎾愁煼閺屾洟宕煎┑鍥ф畻闂佺粯绋掔划鎾诲蓟閻旂厧绀勯柕鍫濇椤忥拷04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻宥夊煛娴e憡娈查梺缁樼箖濞茬喎顫忕紒妯诲闁芥ê锛嶉幘缁樼叆婵﹩鍘规禍婊堟煥閺冨浂鍤欓柡瀣ㄥ€楃槐鎺撴綇閵婏富妫冮悗娈垮枟閹歌櫕鎱ㄩ埀顒勬煃闁款垰浜鹃梺褰掝棑缁垳鎹㈠☉娆愮秶闁告挆鍛呮艾鈹戦悙鍙夊珔缂佹彃娼″顐︻敊鐏忔牗顫嶉梺闈涢獜缁辨洟宕㈤柆宥嗏拺闁告繂瀚弳濠囨煕鐎n偅灏扮紒缁樼洴閹崇娀顢楅埀顒勫几濞戙垺鐓熸繛鎴濆船濞呭秶鈧鍠曠划娆撱€佸Ο娆炬Ъ闂佸搫鎳忕换鍫濐潖濞差亝顥堟繛鎴炶壘椤e搫鈹戦悙棰濆殝缂佽尪娉曢崚鎺楊敇閻旈绐炴繝鐢靛Т鐎涒晝鈧潧鐭傚娲濞戞艾顣哄┑鈽嗗亝缁嬫帡寮查崼鏇熺劶鐎广儱妫涢崢閬嶆煟鎼搭垳绉甸柛鎾寸懄缁傛帡鏌嗗鍡欏幍濡炪倖娲栧Λ娑氬姬閳ь剚绻濈喊澶岀?闁稿繑锕㈠畷娲晸閻樿尙锛滃┑鐘诧工閸燁偆绮诲ú顏呪拻闁稿本鐟чˇ锕傛煙绾板崬浜滈悡銈夋煏婵炵偓娅呯痪鍓х帛缁绘盯骞嬪▎蹇曚患闂佺粯甯掗悘姘跺Φ閸曨垰绠抽柛鈩冦仦婢规洘绻濋悽闈浶涢柛瀣崌濮婃椽顢楅埀顒傜矓閹绢喗鍊块柛顭戝亖娴滄粓鏌熼崫鍕ラ柛蹇撶焸閺屾盯鎮㈤崫銉ュ绩闂佸搫鐬奸崰鏍х暦濞嗘挸围闁糕剝顨忔导锟�11闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻宥夊煛娴e憡娈查梺缁樼箖閻楃姴顫忕紒妯肩懝闁逞屽墴閸┾偓妞ゆ帒鍊告禒婊堟煠濞茶鐏¢柡鍛埣楠炲秹顢欓崜褝绱叉俊鐐€栧ú鏍涘☉銏犵濞寸厧鐡ㄩ幊姘舵煛瀹ュ海浜圭憸鐗堝笚閺呮煡鏌涢銈呮珡濞寸姭鏅涢—鍐Χ閸℃ǚ鎷瑰┑鐐跺皺閸犲酣锝炶箛鎾佹椽顢旈崨顓濈敾闂備浇顫夐鏍窗濡ゅ懎绠熷┑鍌氭啞閳锋垿鏌ゆ慨鎰偓鏇㈠几閸岀偞鐓曢幖杈剧稻閺嗩剚顨ラ悙鎻掓殭妞ゎ偅绮撻崺鈧い鎺戝閺勩儵鏌ㄩ悢鍝勑㈢紒鈧崘鈹夸簻闊洦鎸婚敍鏃傜磼鏉堛劎鍙€婵﹦绮幏鍛存惞閻熸壆顐奸梻浣藉吹閸犲棝宕归挊澶屾殾闁硅揪绠戠粻鑽ょ磽娴h疮缂氶柛姗€浜跺娲濞淬劌缍婂畷鏇㈠箮閽樺妲梺鎸庣箓濞茬娀宕戦幘鏂ユ灁闁割煈鍠楅悘鍫濐渻閵堝骸寮柡鈧潏銊р攳濠电姴娲ょ粻鐟懊归敐鍛喐闁告ɑ鎮傚铏圭矙閹稿孩鎷遍梺娲诲弾閸犳岸鎳炴潏銊ь浄閻庯綆鍋€閹风粯绻涙潏鍓у埌闁硅櫕鐟ㄩ妵鎰板箳閹存繄褰夋俊鐐€栫敮鎺楀磹婵犳碍鍎楁繛鍡樻尰閻撴瑩寮堕崼鐔峰姢闁伙附绮撻弻鈩冩媴缁嬪簱鍋撻崸妤€钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷� 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劌銈搁弻鐔兼儌閸濄儳袦闂佸搫鐭夌紞渚€銆佸鈧幃娆撳箹椤撶噥妫ч梻鍌欑窔濞佳兾涘▎鎴炴殰闁圭儤顨愮紞鏍ㄧ節闂堟侗鍎愰柡鍛叀閺屾稑鈽夐崡鐐差潻濡炪們鍎查懝楣冨煘閹寸偛绠犻梺绋匡攻椤ㄥ棝骞堥妸鈺傚€婚柦妯侯槺閿涙盯姊虹紒妯哄闁稿簺鍊濆畷鎴犫偓锝庡枟閻撶喐淇婇婵嗗惞婵犫偓娴犲鐓冪憸婊堝礂濞戞碍顐芥慨姗嗗墻閸ゆ洟鏌熺紒銏犳灈妞ゎ偄鎳橀弻锝呂熼懡銈呯仼闂佹悶鍎崝搴ㄥ储闁秵鐓熼煫鍥ㄦ礀娴犳粌顭胯缁瑩骞冮敓鐙€鏁嶆慨妯垮亹閸炵敻鏌i悢鍝ユ噧閻庢凹鍘剧划鍫ュ焵椤掑嫭鈷戦悗鍦濞兼劙鏌涢妸銉﹀仴闁靛棔绀侀埢搴ㄥ箣閻樼绱查梻浣筋潐閸庤櫕鏅舵惔锝囩幓婵°倕鎳忛埛鎺懨归敐鍛暈闁哥喓鍋為妵鍕敇閻愭惌妫﹂悗瑙勬礃閿曘垽寮幇鏉垮耿婵炲棗鑻禍鐐箾瀹割喕绨奸柛濠傜仛椤ㄣ儵鎮欓懠顑胯檸闂佸憡姊圭喊宥囨崲濞戙垺鍤戞い鎺嗗亾闁宠鐗忛埀顒冾潐濞叉﹢宕归崸妤冨祦婵せ鍋撻柟铏矒濡啫鈽夊▎鎴斿亾椤撱垺鈷掑ù锝呮啞閸熺偞绻涚拠褏鐣电€规洘绮岄埥澶愬閳╁啯鐝繝鐢靛仦閸垶宕瑰ú顏勭厱闁硅揪闄勯悡鏇熺箾閹寸們姘舵儑鐎n偆绠鹃柛顐ゅ枑缁€鈧梺瀹狀潐閸ㄥ潡骞冨▎鎴炲珰鐟滄垿宕ラ锔解拺閻犲洠鈧櫕鐏嗛梺鍛婎殕婵炲﹪濡存担鍓叉僵閻犻缚娅i崝锕€顪冮妶鍡楀潑闁稿鎹囬弻锝夋晲閸パ冨箣閻庤娲栭妶绋款嚕閹绢喖惟闁挎棁濮ら悵婊勭節閻㈤潧袨闁搞劎鍘ч埢鏂库槈閵忊晜鏅為梺绯曞墲閵囨盯寮稿澶嬪€堕柣鎰礋閹烘缁╁ù鐘差儐閻撶喐淇婇婵囶仩濞寸姵鐩弻锟犲幢韫囨梹鐝旈梺瀹狀潐閸ㄥ潡銆佸▎鎾村殟闁靛鍎遍弨顓熶繆閵堝洤啸闁稿鐩弫鍐Ψ閵夘喖娈梺鍛婃处閸ㄦ壆绮诲☉娆嶄簻闁圭儤鍨垫禍鎵磼闁秳鎲炬慨濠勭帛閹峰懐绮电€n偆绉烽柣搴ゎ潐濞叉﹢鏁冮姀銈冣偓浣割潩閹颁焦鈻岄梻浣告惈鐞氼偊宕濋幋鐐扮箚闁割偅娲栭獮銏ゆ煛閸モ晛啸闁伙綁绠栧缁樼瑹閳ь剙岣胯閹囧幢濞嗗苯浜炬慨妯煎帶閻忥妇鈧娲橀〃鍛存偩濠靛绀嬫い鎺戝€搁獮鍫熺節閻㈤潧浠滄俊顐n殘閹广垽骞嬩綅婢舵劕顫呴柍鈺佸暙瀵寧绻濋悽闈浶㈤柟鍐茬箻椤㈡棃鎮╅悽鐢碉紲闁哄鐗勯崝宀€绮幒妤佹嚉闁挎繂顦伴悡鐘测攽椤旇棄濮囬柍褜鍏欓崐鏇炲祫濡炪倖甯掔€氼參鍩涢幒鎳ㄥ綊鏁愰崨顔兼畼閻熸粎澧楃敮妤呭疾濠靛鐓忛柛顐g箖鐎氬懘鏌ら弶鎸庡仴婵﹥妞介、妤呭焵椤掑倻鐭撻柟缁㈠枟閸婂潡鏌涢…鎴濅簴濞存粍绮撻弻鐔煎传閸曨厜銉╂煕韫囨挾鐒搁柡灞剧洴閹垽宕妷銉ョ哗闂備礁鎼惉濂稿窗閺嵮呮殾婵炲棙鎸稿洿闂佺硶鍓濋〃蹇斿閿燂拷濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌涘☉姗堟敾闁告瑥绻橀弻锝夊箣閿濆棭妫勯梺鍝勵儎缁舵岸寮诲☉妯锋婵鐗婇弫楣冩⒑閸涘﹦鎳冪紒缁橈耿瀵鏁愭径濠勵吅闂佹寧绻傚Λ顓炍涢崟顖涒拺闁告繂瀚烽崕搴g磼閼搁潧鍝虹€殿喖顭烽幃銏ゅ礂鐏忔牗瀚介梺璇查叄濞佳勭珶婵犲伣锝夘敊閸撗咃紲闂佽鍨庨崘锝嗗瘱缂傚倷绶¢崳顕€宕归幎钘夌闁靛繒濮Σ鍫ユ煏韫囨洖啸妞ゆ挸鎼埞鎴︽倷閸欏妫炵紓浣虹帛鐢绮嬮幒鎾卞亝闁告劏鏂侀幏铏圭磽娴e壊鍎愭い鎴炵懇瀹曟洖顓兼径瀣幈婵犵數濮撮崯鎵不閻愮鍋撳▓鍨灈妞ゎ厼鍢查锝夊箻椤旇棄浜滈梺鎯х箺椤曟牠宕惔銊︾厽闁绘柨鎽滈惌濠勭磼婢跺本鍤€闁伙絿鍏橀、娑㈡倻閸℃ɑ娅囬梻浣瑰濡礁螞閸曨垰鐒垫い鎺戝暞绾箖鏌嶇憴鍕伌闁诡喒鏅犲畷锝嗗緞婵犲孩袩闂傚倷鐒︽繛濠囧绩闁秴鍨傞柛褎顨呴拑鐔兼煟閺冨洦顏犻柣顓熺懇閺岀喓绮欓崹顕呭妷閻庤娲栫壕顓犳閹惧瓨濯撮柛婵嗗珔閿濆鐓欑紒瀣儥閻撶厧鈹戦敍鍕毈鐎规洜鍠栭、娑樷槈濞嗘劗褰嗛梻浣藉吹婵潙煤閳哄啩鐒婃繛鍡樺姉椤╅攱銇勯弽銊х煂缁炬崘妫勯妴鎺戭潩椤掍焦鎮欓梺鍝勵儐缁嬫帡濡甸崟顖f晣闁绘ɑ褰冮獮瀣⒑闂堟稒顥欑紒鈧笟鈧崺銉﹀緞閹邦剦娼婇梺鐐藉劜閺嬪ジ宕戦幘缁樺€婚柤鎭掑劚閳ь剛鏁婚弻锝夊閵忊槅浠梺鑽ゅ枛閸嬪﹪宕甸弴銏$厵闁诡垱婢樿闂佹娊鏀辩敮鎺楁箒闂佹寧绻傞悧濠囶敂閻樼粯鍋ㄦい鏍ㄧ〒閳洜绱掔紒妯兼创鐎规洩绲惧鍕沪鐟欙絾瀚查梺璇叉唉椤煤濮椻偓瀹曟繂鈻庤箛鏇熸闂佺粯鍨归悺鏃堝极閸ャ劎绠鹃柟瀵镐紳閸忚偐鐝堕柡鍥╁亹閺€鑺ャ亜閺冨倻娉㈢紓鍌涘哺閺屾稓鈧綆鍋呯亸鐢告煃瑜滈崜姘舵偄椤掑嫬绠柨鐕傛嫹
首页 > 硬件设计 > MCU和DSP > 嵌入式系统中BACnet-MS/TP协议栈的实现

嵌入式系统中BACnet-MS/TP协议栈的实现

时间:06-28 来源:传动网 点击:
1 引言

  20世纪90年代,Internet经历了爆炸性发展,成为垄断全球的计算机网络。以Cisco和Sun为代表的一批公司借助这一浪潮发展成为世界上顶尖的大公司。而在智能建筑领域,也正在重现这一过程。上世纪80年代,直接数字控制器(DDC)的出现大大改善了建筑控制系统的精度和灵活性。但随着智能建筑涉及领域的不断延伸,如HVAC、照明、消防、安防等等领域,分立式控制设备已经不能满足设备间互操作和系统间通讯的需求;另一方面,随着建筑控制系统的集成度越来越高,不仅要求一栋楼宇或者一个小区的设备之间可以通讯,甚至地区、国家乃至全球的控制设备之间都可以进行通讯。因此,建立一个可以在异构系统、不同厂商设备之间的通讯机制,成为建筑智能化的迫切需求。BACnet协议就在这样一种情况下应运而生了。

2 BACnet协议介绍

  BACnet是专门为建筑自动控制网络制定的一种数据通信协议,最初由美国制冷采暖空调工程师协会(简称ASHRAE)于1995年制定。其最根本的目的是要提供给建筑自动控制系统实现互操作的方法。所谓互操作是指一种能力,可以使得分布的控制系统设备通过相关信息的数字交换,能够协调地工作,从而完成一个共同的目标。BACnet解决了建筑自控系统中存在的多厂商系统和设备不兼容而难以集成的问题,提供了不同建筑自动控制系统实现互操作的方法,有望成为控制网络中的TCP/IP协议。2003年1月,BACnet成为正式的国际标准(ISO 16484标准)。

BACnet有以下特点:

  ·开放性:是美国现行的国家标准和ISO国际标准。

  ·面向对象:BACnet协议采用面向对象的技术,因此具有可扩展性和可复用性。

  ·互操作性:ASHRAE的BACnet委员会提出了一种新的描述自动控制系统功能性的方法,称为"互操作域(Interoperability Areas)",其中规定了5个互操作域,分别是:数据共享、报警和事件管理、时序安排、趋势记录、设备与网络管理。

2.1 BACnet体系结构

  BACnet以OSI模型为参考,结合建筑自动控制领域的实际需求,形成了一个简化模型。BACnet充分利用现有成熟的网络技术,在底层兼容5种网络结构,降低了开发成本,同时也利于系统集成。

2.2 应用层

  应用层协议数据单元(APDU)传送包含在应用服务原语和相关参数中的信息。因为BACnet采用简化的OSI体系结构,不包含任何表示层的功能,必须预先定义好通信设备一致遵守的编码规则。BACnet的编码规则设计考虑到了楼宇自动控制体系对简单化、紧凑化的要求。因此,这个编码规则在一些方面与ISO 8825有所不同。但是仍然允许使用ASN.1对BACnet的APDU进行编码。

2.3 网络层

  网络层提供网络路由功能,使得报文可以被直接传递到一个远程设备、一个远程网络上的所有设备、或者所有网络上的所有设备。一个BACnet设备由一个网络号码和一个MAC地址唯一确定。由于BACnet协议规定两个BACnet设备之间只能有一条有效路径,这个限制大大降低了网络层的复杂性,简化了路由算法。

2.4 数据链路层(MS/TP)

  数据链路层负责将报文从一个设备传送到另一个单独设备,或者所有本地网设备。在本文中,只讨论MS/TP网络。MS/TP使用主/从令牌来控制对总线网络的访问。MS/TP协议向上为网络层提供与ISO 8802-2逻辑链路控制协议一样的服务;向下使用EIA-485物理层提供的服务。

3 程序实现

3.1 协议栈软件结构

  在高端机器(如工作站)上,我们可以很好地利用C++语言的面向对象特性,完整实现整个BACnet协议栈。但在低端MCU上,程序空间和数据空间非常有限,因此需要尽可能简化协议栈软件的体系结构。同时根据不同型号的DDC,对协议栈软件进行剪裁配置。图2(略)表示了协议栈软件中各个模块之间的接口关系。在整个结构中最复杂的是应用层模块,包含BACnet对象模块,基本数据类型模块,APDU解析/分发模块和APDU组装模块。

3.2 应用层模块

  BACnet协议为了简化其层次结构,使得BACnet应用层涵盖了开放系统互联参考模型(OSI)中会话层、表示层和应用层的功能。BACnet应用层模块是BACnet应用软件的基础,它实现BACnet协议应用层内容,负责提供工作站的各功能模块与物理设备直接的通信服务。根据应用层的功能分析,可以将应用层划分为如下几个模块:对象模块、服务模块、基本数据类型模块。

  对象模块定义了BACnet对象。BACnet对象按其功能可分为两类:一类是采集数据的对象,如模拟输入/输出对象,这类对象需要访问设备硬件;另一类对象是在采集的数据基础上完成复杂功能,如环对象以及其他实现报警事件功能的对象,这类对象不需访问硬件。另外,某些对象的属性(如趋势登录对象的缓存器大小属性)需要设备厂商根据DDC型号进行初始配置,协议栈提供对这些属性的配置函数接口。

  服务模块用于处理报文的分发、解析和组装。对于从网络层上来的APDU,服务模块根据APDU的类型和服务选择参数,调用相应的服务解析模块。服务解析模块对APDU的信息进行解码,并根据需要与DDC中的BACnet对象进行交互。另一方面,DDC会发出响应报文(如读属性响应),或者主动发出某些报文(如事件与报警服务),因此服务模块还提供服务报文组装的函数接口。

  基本数据类型模块是一个工具类库,包含对基本数据类型的定义及其编、解码函数。BACnet包含13种应用数据类型以及其他基本数据类型。BACnet应用数据类型可以直接进行编、解码。BACnet基本数据类型对应着ASN.1中的复合数据类型,它是由BACnet应用数据类型配合标记按照一定的结构组合而成。因此,基本数据类型的编/解码实际上是按一定的规则调用应用数据类型以及标记的编/解码方法来实现的。

3.3 网络层模块

  对于DDC来说,网络层向应用层提供一个不确认的无连接数据单元传输服务。网络层与应用层交互的服务原语是网络层数据单元请求(N-UNITDATA.request)和网络层数据单元指示(N-UNITDATA.indication)。其原语参数如下:
N-UNITDATA.request(destination_address, data, network_priority,data_expecting_reply)

N-UNITDATA.indication(source_address, destination_address,data, network_priority,data_expecting_reply)

  当DDC收到来自链路层数据,解析出相应的地址信息,并把地址信息和APDU绑定起来存放到一个结构中传送给应用层,这样当应用层需要回复报文时可以得到目标地址。

3.4 数据链路层(MS/TP)模块

  MS/TP是一个主从/令牌传递的数据链路协议,物理层采用RS-485半双工通信标准。MS/TP层包含两个状态机,分别是主节点状态机和接收帧状态机;接收帧状态机负责帧的接收,如是数据帧则调用与网络层接口上传给网络层,主节点状态机负责帧(包括数据帧和控制帧)的发送。两个状态机分时实现,根据两者之间的关系,接收帧状态机可放在主节点状态机中统一调度。图3(略) BACnet数据链路层模块结构图,图3显示了BACnet数据链路层的子模块:其中,接收模块实现接收帧状态机;发送模块实现主节点状态机;串口控制模块实现串口驱动与收发控制,串口读写采用中断方式;

  网络层接口模块定义接口及接口函数调用模块,使用服务原语DL_UNITDATA.request()和DL_UNITDATA.indication()来实现。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top