1 引言
可編程控制器(plc)由于其結構緊湊、可靠性高、編程簡單、指令強大、靈活性強、能適用于比較惡劣環境等諸多優點,現已在工業控制領域得到廣泛應用。現普遍采用觸摸屏加plc的方法來監控設備,但觸摸屏視角窄,不適應惡劣環境,且數據存儲容量有限,不易實現大規模網絡互聯。因此我們采用plc與計算機通訊的方式實現實時監控,克服了觸摸屏的缺點。
2 s7-200 cpu自由口通訊方式的應用
世界知名品牌的plc很多,如西門子、歐姆龍、松下、三菱等等,本人僅以西門子s7-200小型可編程控制器的cpu22×系列為例,介紹plc在計算機網絡中與計算機通訊的功能。
s7-200 cpu支持多樣的通訊功能,根據所使用的s7-200 cpu,其網絡可以支持一個或多個以下協議:
點到點(point-to-point)接口(ppi)
多點接口(multi-point)(mpi)
profibus
用戶定義協議(自由口)
自由口通訊是通過用戶程序可以控制s7-200 cpu通訊口的操作模式。利用自由口模式,可以實現用戶定義的通訊協議連接多種智能設備。通過使用接收中斷、發送中斷、發送指令和接收指令,用戶程序控制通訊口操作。在自由口通訊模式下,通訊協議完全由用戶程序控制。通過smb30(口0)允許自由口模式,而且只有在cpu處于run模式時才能允許。當cpu出于stop模式時,自由口通訊停止,通訊口轉換成正常的ppi協議操作。
近年來,隨著我國鐵路運輸環境的改善,列車速度越來越高,勢必對鐵道車輛提出較高的要求,其表現在對列車的舒適性和運行可靠性、安全性的要求提高,因此車輛上設備的自動化程度越來越高。自動化程度的提高,帶動了網絡技術在列車控制和監控上的應用。車輛網絡控制、監控簡圖如圖1所示。
整列車設有車輛級計算機,每個車廂設有本車計算機,車輛級計算機與各個本車計算機組成車輛的主網,本車計算機與本車廂內的各個設備間組成子網。plc由于其自身的優點,作為控制核心在車輛上的多種設備中得以應用,例如列車自動門的控制、列車空調機的控制等,使其可以作為整個列車網絡系統中的一個節點。
3 通訊協議
siemens s7-200系列plc可以采用用戶定義通訊協議(自由口)模式實現計算機與plc、plc與plc的通訊。筆者所描述的例子中,雖然車輛計算機系統和車輛上的其它設備分別是多個設備供應商的產品,但是只要制定好通訊協議,就能滿足相互通訊的要求。s7-200系列的plc正是由于其自由口通訊是通過用戶程序控制cpu串行通訊口的操作模式,所以可以方便地與車輛計算機通訊。
計算機(主站)每隔100ms查詢plc(從站)一次,主站發出從站動作控制命令給從站,從站收到命令后發給主站應答幀,從站接收到主站發送來的一幀數據,計算出其校驗碼fcs,與接收到的一幀數據中的fcs比較,檢查是否有數據錯誤。如果有數據有誤,從站發送信息給主站,請求重發。
l 字符結構:每個字符由11位構成,奇偶校驗位采用奇校驗方式。
起始位 數據 奇偶校驗位 停止位
1位 8位 d7…d0 1位 1位
l 傳輸數據幀格式
byte(0)…byte(n) fcs
byte(0)…byte(n)為字符串;
fcs為異或校驗碼,是發送的所有數據字節和地址字節之異或值。
l 主站命令幀結構
從站地址 從站地址補碼 控制字節 命令字節 fcs
l 從站應答幀結構
從站地址 從站地址補碼 控制字節 應答字節 fcs
4 通訊口初始化
plc內部特殊存儲器位smb30和smb130分別配置通訊端口0和1,為自由端口通訊選擇波特率、奇偶校驗和數據位數。自由端口的控制字節描述如表1所示。
例如:在通訊協議中規定奇偶校驗為奇校驗、每個字符的數據為8位、波特率為19200、自由口協議,采用通訊端口0,則在plc初始化程序中將smb30賦值為0c5h。
例://串口初始化
┋
network 7
ld sm0.0
movb 16#c5, smb30 //波特率為19200奇校驗 //1起始位1停止位8數據位
eni //允許中斷
movb 2, smb34
movb 20, smb35
atch int_0, 8
┋
5 plc實時數據處理
由于s7-200系列plc在自由口模式下,通訊協議完全由梯形圖程序或stl編輯器控制,程序可以使用接收中斷、發送中斷、發送指令和接收指令來控制通訊操作。cpu連續掃描用戶程序,執行用戶任務。plc在程序執行過程中,基于穩定、快速靈活等方面考慮,cpu每個掃描周期都通過輸入輸出映像寄存器來執行實際輸入輸出操作,即讀實際輸入點值到映像寄存器、寫映像寄存器值到實際輸出點。由于在中斷中不能順利進行數據讀寫操作,因此,可通過編程,利用plc循環掃描執行程序的特點,使得在程序掃描期間實現數據存儲區與輸入輸出映像寄存器區交換數據。
在本實例中,plc上電初始化后轉入接收字符中斷,當上位機發出查詢命令后,plc判斷所發命令的地址和地址補碼是否正確;如果正確判斷上位機是向plc發送命令還是查詢plc狀態;如果執行命令則plc轉入主程序執行相關命令,如果查詢plc狀態則將協議定義的信息發送給上位機,上位機收到信息后發送應答幀給plc。
例:interrupt0 //接收開始
network 1
ldn sm3.0
ab= smb2, vb0
movw +0, ac0
movd &vb600, vd638
movb smb2, *vd638
xorw smw1, ac0
movb ac0, vb300
atch int_1, 8
atch int_6, 11
creti
network 2
ld sm0.0
dtch 8
atch int_6, 10
interrupt1 //接收地址補碼
network 1
ldn sm3.0
an sm1.0
movb smb2, *vd638
xorw smw1, ac0
network 2
ld sm0.0
atch int_6, 10
interrupt2 //接收命令后判斷
┋
network 3 //發送信息
ldw= ac2, +0
ab= vb301, vb604
ab= vb603, 16#00
atch int_4, 10
dtch 11
creti
network 4
ld sm0.0
wdr
┋
network 7
ld sm0.0
s m31.0, 1
dtch 11
atch int_5, 10
interrupt3 //接收應答字節
network 1
ldn sm3.0
an sm1.0
movb smb2, *vd638
incd vd638
xorw smw1, ac0
decw ac2
network 2
ldw= ac2, 16#0000
movw ac0, vw300
network 3
ld sm0.0
dtch 8
atch int_6, 10
interrupt4 //發送信息碼
┋
network 6
ld sm0.0
movw ac0, vw105
xmt vb100, 0
atch int_6, 9
┋
interrupt5 //發送應答幟
┋
network 9
ld sm0.0
movw ac0, vw105
xmt vb100, 0
r m31.0, 1
atch int_6, 9
┋
interrupt6 //轉入接受中斷
network 1
ld sm0.0
dtch 9
dtch 10
dtch 11
atch int_0, 8
6 計算機實時數據處理
計算機程序由車輛級網絡供應商提供,根據雙方制定的通訊協議,通常采用vb或vc編寫,在此不做詳細描述。
7 結束語
從以上敘述可以看到,由車輛計算機與plc(或其它智能可編程設備)組建的車輛級實時監控系統關鍵在于解決計算機與plc的實時通訊、plc對車上設備狀態實時監控的問題。通過這種方式組建的車輛實時監控系統,只是在原有的設備控制器軟件內增加了通訊程序,所以并沒有增加設備供應商的成本,因此這種監控系統的開發成本低,而且實時性好、操作簡單、通用性強。再利用計算機易組網的功能,實現了整列車的實時監控,大大提供了列車行駛中的可靠性和安全性,因此這種網絡系統在旅客列車、特別是高速列車上已普遍使用。