錢 華,曹春泉
(1.蘇州工業(yè)園區(qū)培訓(xùn)管理中心,江蘇 蘇州 215123;2.蘇州工業(yè)園區(qū)職業(yè)技術(shù)學(xué)院,江蘇 蘇州 215123)
隨著工業(yè)控制要求的不斷發(fā)展,上位機(jī)監(jiān)控已經(jīng)成為工廠數(shù)據(jù)采集的一個(gè)重要環(huán)節(jié)。大多數(shù)控制系統(tǒng)都趨向于用通用工程軟件(如 Visual Basic、Visual C++、DELPHI等)編制上位機(jī)監(jiān)控界面。Visual Basic易學(xué)易用,還提供了一套可視化設(shè)計(jì)工具,大大簡(jiǎn)化了程序界面的設(shè)計(jì)工作,同時(shí)其編程系統(tǒng)采用了面向?qū)ο?、事件?qū)動(dòng)機(jī)制,使用Visual Basic可以方便地完成從小的應(yīng)用程序到大型的數(shù)據(jù)庫(kù)管理系統(tǒng)的編程任務(wù)。
本文以三菱FX系列PLC通信為例,利用VB6.0提供的通信控件MSComm,實(shí)現(xiàn)PLC與計(jì)算機(jī)簡(jiǎn)單可靠的通信。
本案例采用PC計(jì)算機(jī)作為上位機(jī),三菱FX系列PLC作為下位機(jī),通過(guò)SC-09電纜使PC計(jì)算機(jī)與PLC連接,采用自由端口模式通信,電纜的一端連在計(jì)算機(jī)串口上,另一端連接在PLC的RS-422編程口。通過(guò)使用自由端口模式的通信方式來(lái)實(shí)現(xiàn)對(duì)PLC寄存器的讀/寫操作。項(xiàng)目選用三菱FX2N-64MR型PLC。系統(tǒng)圖如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)圖
PC與PLC間的通信方式分為同步通信和異步通信兩類。目前主流的通信方式有RS-232、RS-422和RS-485,他們都是串行數(shù)據(jù)接口標(biāo)準(zhǔn),是由美國(guó)電子工業(yè)協(xié)會(huì)EIA制定的一種串行物理接口標(biāo)準(zhǔn),其中最常用的是RS-232通信方式。
本案例采用RS-232的通信格式,在這種情況下需要設(shè)置波特率、奇偶校驗(yàn)位和停止位等參數(shù),只要上位機(jī)和下位機(jī)這些參數(shù)設(shè)置一致就可以通信了。一般設(shè)置波特率為9 600b/s、偶校驗(yàn)、7位數(shù)據(jù)位、1位停止位。但是此種通信方式只能由上位機(jī)發(fā)出命令,PLC響應(yīng)上位機(jī)發(fā)出來(lái)的命令,當(dāng)PLC不能正確響應(yīng)時(shí),PLC返回響應(yīng)錯(cuò)誤標(biāo)志。上位機(jī)發(fā)出的數(shù)據(jù)是以幀為單位發(fā)送和接收的,其格式如表1所示。
表1 數(shù)據(jù)幀格式
通常,一個(gè)數(shù)據(jù)由5部分組成。累加和是從STX后面一個(gè)字節(jié)開(kāi)始累加到ETX的和,取它們ASCII碼所得和的最低二位數(shù)。其中STX對(duì)應(yīng)的16進(jìn)制數(shù)位0x02,是判知傳輸資料的開(kāi)始。命令字是對(duì)下位機(jī)所做動(dòng)作的指示,比如要求讀取或?qū)懭氲?。命令字?jiàn)表2。
表2 命令字
三菱FX PLC在進(jìn)行計(jì)算機(jī)鏈接(專用協(xié)議)和無(wú)協(xié)議通訊(RS指令)時(shí)均須對(duì)通訊格式(D8120)進(jìn)行設(shè)定包括波特率、數(shù)據(jù)長(zhǎng)度、奇偶校驗(yàn)、停止位和協(xié)議格式等。
首先對(duì)D8120采用下述設(shè)置,設(shè)置值為688E。即數(shù)據(jù)長(zhǎng)度為7位,偶校驗(yàn),2位停止位,波特率為9 600b/s,無(wú)標(biāo)題符和終結(jié)符,采用計(jì)算機(jī)鏈接(RS-232C),自動(dòng)添加和校驗(yàn)碼,采用專用協(xié)議格式1,同時(shí)設(shè)定站號(hào)為0。具體設(shè)定如圖2所示。
此外,對(duì)于采用RS485形式1∶N計(jì)算機(jī)鏈接的還必須對(duì)站點(diǎn)號(hào)(D8121)進(jìn)行設(shè)定。設(shè)定的范圍從00H到0FH(即0到15)。
FX PLC進(jìn)行計(jì)算機(jī)鏈接時(shí)可用的專用協(xié)議有格式1和格式4。兩者的差別在于是否在每一個(gè)塊上添加了CR+LF,其中添加了CR+LF的為格式4。本文采用格式1。
圖2 D8120的設(shè)置
本文采用 Microsoft公司的 Visual Basic 6.0中文企業(yè)版編制上位機(jī)程序。Visual Basic中提供了一個(gè)名為MSComm的通信控件便于設(shè)計(jì)串行通信的程序。MSComm控件的主要屬性有:
(1)CommPort屬性:用于指定所要使用的串行端口號(hào)。
(2)Settings屬性:用于設(shè)置初始化參數(shù)。以字符串的形式設(shè)置波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位等4個(gè)參數(shù)。該屬性的設(shè)置必須和三菱PLC中D8120的相關(guān)設(shè)置保持一致。在這里,統(tǒng)一采用“9600,e,7,2”的設(shè)定。
(3)PortOpen屬性:用于設(shè)置通信連接端口的狀態(tài)。在使用串行端口之前必須先將要使用的串行端口打開(kāi)。在上位機(jī)程序中應(yīng)進(jìn)行如下設(shè)定:
Private Sub Form_Load()
MSComm1.CommPort=1'選擇COM1
MSComm1.Settings="9600,e,7,1"'設(shè)置端口屬性
MSComm1.PortOpen= True'打開(kāi)端口
End Sub
(4)Output屬性:MSComm控件的Output屬性提供了發(fā)送的功能,當(dāng)從計(jì)算機(jī)向可編程控制器寫入數(shù)據(jù)或從可編程控制器讀取數(shù)據(jù)時(shí),上位機(jī)應(yīng)當(dāng)先發(fā)出如格式1的指令字符串。
(5)Input屬性:與Output屬性相反,Input屬性提供了接收數(shù)據(jù)的功能。它將對(duì)方傳到輸入緩沖區(qū)中的數(shù)據(jù)讀進(jìn)程序中,并清除緩沖區(qū)中已被讀取的數(shù)據(jù)。
對(duì)于MSComm控件的其他一些屬性使用VB的默認(rèn)值即可。上位機(jī)程序流程圖如圖3所示。
以上位機(jī)控制電機(jī)為例,其界面如圖4所示。
使用VB6.0編寫上位機(jī)軟件的最大優(yōu)勢(shì)是直接在VB中引入了控件,簡(jiǎn)化了編程,使上位機(jī)界面更加簡(jiǎn)單。而且Windows系統(tǒng)也使用了大量的控件,如按鈕、文本框等。只要熟練掌握了這項(xiàng)技術(shù),對(duì)工控會(huì)有很大的幫助,特別在編寫上位機(jī)程序方面。
經(jīng)過(guò)本案發(fā)現(xiàn),使用VB通信可以解決大部分分散控制系統(tǒng)的通信問(wèn)題,該方法簡(jiǎn)單、穩(wěn)定、可靠,大大縮短了工程師的開(kāi)發(fā)周期,并且該方案功能強(qiáng)大,不僅可以對(duì)現(xiàn)場(chǎng)工況監(jiān)控,而且還可以配合數(shù)據(jù)庫(kù)實(shí)現(xiàn)數(shù)據(jù)整理、上傳等功能。
圖3 上位機(jī)程序流程圖
圖4 上位機(jī)界面
[1] 張輝.Visual Basic串口通信及編程實(shí)例[M].北京:化學(xué)工業(yè)出版社,2011.
[2] 徐天偉.Visual Basic實(shí)用編程技術(shù)[M].北京:清華大學(xué)出版社,2010.
[3] 龔仲華.三菱FX系列PLC應(yīng)用技術(shù)[M].北京:人民郵電出版社,2010.
[4] 范逸之,陳立元.Visual Basic與RS-232串口通信控制[M].北京:中國(guó)青年出版社,2002.