趙 晴
葫蘆島市教育局,遼寧葫蘆島 125000
可編程序控制器(PLC)專門用于工業(yè)控制,它的核心是以微處理器的結(jié)構(gòu)為基礎,在硬件結(jié)構(gòu)上和普通的計算機基本一致。它在基本的計算機結(jié)構(gòu)當中,加入了傳統(tǒng)的繼電器控制系統(tǒng),使其具有了高度的可靠性,更好的適應工業(yè)現(xiàn)場的環(huán)境,而且具備了強大的聯(lián)網(wǎng)處理功能,廣泛地應用在工業(yè)控制生產(chǎn)過程中。
微軟的Visual Basic提供了MSComm控件,通過硬件的串行端口傳送和接收數(shù)據(jù),實現(xiàn)了PC機與PLC之間的通信,為可視化程序?qū)LC的控制提供了可能。
本文基于西門子公司生產(chǎn)的S7-200型PLC,應用MSComm控件,編寫了計算機與PLC通訊程序,包括了上位機和下位機相應的程序代碼。提出了應用編程語言實現(xiàn)PC/PLC網(wǎng)絡之間數(shù)據(jù)通信的軟件解決方案,實現(xiàn)了用PC機對PLC的監(jiān)控及控制。
S7-200型PLC可以連接編程器、人機接口設備,甚至連接其他的PLC或PC機,組成PLC網(wǎng)絡,可以實現(xiàn)PC與PLC、PLC與PLC的各種通信功能。同時可以應用PC的管理功能實現(xiàn)對PLC的編程、監(jiān)控和聯(lián)網(wǎng)的功能。S7-200系列PLC具有9針的RS-485接口,可以通過PC/PPI電纜與計算機連接,PLC之間可以通過SINEC-L2接口連接成PLC網(wǎng)絡。
S7-200系列PLC主要有兩種通信模式:一種為點對點(PPI)通信協(xié)議模式,用在PLC與編程器或人機接口產(chǎn)品之間通訊;另一種是自由口通訊模式,此模式對用戶完全開放,用戶可以自行設定通訊協(xié)議,使用程序控制串行通訊接口。
其中PPI通信模式需要在PLC的停止方式(STOP)下通信;自由口通訊模式要在PLC運行方式(RUN)下通訊。本文選用靈活性更高的自由口模式。在此模式下,可以通過發(fā)送中斷、接收中斷、發(fā)送指令和接收指令等命令控制串行通訊口的工作,用戶可以自行設置通訊控制協(xié)議。把SMB30(端口0)和SMB130(端口1)的協(xié)議選擇區(qū)置1,允許自由端口模式,通過SMB30和SMB130設置波特率與奇偶校驗位。
通過S7-200系列PLC的可編程通訊端口模式可以實現(xiàn)很多復雜的通信功能。即可以組建成PLC網(wǎng)絡進行PLC的多機通信,也可以組建成PC和多PLC的PLC監(jiān)控通信網(wǎng)絡,以及利用電信網(wǎng)絡建立PC和多PLC的遠程通信網(wǎng)絡。
PLC存儲器中的數(shù)據(jù)通過中斷方式發(fā)送到上位PC機,下面是相應的程序:
LD SM0.1
MOVB 16# 09,SMB30 ;首次掃描時為PLC初始化自由端口,數(shù)據(jù)格式為9600波特率,8位數(shù)據(jù)位,無校驗
MOVB 100,SMB34;采用定時器中斷0
MOVB 1,VB100 ;發(fā)送字節(jié)數(shù)為1
ENI;允許進行中斷
ATCH INT 0, 10;
以下為部分中斷程序:
LD SM0.0
MOVB 120,VB101;PC機發(fā)送的數(shù)據(jù)
XMT VB100,0;向PC機發(fā)送數(shù)據(jù),用0號端口,采用定時中斷。
在PC機上,編寫程序?qū)崿F(xiàn)PC與PLC的通訊。本文采用Visual Basic語言編寫PLC與計算機間通訊程序的程序界面,控制程序部分應用MSComm控件,程序中通過設置控件的屬性值和檢查控件的事件來完成數(shù)據(jù)的發(fā)送和接收工作。
MSComm控件采用檢測方法和事件驅(qū)動方法處理事件:程序檢測方法可以在需要時通過檢查CommEvent屬性的值來檢測事件和通訊錯誤,這種方法常用作非實時環(huán)境中,用來檢測設備的某些響應情況。如果處于實時性要求高的場合,這種方法會占用CPU的運行時間,達不到實時控制的要求;事件驅(qū)動方法通過對OnComm控件事件的捕獲處理通信事件,當接收到新的數(shù)據(jù)或者檢測到通訊端口的狀態(tài)發(fā)生了改變就會引發(fā)OnComm事件,應用程序捕獲到這個事件并對其進行相應的處理,OnComm事件也可以用來捕獲和處理通信中的錯誤。
PLC與計算機的通訊程序分為三個部分:初始化程序、發(fā)送程序和接收程序。
初始化程序設置通訊端口,可以選擇串口1或串口2等等;設置發(fā)送和接收的波特率、有無校驗位、設置數(shù)據(jù)位和停止位,一般情況下波特率選擇9.6k或19.2k,無校驗,8位數(shù)據(jù)位和1位停止位;將MSComm的InputMode置1,使得接收類型為二進制數(shù)據(jù);將RThreshold屬性置1,控件接收到一個字節(jié)數(shù)據(jù)就會觸發(fā)OnComm()事件;清空發(fā)送緩沖區(qū)和接收緩沖區(qū)。
發(fā)送程序的數(shù)據(jù)格式:起始字符為0,結(jié)束字符為十六進制數(shù)&HFF,無校驗。
接收程序通過MSComm控件的OnComm事件觸發(fā)運行。由于PLC只有接收到PC機發(fā)送的信息后才開始發(fā)送數(shù)據(jù),PC機在發(fā)送完成后如果OnComm事件被觸發(fā),就把接收到的第一個字節(jié)數(shù)據(jù)作為接收報文的開始,一直到串口再沒有接收事件作為報文的結(jié)束。
運行PLC和PC機的程序,計算機和PLC能夠互相發(fā)送和接收數(shù)據(jù),實現(xiàn)了PC和PLC之間的串行通訊功能。
本文應用VB語言的MSComm控件,通過可視化編程語言在PC機與PLC網(wǎng)絡中實現(xiàn)了PC與PLC之間的數(shù)據(jù)通信,達到了應用PC機對工業(yè)自動化現(xiàn)場中PLC設備的監(jiān)控和管理,在對PLC控制系統(tǒng)的調(diào)試過程中,縮短了調(diào)試周期,提高了工作效率。
此通信技術對西門子S7-200系列PLC及其他西門子工業(yè)控制產(chǎn)品的應用有著普遍的意義。
[1]范逸之.Visual Basic與分布式監(jiān)控系統(tǒng)-RS232/485串行通信[M].北京:清華大學出版社,2002.
[2]Gofton P W.精通串行通信[M].北京:電子工業(yè)出版社,1995.
[3]蔣學潤.基于VB的數(shù)據(jù)采集智能模塊與上位機串行通信的實現(xiàn)[J].自動化與儀表,2003(6):61.