摘 要:根據(jù)#新開發(fā)的#新一代 PDS8 壓力變送器對總線的要求,開發(fā)基于 FF 協(xié)議的通信卡,該通信卡支持雙 CPU 通訊,提供 6mA/3.3V ,并支持多種 FF 標(biāo)準(zhǔn)功能塊。 本文介紹 FF 通信卡開發(fā)流程和開發(fā)工具,重點(diǎn)闡述用戶應(yīng)用程序的開發(fā)。開發(fā)完成后使用 NI-FBUS 在線功能調(diào)試,結(jié)果表明基于 FF 協(xié)議的 PDS8 壓力變送器實(shí)現(xiàn)了雙 CPU 通訊功能。
基于 FF 協(xié)議的壓力變送器通信卡軟件的開發(fā)
引言
基金會(huì)現(xiàn)場總線( FF )是一種全數(shù)字化、串行的、雙向的、多站點(diǎn)式的通訊系統(tǒng)。它以 ISO/OSI 模型為基礎(chǔ),取 OSI 的物理層、數(shù)據(jù)鏈路層、應(yīng)用層為 FF 通信模型的相應(yīng)層次,并在應(yīng)用層上增加了用戶層。 用戶層主要針對自動(dòng)化測控應(yīng)用的需求,定義了用戶通訊需求, 并采用設(shè)備描述語言規(guī)定了通用的功能塊集。FF 總線包括 H1-FF 和 HSE-FF 總線, 前者為低速總線,波特率為 31.25kbps ,支持過程控制應(yīng)用;后者為高速總線,可達(dá) 100Mbps ,用于高性能控制、子系統(tǒng)集成、高密度數(shù)據(jù)生成,并支持?jǐn)?shù)據(jù)服務(wù)器。本文針對#新一代PDS8 壓力變送器開發(fā)相應(yīng)的 H1-FF 通信卡軟件部分。
1 軟件設(shè)計(jì)
利用中科博微提供的協(xié)議棧基于 AT91SAM7 系列 MPU 進(jìn)行開發(fā), 采用 NUCLEUS plus 操作系統(tǒng)平臺(tái)。 在已經(jīng)開發(fā)好了的底層接口和協(xié)議棧的物理層、鏈路層、網(wǎng)絡(luò)層上,開發(fā)其應(yīng)用層。 硬件平臺(tái)同期正在開發(fā)中,預(yù)計(jì)與軟件開發(fā)同時(shí)完成。 儀表卡采用測控公司#新一代 PDS8 壓力變送器, 因此只需完成儀表與通信卡之間的雙 CPU 通訊、通訊卡與 FF 通訊的開發(fā)即可。 雙卡之間采用串行通押么完成信息傳遞,由通訊卡完成與 FF 總線的通訊,從而使 PDS8 變送器具備總線現(xiàn)場儀表的基本功能。
1.1 開發(fā)流程
通訊卡軟件開發(fā)分為固件開發(fā)和設(shè)備描述開發(fā)。
固件開發(fā)主要?jiǎng)?chuàng)建通訊卡各功能塊,并定義轉(zhuǎn)換塊結(jié)構(gòu)體、視圖對象、塊參數(shù)描述表,編寫讀寫函數(shù)、報(bào)警函數(shù)、模式轉(zhuǎn)換函數(shù)等,然后采用某種協(xié)議與儀表卡進(jìn)行數(shù)據(jù)通訊。
設(shè)備描述開發(fā)是對設(shè)備 DD 文件和 CFF 文件的開發(fā), DD 文件經(jīng)過編譯后生成 .sym 和 .ffo 文件, 然后在固件開發(fā)中添加位于 .sym 中的參數(shù) ID 號(hào), #后利用在線調(diào)試工具 NI-FBUS 對加載 CFF 文件和 sym 和 .ffo 文件進(jìn)行調(diào)試。
固件開發(fā)完成后直接燒寫在通信卡上,連接儀表卡即可使用,而設(shè)備描述開發(fā)多用于可視化在線調(diào)試時(shí)加載使用,它們之間的關(guān)系如圖 1 所示。
各個(gè)階段使用的開發(fā)工具和編譯工具不同。 固件開發(fā)使用 Source Insight 開發(fā), Green Hills 編譯, JLINK下載; CFF 文件使用文本開發(fā)、 DD 文件采用 DD Edit開發(fā), DD_IDE 集成環(huán)境編譯,通過 NI-FBUS 加載。 按圖 1 進(jìn)行調(diào)試環(huán)境配置并調(diào)試。
1.2 開發(fā)重點(diǎn)
用戶應(yīng)用程序基于協(xié)議棧實(shí)現(xiàn)雙 CPU 通訊和儀表與通訊卡之間的數(shù)據(jù)傳遞。 根據(jù)函數(shù)功能的不同劃分為兩部分:用戶執(zhí)行函數(shù)、轉(zhuǎn)換塊執(zhí)行函數(shù)。
1.2.1 用戶執(zhí)行函數(shù)
用戶執(zhí)行程序主要任務(wù)是根據(jù)指令進(jìn)行雙 CPU通訊,其具體流程(如圖 2 所示):
( 1 )與儀表卡進(jìn)行初始化握手。
( 2 )當(dāng)握手成功后,分段讀取儀表參數(shù)(因?yàn)閮x表參數(shù)地址不連續(xù))。
( 3 )當(dāng)?shù)匾麓巫x取儀表參數(shù)完成后,進(jìn)入等待狀態(tài),同時(shí)檢測相應(yīng)參數(shù)修改標(biāo)志位是否改變,若改變則對參數(shù)下達(dá)修改命令進(jìn)行修改,#后讀取循環(huán)變量參數(shù),并刷新儀表參數(shù)。
1.2.2 轉(zhuǎn)換塊執(zhí)行函數(shù)
轉(zhuǎn)換塊執(zhí)行函數(shù)任務(wù)是對轉(zhuǎn)換塊的模式進(jìn)行計(jì)算、報(bào)警條件監(jiān)測、觸發(fā)報(bào)警后發(fā)送報(bào)警以及將儀表卡參數(shù)傳遞給轉(zhuǎn)換塊等。轉(zhuǎn)換塊執(zhí)行流程(如圖 3 所示):
( 1 )報(bào)警監(jiān)測以及發(fā)送 OS 報(bào)警。 判斷資源塊狀態(tài)和目標(biāo)模式,當(dāng)觸發(fā)報(bào)警后,調(diào)用 TB_ENTER_OS 函數(shù)進(jìn)入 OS 模式,設(shè)置 BLOCK_ERR 參數(shù)為 OS ,清除報(bào)警信息并發(fā)送功能塊 OS 報(bào)警。 此時(shí)測量主值和次值狀況為 OS 狀態(tài)。
( 2 )報(bào)警確認(rèn)。 當(dāng) FBShell 接收到報(bào)警接收設(shè)備的報(bào)警確認(rèn)后, 調(diào)用 FB_Alm_Comfirm 函數(shù)確認(rèn)服務(wù)并設(shè)置報(bào)警參數(shù)。如將報(bào)警計(jì)數(shù)器減 1 ,設(shè)置報(bào)警參數(shù)的狀態(tài)為“激活 - 已經(jīng)發(fā)送”、“清除 - 已經(jīng)發(fā)送”或者“更新 - 已經(jīng)發(fā)送”。
( 3 )退出 OS 報(bào)警。 當(dāng)目標(biāo)模式為 AUTO 模式時(shí),功能塊退出 OS 模式,檢查靜態(tài)版本號(hào),判斷是否需要發(fā)送事件更新報(bào)警, 并設(shè)置 BLOCK_ERR 參數(shù)清除OS 模式,將儀表參數(shù)傳遞給轉(zhuǎn)換塊參數(shù)。
2 下載與調(diào)試
完成通訊卡開發(fā)后,使用 Green Hills Multi 集成開環(huán)境進(jìn)行編譯,然后運(yùn)行 make_round_release_bin.bat腳本文件連接 FBShell 庫和操作系統(tǒng)庫, 生成 bin 文件,將 bin 文件通過 JLink 下載至通訊卡上,#后連接儀表卡后使用在線組態(tài)調(diào)試工具 NI-FBUS 進(jìn)行調(diào)試。
3 結(jié)語
經(jīng)過 NI-FBUS 組態(tài)調(diào)試工具調(diào)試后,儀表卡與通訊卡之間通訊正常,并且可進(jìn)行參數(shù)讀寫、參數(shù)傳遞、儀表地址修改、儀表校準(zhǔn)等操作,這表明整體設(shè)計(jì)方案具有可行性。 這款 FF 壓力變送器將經(jīng)過認(rèn)證進(jìn)入實(shí)際應(yīng)用中。