任慧,趙博,彭景
(1.中國傳媒大學信息與通信工程學院,北京 100024;2.視聽技術與智能控制系統文化和旅游部重點實驗室,北京 100024;3.現代演藝技術北京市重點實驗室,北京 100024)
劇院是一個用來表演話劇、歌劇、歌舞等文化藝術活動的場所,在文娛活動演出期間,室內舞臺設備和機械的運行、相關人員的密集流動都會導致劇院室內噪聲、溫度、相對濕度和二氧化碳等環境參數的變化擾動。上述環境參數的變化會直接影響表演者的心理、身體狀態,觀演者的觀看感受,進而影響整個劇院演出效果。為保障劇院的演出效果和觀眾的觀看感受,國家在《劇場建筑設計規范》(JGJ 57-2016)中對劇院室內的一些環境參數制定了相關標準,如在設有空氣調節的劇院內,夏季室內相對濕度應在40%-70%之間,溫度應在24 ℃-28 ℃之間,穩定狀態下二氧化碳的允許濃度小于0.25%,對于升降樂池及臺口內舞臺設備運行時的噪聲,在觀眾席第一排中部應小于60dB(A)。此外,對于目前配置復雜、規模大、精度高、高度集成化、自動化和信息化的舞臺設備來說,合適的劇院室內環境是其安全穩定運行以及保證演出安全和人身安全的必要條件[1]。
目前,國內外對于劇院室內環境參數的測試只有單點、單一且非自動、非實時的手持式設備,還未有綜合的多參數自動測試系統。因此,針對此問題,本文以STM32F407ZGT6微控制器的主控電路、LCD液晶顯示觸摸屏、RS485通信接口、環境傳感器以及Modbus RTU通信協議、UCSOII操作系統、LWIP網絡協議棧等軟硬件為基礎,研究設計了劇院觀演空間環境參數自動測試系統。
系統總體硬件結構如圖1 所示,其工作原理是主控電路按照Modbus RTU通信協議與RS485通信接口相連的四個CO2、溫濕度一體化傳感器和四個噪聲傳感器進行通信,RS485通信接口負責轉發主控電路的下傳命令和傳感器的上傳數據,主控電路收到由傳感器發送來的環境數據后進行處理和轉換,并將其顯示在LCD液晶屏上。屏幕共設置6個顯示頁面,第1頁為開機界面,第二頁為劇院環境參數選擇頁面,其余4頁分別對應相對濕度、溫度、二氧化碳濃度和噪聲分貝值的界面顯示,通過觸摸屏實現不同頁面間切換。同時,主控電路可以通過以太網或串口(RS232標準)的方式直接或間接的將環境數據向上傳送給具有以太網接口的上位機系統進行集中管理、遠程監控和數據存儲等。
圖1 系統總體硬件結構圖
主控電路結構如圖2所示,STM32F407ZGT6是主控電路的核心,它是完全圍繞ARM Cortex-M4內核構建的微控制器,有著非常豐富的資源,如集成FPU和DSP指令、192KB SRAM、1024KB FLASH、12個16位定時器、位定時器、2個32位定時器、10/100M以太網MAC控制器、FSMC以及各種常用通信接口等,集高性能與低功耗于一身,從而為計算機應用提供了很好的解決方案。
圖2 主控電路結構圖
由于STM32F407ZGT6內部存儲資源有限,且系統的軟件設計需要移植UCOSII操作系統和LWIP協議棧,所以為了滿足系統的運行內存需求和字庫存儲,主控電路中加入了1MByte SRAM和128Mbit FLASH。同時為了方便下載程序代碼和調試,板載了SWD接口電路。
因為主控電路要通過RS485接口與傳感器通信,并且可以將采集到的環境數據通過以太網傳輸到上位機進行進行集中管理、遠程監控和數據存儲,所以在設計主控電路時需要包含RS485接口電路和以太網接口電路,并且增設了一個RS232接口電路以增加數據傳輸接口的多樣性。
LCD接口用于外接顯示環境參數的LCD液晶顯示觸摸屏,觸摸控制顯示屏的翻頁,LED用于指示電源狀態和程序運行狀態,引出的SPI、IIC等I/O口用于增加更多的外部設備。
Modbus 是一種串行的、非同步的通訊協議和全球通用的工業標準,此協議無需特別的接口,典型的物理接口是RS485[2]。通過此協議,控制器相互之間、控制器經由網絡和其它設備之間可以通信,不同廠商生產的控制設備可以連成工業網絡,進行集中監控[3]。Modbus協議規定了主節點的請求的格式、功能碼、錯誤檢測域等。
控制器通信使用主-從技術,即僅主設備能初始化傳輸(查詢),從設備根據主設備查詢提供的數據作出相應反應。Modbus 協議建立了主設備查詢的格式:設備地址、功能代碼、所有要發送的數據、錯誤檢測域。主-從查詢、回應周期如圖3所示。
圖3 主-從查詢、回應周期圖
RTU(遠程終端單元)是Modbus的兩種傳輸模式之一,當控制器設為在Modbus網絡上以RTU模式通信,消息中的每個8Bit字節包含兩個4Bit的十六進制字符。其數據幀如表1所示。
表1 RTU數據幀
使用RTU 模式,消息發送至少要以3.5 個字符時間的停頓間隔開始,在最后一個傳輸字符之后,至少3.5個字符時間的停頓標志著傳輸的結束。
整個消息幀的傳輸必須連續進行。
標準的Modbus協議有兩種錯誤檢測方法:奇偶校驗和幀檢測(LRC、CRC),RTU模式下,消息幀包含了基于CRC方法的錯誤檢測域,CRC域是兩個字節,是一個16 位的二進制值。它由傳輸設備計算后加入到消息中,接收設備收到消息后重新計算CRC,并與接收到的CRC 域中的值比較,如果兩值不同,則有誤。
3.2.1 UCOSII操作系統
本系統移植了UCOSII操作系統,UCOSII由Micrium 公司提供,是一個可移植、可固化、可裁剪、可固化、執行效率高、占用空間小、搶占式多任務實時內核,它適用于多種微處理器,微控制器和數字處理芯片,該系統源代碼開放整潔、一致,注釋詳盡,適合系統開發[4]。UCOSII最多可以管理60個任務,可以供用戶使用的任務數最多為56個。
UCOSII的軟硬件體系結構如圖4所示,主要分為應用層、中間軟件層和硬件層,中間軟件層為UCOSII源碼內容,移植工作需要結合其體系結構進行,具體步驟為:移植準備(基礎工程、UCOSII源碼下載)?在基礎工程中按圖4中間軟件層的分類建立UCOSII相關文件夾?UCOSII源碼分類存入文件夾?UCOSII有關文件加入到工程中?屏蔽ucos_ii.h 中 的app_cfg.h,添 加includes.h ?屏 蔽stm32f4xx_it.c 中的中斷服務函數SysTick_Handler、PendSV_Handler?開啟sys.h中支持os的宏定義SYSTEM_SUPPORT_OS。經過以上步驟,可完成UCOSII的移植。
圖4 UCOSII軟硬件體系結構圖
3.2.2 LWIP協議棧
LWIP協議棧是瑞典計算機科學院的Adam Dunkeis開發的一個小型開源的TCP/IP 協議棧,LWIP 是Light Weight(輕型)IP 協議,即可以運行操作系統上,也可以運行于無操作系統環境[5]。因為它只需要很小的RAM和ROM便可運行,所以適合在中低端嵌入式系統中使用。LWIP提供RAW、SOCKET和NETCONN三種接口方式。本系統采用的接口方式為有操作系統的NETCONN API。
LWIP1.4.1版本的源碼內容如圖5所示,其中src文件夾是移植的重點,該文件夾由api、core、include、netif四個文件夾組成。api文件夾里面是SequentialAPI以及Socket API兩種接口函數的源碼,core文件夾里面是LWIP內核源碼,include文件夾里面是LWIP相關的頭文件,netif文件夾里面是與網絡底層接口有關的頭文件。
圖5 lwip1.4.1源碼內容
有操作系統LWIP的移植步驟具體為:移植準備工作(基礎工程、LWIP文件下載、ST以太網庫)?添加及修改ST以太網庫?添加網卡驅動程序?LWIP數據包和網絡接口管理?添加LWIP源文件?添加及修改arch、lwip_comm等中間文件?LWIP源碼修改?LWIP的裁剪與配置。經過以上步驟,可完成LWIP的移植。
3.3.1 UCOSII用戶任務設計
本系統共設計了六個UCOSII用戶任務,任務參數如表2所示,其中TCPSERVER任務用于創建TCP服務器線程,LWIP_DHCP用于獲取動態IP地址、子網掩碼以及默認網關等,GET_DATA任務用于實現傳感器數據獲取與處理、觸摸檢測翻頁、TCP傳輸數據處理等功能,TCP任務用于實現LWIP初始化、TCP服務器初始化、DHCP任務等,LED任務用于檢測系統運行情況,START任務用于創建GET_DATA、TCP、LED任務。
表2 任務參數
3.3.2 系統主程序設計
系統首先進行HAL庫、時鐘、延時、USART、USMART、LED、RS485、觸摸屏、外部SRAM、外部FLASH、內存池等相關功能和外設的初始化,然后對UCOSII初始化,初始化成功后創建START任務,最后開啟UCOSII。主程序流程圖如圖6所示。
圖6 主程序流程圖
3.3.3 系統功能模塊程序設計
(1)基于Modbus RTU協議的RS485通信程序
根據Modbus RTU協議主設備的查詢格式,依次將設備地址、功能代碼、所有要發送的數據,CRC校驗函數計算的校驗值存入發送數組,在發送命令后,依據數據段長度的不同分別將接收到的且校驗無誤的溫濕度、CO2和噪聲數據存入不同的緩存數組。具體通信流程如圖7所示。
圖7 RS485通信流程圖
(2)傳感器數據獲取與處理程序
八個傳感器的地址碼依次被設定為01H-08H,依據地址碼八個傳感器分別被編號為0-7,前四個為溫濕度、CO2傳感器,后四個為噪聲傳感器。當傳感器編號小于4時,將獲取到的原始數據存入以太網發送數組,將處理后的數據依次存入濕度、溫度、CO2和CRC數組,當傳感器編號大于4時,將獲取到的原始數據存入以太網發送數組,將處理后的數據依次存入噪聲和CRC數組。具體流程如圖8所示。
圖8 傳感器數據獲取與處理流程圖
(3)TCP連接與數據傳輸程序
為了節省CPU資源,加快運行速度,經由以太網向上位機傳輸的環境數據需要先經過緩存處理,當緩存完一次采集的所有傳感器數據時(72個字節)下位機將數據打包后(加入CRC校驗)發送到上位機進行分析、圖形化顯示和存儲,發送過程是在TCP服務器線程進行的,其具體流程如圖9所示。
圖9 TCP連接與數據傳輸流程圖
(4)LCD顯示程序
根據功能需求,系統共設計了開機、參數種類選擇、濕度、溫度、CO2、噪聲界面六個界面,界面頁數依次被設定為0-5,界面的選擇顯示由界面頁數確定,其具體顯示方式和過程如圖10所示。
圖10 LCD顯示流程圖
(5)觸摸檢測翻頁程序
本系統在觸摸屏上共設定了“進入系統”、“濕度”、“溫度”、“CO2”“噪聲”、“返回”等六個觸摸按鍵,當在相應界面觸摸按鍵被按下時,系統會執行界面跳轉動作,具體觸摸控制流程如圖11所示。
圖11 觸摸檢測翻頁流程圖
(6)串口數據傳輸程序
當獲取到一個傳感器采集的環境參數時,經RS232標準串口傳輸數據的過程如圖12所示,串口依據傳感器編號是否大于4 選擇發送溫濕度、CO2數據或噪聲數據。
圖12 串口數據傳輸流程圖
目前,對于國內外劇院觀演空間沒有完整的環境參數自動測試系統,本文采用先進的ARM嵌入式技術將多個環境參數進行了集成化、自動化測試,填補了國內外劇院環境多參數自動測試的空白。系統調試結果表明,實現了操作便捷、功能齊全的要求,具有較高的可靠性、穩定性和擴展性,可以很好的完成劇院觀演空間環境參數自動測試任務。本系統的研究,對劇院觀演空間環境的實時監測提供了有效的參考數據,保障了劇院演出效果,具有一定的實用價值。