0 引言
在過程控制中,由于工業(yè)現(xiàn)場非常分散,,I/O點數眾多,,各種儀表的工作環(huán)境非常惡劣,采用數據采集卡和LabVIEW開發(fā)平臺來完成現(xiàn)場的數據采集和控制顯然不可取,。考慮到過程控制中的過程參數變化不是很快,,而PLC恰恰可以克服數據采集卡在過程控制中的不足,,并且
具有較高的性價比,因而采取以PLC為下位機,,以裝有LabVIEW軟件的工控機為上位機開發(fā)平臺。通過RS-232和RS-485串口與PLC通信,實現(xiàn)對工業(yè)現(xiàn)場的監(jiān)控與現(xiàn)場數據的分析,。本文根據這個思想設計了一個工業(yè)遠程監(jiān)控系統(tǒng),,上位機采用PC機,下位機采用西門子PLC S7-200,。介紹了一種在LabVIEW 8.6平臺上開發(fā)PC機和PLC實時監(jiān)控的軟件的編程方法,,在此基礎上構建了基于PLC的主從式虛擬儀器測控系統(tǒng)。
1 系統(tǒng)構成與自由口通信模式
1.1 PC與PLC的通信方式
S7-200 CPU上的通信口是與RS-485兼容的9針D型連接器,。PLC還提供了實現(xiàn)RS-485與PC機上RS-232相連接的PC/PPI電纜,,可以方便地實現(xiàn)S7系列PLC與PC之間的硬件連接。圖1是PC與PLC通信的示意圖,,利用主機上的232串口,,通過RS232-RS485轉換模塊與PLC相連。系統(tǒng)中如果應用多個PLC模塊或其他具有RS485串行通信能力的設備,,亦可方便地聯(lián)網或構成網絡測控系統(tǒng),。
1.2 PC與PLC的通信協(xié)議
西門子S7-200系列的PLC可以在四種通信模式下工作:PPI、MPI,、PROFIBUS-DP和自由口通信模式,。自由口通信模式是由用戶程序來控制CPU的串口通信。用戶可以利用發(fā)送/接收中斷,、發(fā)送/接收指令來控制通信的操作,,實現(xiàn)與打印機、條形碼閱讀器等設備的通信,。
本文主機與PLC之間串行通信采用的是自由通信協(xié)議,。該協(xié)議采用主從結構的通信方式,,傳輸模式是RTU,,適用于半雙工的RS485總線。協(xié)議規(guī)定總線上有一個主機,,多個從機,,每個從機分配惟一的地址。工作時可以采用命令應答的通信方式,,每一種命令幀對應著一種應答幀,。主機向要訪問的從機發(fā)出命令幀,地址匹配的從機做出響應,,向主機發(fā)出命令幀對應的應答幀,。自由通信協(xié)議中,為命令幀定義了許多功能碼,,不同的功能碼要求從機進行不同的響應,。PLC在將傳感器信號轉換為數據后將其存儲在變量存儲區(qū)的固定區(qū)域。此時PLC的串口一直處于接收狀態(tài),直到接收到來自上位機的讀命令后,,轉為發(fā)送狀態(tài),,將變量存儲區(qū)中的數據通過串口發(fā)送給上位機??紤]到收發(fā)切換有一定的時間間隔,,所以必須延遲一段時間再轉為發(fā)送數據。
1.3 自由口模式的注意事項
自由口模式通信要注意以下問題:
(1)CPU通信口工作在自由口模式時,,通信口就不支持其它通信協(xié)議,。CPU停止時,自由口不能工作,,編程軟件就可以與CPU通信,。
(2)此通信模式下,發(fā)送和接收指令是程序的核心指令,,用戶程序不能直接控制通訊芯片而必須通過操作系統(tǒng),。
(3)用戶程序中應考慮電纜的切換時間。CPU接收到RS-232設備的請求到它發(fā)送響應的延遲時間必須大于等于電纜的切換時間,,可用定時中斷實現(xiàn)切換延時,。
(4)在自由口模式下,通信雙方的通信參數是由用戶自行設定的,,通信雙方的波特率一定要設置相同,。另外,在PLC網絡中主站個數越少,,通信速度越快:波特率越大,,通信速度也越快,,但抗干擾能力降低,。因此對于本系統(tǒng)這種單主站的網絡,要注意波特率不宜設置得過大,。
2 虛擬儀器程序設計
LabVIEW是美國國家儀器公司開發(fā)的虛擬儀器開發(fā)平臺軟件,,功能強大、靈活,,廣泛應用于自動測量系統(tǒng)以及工業(yè)過程自動化等各個領域,。
在LabVIEW編程語言中串口通信采用虛擬儀器體系結構VISA (Virtual Instrument Software Architecture)標準編程。VISA是儀器驅動的一個工業(yè)標準,,其內部是一個面向對象的結構,,這一結構使得VISA和在它之前的I/O控制軟件相比,在接口無關性,、可擴展性方面都有很大提高,。VISA標準的推出,統(tǒng)一了儀器工業(yè)的軟件接口標準,使得儀器驅動程序兼容性強并且可適應未來軟硬件的發(fā)展需要,。
2.1 LabVIEW中的串口通信函數
(1)VISA配置串口,。該函數主要用于串口的初始化。主要參數如圖2所示,。
其中“VISA資源名稱”指定要打開的資源,。該控件也可指定會話句柄和類。“波特率”是傳輸速率,,默認值為9600,。“數據比特”是輸入數據的位數,默認值為8,。“奇偶”指定要傳輸或接收的每一幀所使用的奇偶校驗,。“停止位”指定用于表示幀結束的停止位的數量。“流控制”設置傳輸機制使用的控制類型,。“VISA資源名稱輸出”是由VISA函數返回的VISA資源名稱的副本,。
(2)VISA讀取函數。該函數為串口讀取子程序,,從串行設備讀取數據,,為后續(xù)的數據處理提供條件。主要參數如圖3,。
其中“字節(jié)總數”是要讀取的字節(jié)數量,。“讀取緩沖區(qū)”包含從設備讀取的數據。“返回數”包含實際讀取的字節(jié)數,。
(3)VISA寫入函數,。該函數為串口寫子程序,用于對串口設備進行寫操作,。主要參數如圖4所示,。
其中“寫入緩沖區(qū)”包含要寫入設備的數據。“返回數”包含實際寫入的字節(jié)數,。
此外,,LabVIEW中與串口通信有關的還有VISA關閉函數與VISA串口字節(jié)數函數,,分別用于關閉串行設備的任務或事件和計算進入串口緩存區(qū)中的數據字節(jié)數,。
2.2 LabVIEW與PLC串口通信實現(xiàn)
按照通信協(xié)議使用專用的九芯插頭和PC/PPI電纜,將PC機的COM1口與S7-200的自由通信口直接連接,。由于電纜上帶有RS-232/RS485電平轉換器,,連接十分方便。LabVIEW進行串口通信的基本步驟為:
(1)初始化端口,。利用VISA配置串口函數設定進行串口通信的端口號,、波特率、停止位、校驗,、數據位,。
(2)讀寫端口。利用VISA讀串口函數和VISA寫串口函數從串口中讀入或輸出數據,。由于LabVIEW的串行通信子程序只允許對字符串的讀寫,,因此在數據處理時,必須進行字符串與數字之間的正確轉換,。
(3)關閉端口,。當對串口操作完成后,需要關閉串口,,以釋放硬件資源,。
3 串口通信實現(xiàn)
按照上述過程,設計了監(jiān)控系統(tǒng)程序,,程序框圖與前面板分別如圖5,、圖6所示。
其中PC機與PLC串口通信程序結構分為3個部分:
(1)串口初始化,。根據通信協(xié)議設定,,通信端口:COM1,波特率:9600bps,,1位起始位,,8位數據位,1位停止位,,無奇偶校驗,,無軟件握手協(xié)議。
(2)發(fā)送命令和讀取響應將命令通過串口COM1發(fā)給PLC,,并接收來自PLC的響應信息,,如果響應正常(狀態(tài)信息為O1或02),就將所得數據做顯示,、計算分析,、存儲等后續(xù)處理,以便用于設備實時控制和在線狀態(tài)監(jiān)測,;如果響應不正常則退出程序(03或04),,用戶重新輸入命令開始工作。
(3)關閉串口,。調用LabVIEW提供的VISA關閉串口函數實現(xiàn)串口資源的釋放,。
當程序運行時,LabVIEW首先向PLC發(fā)出一個讀請求,,然后檢測輸入緩存中的字節(jié)數,;當達到預定字節(jié)數時,,LabVIEW利用讀串口函數將輸入緩存中的字節(jié)一次性讀出,然后繼續(xù)發(fā)出一個讀請求到PLC,。如此循環(huán),,直至結束。本程序還采用了狀態(tài)機的方法進行狀態(tài)的判斷和選擇,。
4 結論
PLC自由口通信方式具有與外圍設備通信方便,、自由,易于微機控制等特點,,這一通信方式被越來越多的監(jiān)控系統(tǒng)所采用,。利用PC機或工控機的串口,按照自由通信協(xié)議,,結合地址映射技術在LabVIEW平臺上開發(fā)出串行通信模塊,,可以很方便地實現(xiàn)主機與PLC的串行通信,對PLC的內存單元進行讀寫操作,,從而實現(xiàn)對PLC的監(jiān)控,。本文所提出的設計能夠方便地應用于基于PLC的工業(yè)監(jiān)控,具有開發(fā)方便,、擴展靈活的優(yōu)點,。