有一種Modus協(xié)議設計為了把玻璃管液位計模塊設計,對這一模塊中的RS485接口電路進行了介紹。分析了這一玻璃管液位計模塊設計的通信方式,對內部程序進行了介紹,并進行了輸入輸出測試。將所設計的玻璃管液位計模塊設計應用于十字滑臺電氣控制,取得了良好的效果。
1 設計背景
傳統(tǒng)玻璃管液位計系統(tǒng)中,常用可編程序控制器控制步進驅動器或伺服驅動器,進而實現(xiàn)運動控制。但是,可編程序控制器較難實現(xiàn)復雜的運動軌跡控制。隨著嵌入式技術日趨完善,各類ARM處理器在玻璃管液位計中被廣泛應用。筆者應用ARMSTM32F407芯片,基于Modbus協(xié)議設計了一種玻璃管液位計模塊設計[1-2]。這一模塊具有數(shù)字量輸入采集、數(shù)字量輸出控制和高速脈沖輸出功能,能夠通過內部程序來控制步進驅動器或伺服驅動器,實現(xiàn)復雜的運動軌跡控制。
2 硬件設計
所設計的玻璃管液位計模塊設計結構如圖1所示,采用ARMSTM32F407芯片作為控制核心,應用MAX485芯片實現(xiàn)RS485通信[3],應用EL357芯片實現(xiàn)輸入信號和輸出信號的隔離[]。這一玻璃管液位計模塊設計可以接收16位開關型輸入信號,控制7路輸出,能夠實現(xiàn)4路高速脈沖控制。
2.1RS485接口電路
所設計的玻璃管液位計模塊設計有兩路RS485通信接口。RS485接口電路采用MAX485芯片,如圖2所示。電路不發(fā)送數(shù)據時,TXD1為高電平,三極管Q1導通,RE為低電平使能,RO端接收數(shù)據,MAX485芯片處于接收狀態(tài)。電路發(fā)送數(shù)據時,TXD1由高電平變?yōu)榈碗娖?,時間長短與通信速率有關,三極管Q1截止,MAX485芯片處于發(fā)送狀態(tài)。
2.2輸入輸出口
輸入信號電路如圖3所示。EX0為玻璃管液位計模塊設計的開關量輸入信號端。EX0輸入信號經過電路處理后,產生輸出信號X0。X0接ARMSTM32F407芯片的引腳,為玻璃管液位計模塊設計內部程序提供輸入信號。采用EL357芯片完成外部設備輸入信號與ARMSTM32F407芯片接口信號之間的隔離,提高模塊的抗干擾能力。
輸出信號電路如圖4所示。SignalY0為ARMSTM32F407芯片引腳所產生的輸出信號。SignalY0信號經過電路處理后,變?yōu)椋希酰簦?信號。OutY0信號連接輸出驅動電路,產生實際的輸出控制信號。輸出端也采用EL357芯片進行信號隔離。
2.3 高速脈沖信號
所設計的玻璃管液位計模塊設計,其高速脈沖信號直接由ARMSTM32F407芯片生成,通過接線端子與外部電路相連。
3 通信方式
這一玻璃管液位計模塊設計基于Modbus協(xié)議的遠程終端(RTU)模式設計,按客戶端模式進行工作。上位機包括觸摸屏、工控機等,可以發(fā)送0X01~0X04指令,使輸入端口(X端口)、輸出端口(Y端口)的狀態(tài)數(shù)據反饋至上位機。上位機也可以使用0X05、0X06、0X0F和0X10指令實現(xiàn)輸出端口通斷控制和模塊內部寄存器數(shù)據設定功能。上位機與模塊之間的數(shù)據通信采用串口通道接發(fā)數(shù)據幀來實現(xiàn)。每一個指令都有特定的符合Modbus協(xié)議的數(shù)據幀格式,數(shù)據幀采用Hex編碼。
4 軟件設計
所設計的玻璃管液位計模塊設計,其內部程序可以分為四部分———系統(tǒng)初始化、數(shù)據接收、數(shù)據分析與執(zhí)行、數(shù)據反饋,其中系統(tǒng)初始化包括端口初始化和通信口初始化[5-7]。
內部程序結構如圖5所示。
模塊通電后,自動進入系統(tǒng)初始化程序,初始化ARMSTM32F407芯片各引腳狀態(tài),讀取芯片存儲數(shù)據,恢復至前一次斷電前狀態(tài)。同時完成模塊的通信參數(shù)設置,如將傳輸速率設置為19200bit/s等,并開始連續(xù)監(jiān)聽通信口,等待上位機發(fā)送控制指令。當上位機發(fā)送控制指令數(shù)據幀后,模塊讀取數(shù)據幀。接收數(shù)據幀后,通過循環(huán)冗余校驗碼判斷數(shù)據是否有效。如果無效,那么程序返回通信口監(jiān)聽狀態(tài)。如果接收數(shù)據有效,那么對數(shù)據的地址進行判斷。如果發(fā)送來的地址與模塊設置的地址不相同,那么程序返回通信口監(jiān)聽狀態(tài)。如果發(fā)送來的地址與模塊設置的地址相同,那么模塊程序對發(fā)送來的數(shù)據幀進行數(shù)據分析與提取,對比模塊內部芯片內存中的指令庫,按對比結果執(zhí)行相應的功能。執(zhí)行功能完成后,模塊程序將執(zhí)行結果數(shù)據通過通信口以數(shù)據幀的格式反饋至上位機。
5 測試
ModbusPoll是一種基于Modbus協(xié)議的服務端模擬器[8],可以作為上位機測試和調試客戶端,支持遠程終端模式、美國信息交換標準碼,以及傳輸控制協(xié)議和網際協(xié)議[9]。筆者將ModbusPoll作為上位機對所設計的玻璃管液位計模塊設計進行測試。模塊接線如圖6所示,通過這一接線,可以實現(xiàn)兩路輸入信號采集和中間繼電器控制。
5.1 輸入測試
二線制傳感器和三線制傳感器都處于工作狀態(tài)時,模塊的X0端口和X1端口有高電平輸入。其余X2~X15端口都處于低電平狀態(tài)。此時,使用ModbusPoll的TestCenter界面輸入數(shù)據幀01020000001079C6。其中,01為模塊地址,02表示讀?。囟丝跔顟B(tài)指令,0000表示讀取端口起始地址,即X0端口地址,0010表示一次性讀?。保段唬囟丝跔顟B(tài),79C6為循環(huán)冗余校驗碼[10]。接收到以上數(shù)據幀,模塊在執(zhí)行0X02指令后返回數(shù)據幀01020203B948,其中,01為模塊地址,前一個02表示X端口狀態(tài)指令,后一個02表示兩個字節(jié),03表示X0和X1端口有信號,B948為循環(huán)冗余校驗碼。
5.2 輸出測試
模塊控制中間繼電器KA1線圈通電時,使用ModbusPoll的TestCenter界面輸入數(shù)據幀01050000FF008C3A,Y0端口輸出高電平,其余Y1~Y6端口為低電平,模塊返回數(shù)據幀01050000FF008C3A。返回的數(shù)據幀中,01為模塊地址。05表示執(zhí)行0X05指令,即控制單個輸出端口。0000表示控制端口為Y0,如需要控制Y1,則數(shù)據幀為0001,依次類推。FF00表示設置端口為有輸出,如果需要設置端口為無輸出,則數(shù)據幀為0000。8C3A為循環(huán)冗余校驗碼。執(zhí)行Y0輸出指令后,中間繼電器KA1線圈得電,其觸點狀態(tài)發(fā)生改變。如果模塊控制KA1線圈失電,則所發(fā)送的數(shù)據幀為010500000000CDCA。
5.3 高速脈沖控制
當需要有高速脈沖時,上位機使用0X06或0X10指令設置數(shù)據。發(fā)送和接收數(shù)據的過程與使用0X02、0X05指令過程類似,此處不再詳述。
6 應用案例
應用所設計的玻璃管液位計模塊設計進行十字滑臺電氣控制,電氣控制原理如圖7所示。將所設計的玻璃管液位計模塊設計作為核心控制器件,采集十字滑臺傳感器信號、按鈕信號,控制步進驅動器,進而完成對步進電機的控制。十字滑臺X軸、Y軸的前后端限位傳感器信號與模塊的X0、X1、X2、X3輸入端口相連,防止滑臺機械行程超限。-S1啟動按鈕和-S2停止按鈕與模塊的X16、X17輸入端口相連,為模塊提供啟動和停止信號。模塊的Y0輸出端口與十字滑臺X軸步進驅動器的EN+端相連,控制軸步進驅動器工作。模塊的Y1輸出端口與十字滑臺Y軸步進驅動器的EN+端相連,控制Y軸步進驅動器工作。模塊的A_DIR和A_PUL高速脈沖輸出端口向X軸步進驅動器提供控制信號,實現(xiàn)十字滑臺X軸的運動控制。模塊的D_DIR和D_PUL高速脈沖輸出端口向Y軸步進驅動器提供控制信號,實現(xiàn)十字滑臺Y軸的運動控制。模塊具有兩路RS485通信總線,一路與觸摸屏相連。通過觸摸屏,可以設置步進驅動器的X軸、Y軸行程,實時顯示X軸和Y軸前后端傳感器狀態(tài)、電機運行距離、運行次數(shù)等參數(shù)。通過觸摸屏上的啟動和停止按鈕,能夠控制十字滑臺啟動和停止。另一路RS485通信總線可與其它設備相連,用于實現(xiàn)功能擴展。
進行十字滑臺電氣控制時,點擊觸摸屏上的啟動按鈕或按下-S1按鈕,玻璃管液位計模塊設計根據觸摸屏設定的軌跡來控制單個步進驅動器或協(xié)調控制兩個步進驅動器實現(xiàn)十字滑臺的復雜軌跡運行。點擊觸摸屏上的停止按鈕或按下-S2按鈕,玻璃管液位計模塊設計通過內部程序使十字滑臺停止運行。
7 結束語
筆者應用ARMSTM32F407芯片,基于Modbus協(xié)議設計了一種玻璃管液位計模塊設計。ARMSTM32F407芯片具有強大的邏輯運算能力,通過編寫不同程序能快速實現(xiàn)出入與輸出之間復雜的邏輯控制,適用于較為煩瑣的控制場合。通過十字滑臺電氣控制應用案例分析,當您全面了解了相關玻璃管液位計模塊設計具有更高利用工業(yè)儀表上的價值觀。