王清珍,鄔寶寅
(1.鄭州科技學院信息科學與工程系,鄭州450064;2.鄭州科技學院機械工程系,鄭州450064)
現代工業現場控制中,經常采用現場總線結構[1],將各個工業現場設備連接起來,實現設備之間的信息交換。單片機等帶有UART結構的芯片可以用來制造工業現場控制器、智能儀表等設備,這些設備可以通過單片機自帶的UART結構[2]來搭建現場總線,實現相互通信。UART設備廣泛存在于單片機等可編程設備中,這種設備傳輸簡單,具有較高的數據傳輸正確性和準確性,可以實現芯片之間半雙工、雙工異步通信。但僅靠芯片電平的UART設備傳輸距離較近,且只能實現主機、從機之間的通信,不能實現任意兩個設備之間的通信,不完全符合現場總線之間的要求。
為實現現場總線功能,需要設計一套通信協議,實現任意兩個UART設備之間的通信。并且需要采用RS485型電氣接口,提高通信距離。RS485接口是一種工業電氣標準,采用半雙工方式通訊,可以實現較遠距離通信和較高的傳輸速度,抗干擾能力強。該設計將UART設備與RS485接口結合起來,借助相應的通信軟件,可以構建一種現場總線,用于工業現場設備的通訊。
在工業現場的可編程控制系統中,實現無主機的多機通信,每一個模塊本身在系統中既是一個主控模塊,相對于另一個模塊來說又是從模塊。模塊與模塊之間采用RS485工業現場總線通信[3],因此在各模塊的串行通信端口必須增加電平轉換器。每個模塊采用以單片機為中心構成的嵌入式控制模塊,通過串口進行信息傳輸,通過接口芯片MAX487掛載在RS485現場總線上。各模塊通過本文設計的協議在RS485總線上進行穩定的數據傳輸,在整個總線上最多可以接入255個模塊。系統的總線硬件結構如圖1所示。

圖1 總線硬件結構
該通信協議的設計借助了令牌環[4]原理。掛載在總線上的每一個設備,都有唯一的一個地址,并存儲有下位設備的地址。總線上的設備常態下處于從控狀態,可以接收。擁有令牌標志的設備處于主控狀態,可以向需要傳送數據的目標設備發送數據,完畢之后將令牌標志傳送給下位設備。這樣可以保證在任一時刻只有一個設備具有數據發送權,而數據發送權在總線上所有的設備之間循環,使每一個都有向目標設備發送數據的機會。
信息傳輸過程中需要設置一系列的變量和常數。相互通訊的設備之間所傳送的內容有指令和數據兩種情況:所傳輸的是指令則第9位為1,是數據則第9位為0。傳輸指令和標志位的內容如表1、表2所示。通信軟件分從控模式和主控模式兩種情況。

表1 控制字與應答字分配表

表2 標志位含義解析表
從控模式下設備處于接收狀態,可以通過UART中斷運行程序,對接收到的數據做出一系列判斷。接收到的內容有兩種可能,指令或數據,通過串行數據的第九位進行分辨,第九位為1表示指令,為0表示數據。
程序流程圖如圖2所示,接收到的內容若為指令,通過識別判斷指令的內容,結合相應標志位做出動作。在初始狀態下,作為數據接收方,若從控模式設備接收到尋址指令,且指令地址與本地地址相一致,則將地址匹配標志位置位;若接收到數據開始發送指令,且地址已經匹配,則將sm2位清零,數據接收緩存區初始化,做好數據接收準備;若接收到數據傳送結束指令,則將sm2位置位,地址匹配標志位復位,退出接收狀態。若接收到授令牌指令,且地址已經匹配,則將令牌標志置位,開始運行主控模式下的數據發送操作。若接收的內容是數據,且數據允許接收位sm2為0,則將數據存入接收緩存區。

圖2 從控模式程序流程圖
從控模式設備每接收到一次有效指令,都要向主控模式設備做出相應應答,而總線上每次只有唯一的從控模式設備,可以作出應答。在接收和應答相切換時要轉換MAX487芯片的收發狀態。每一次接收都由中斷觸發,發送應答由中斷關閉,可以節省CPU資源。
當設備接收到有效的授令牌指令之后,轉為主控模式,并運行相關程序段。程序流程圖如圖3所示。若主控設備有數據需要向目標設備發送,則按程序流程圖所示過程,依次發送目標設備地址尋址指令,發送數據開始傳送指令,連續發送數據,最后發送數據傳送完畢指令;若主控設備沒有數據需要發送或數據發送完畢,便需要將令牌標志傳給下位機,依次發送下位機地址尋址指令和授令牌指令,退出主控模式。

圖3 主控模式
主控設備每次發送指令之后,都需要等待相應的從控設備發出正確應答,才能開始下一條指令的發送。若在規定時間內沒有收到正確的應答信號,則重復發送指令;當重復發送指令一定次數后還沒有收到正確的應答信號,則認為目標設備不存在,將相應的錯誤標志位置位。
為了簡化程序結構,主控模式運行中UART收發采用查詢方式。
整個系統由若干個模塊組成,模塊之間通過RS485電氣接口相連。在每個模塊上設計人機操作界面,構建了系統后臺數據庫,編寫了各個模塊的數據采集和處理程序[5],建立了模塊與模塊之間的硬件電路,編寫調試了各部分的軟件代碼,提供了實時數據顯示。實現了各模塊數據的自動采集功能,加工處理后的數據能自動存入后臺數據庫中。設計的無主機多機通信模型最多可以連接255個現場可編程控制模塊,可以很方便地實現雙向通信,在通訊協議的支持下系統能自動識別各個功能模塊的功能。本系統結構較簡單,功能較完善,具有一定的實用價值,可以滿足集管分控可編程控制器的通信要求。
[1] 潘世永,鄭萍,等.集散控制系統(DCS)的發展及展望[J].自動化與儀器儀表,2003(4):50-53.
[2] 王清珍.單片機原理及接口技術[M].大連:大連理工大學出版社,2009.
[3] 徐和飛,牛秦洲,等.基于MODBUS協議的開關量控制模塊設計[J].自動化與儀表,2009(10):24-28.
[4] 季燏..基于邏輯令牌環的容錯協議的研究與實現[J].學位論文,2007.
[5] 徐應躍,吳愛國,等.現場總線MAC層的分析[J].化工自化及儀表,2010(2):20-23.