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