黃誠
(廣東水利電力職業(yè)技術學院,廣東 廣州 510635)
由于PLC的穩(wěn)定性及極強的抗干擾性,在工業(yè)生產及應用中幾乎無所不及,但在這個信息時代,工廠管理智能化的管理愈發(fā)顯得重要,實時監(jiān)控企業(yè)的生產狀況,了解生產進度對企業(yè)的客戶的獲取,資金的流通等有著決定性的因素。作為生產的大腦核心,PLC連接入網絡,向外部智能設備及時發(fā)送關鍵數據或及時接受指令控制生產現場也變得越來越重要,GPRS無線網絡作為2.5/2.75G 移動通信網絡,已經在我國已經被廣泛使用,人們幾乎無時不刻在應用到它,如手機瀏覽網頁、彩信、飛信、qq、微信等,將PLC控制系統與現有GPRS無線通信網絡技術集成,通過GPRS網絡通信技術,可以實現全國,甚至全球范圍內的數據超遠程可靠傳輸,進而達到數據遠程分析處理,遠程控制的目的。
相對于GSM 業(yè)務而言,PLC基于GPRS的數據傳送效率更高,速度更快,報文結構簡單明了,PLC控制程序編制更方便,而通信的費用也更低,故GPRS與PLC通信方式將成為一種最新的趨勢為更多的企業(yè)單位所接受。在本文中,GPRS DTU 選用了SIMCOM 公司的SIM300 模塊,此模塊具有標準AT 指令接口,可以提供GSM 語音、短消息、彩信及GPRS上網等業(yè)務。
基于GPRS網絡三菱FX 系列PLC遠程控制系統的結構如圖1 所示。

由于工業(yè)生產數據信息的重要性,故數據的可靠性相當重要,因此在基于GPRS網絡三菱FX 系列PLC遠程控制系統結構圖中,我們選用了TCP 協議,正是因為TCP 是一種面向連接(連接導向)的、可靠的、基于字節(jié)流的運輸層(Transport layer)通信協議,比UDP(User Datagram Protocol)這種無連接協議更適合工業(yè)生產數據采集。遠程監(jiān)控端如PC 等可以公網IP 智能設備作為服務器,而連接工業(yè)生產現場的GPRS DTU 則作為客戶端,雙方通過GPRS網絡建立起TCP 鏈接,進而進行雙方數據的互換。
在圖1中,PLC模塊與SIM300模塊的通信采用的異步串行通信接口總線標準,由于SIM300模塊上的采用的是DP9的RS232 接口,但三菱FX系列PLC沒有自帶的232接口,需在擴展口上增加FX2N-232-BD通信模塊,如果還需要使用MODBUS此類總線通信,則應該配置三菱的FX2N-232IF,否則將出現通信端口不足的情況。圖2是三菱FX系列PLC通信模塊FX2N-232-BD與SIM300-DP9的接線圖。

在圖1中,三菱FX2N系列PLC在設備開始運行時應發(fā)送AT 指令給GPRS DTU(SIM300 模塊),模塊才能獲得IP 地址,連接服務器和進行數據包的傳送。PLC控制SIM300工作的流程如圖3 所示。

在圖3中,SIM300模塊上電以后,會通過單片機對POWERKEY引腳輸出一個大于1500ms的低脈沖,用以對SIM300模塊進行初始化,而PLC的初始化由內部機制完成,不需要編程實現。
PLC欲向遠程智能設備發(fā)送數據,須通過GPRS DTU(SIM300 模塊)與遠程智能設備建立TCP 連接,而該遠程智能設備必須具備公網IP,如果遠程端處于在局域網內部,則要做IP 地址的映射。故PLC在與遠程設備交換數據前,須向SIM300 模塊發(fā)送一系列的AT指令,模塊接收到指令后做相應的操作,涉及的指令如下所示:
5.1 建立TCP連接(指令代碼為:AT+CIPSTART);關閉TCP 連接(指令代碼為:AT+CIPCLOSE)
在建立TCP 連接之前,或者移動場景關閉后要建立連接,有一個初始化的過程,這個過程分為啟動任務、激活移動場景、獲取本地IP 地址三個步驟。這三個步驟可以由AT+CIPSTART一次完成,也可以通過AT+CSTT(啟動任務并設置 APN、USER ID、PASSWORD)、AT+CIICR(激活移動場景)、AT+CIFSR(獲取本地IP地址)分步完成。在這些步驟執(zhí)行完成后,AT+CIPSTART只進行連接操作。
其格式為:AT+CIPSTART=“TCP”,(“SERVERIPADDRESS”,“DOMAIN NAME”),“SERVER PORT”如果命令正確則返回“OK”,連接成功則繼續(xù)返回“CONNECT OK”,連接失敗則先返回狀態(tài)碼,再返回“CONNECT FAIL”;命令錯誤則發(fā)回“ERROR”。
若要關閉TCP連接,則PLC應當向SIM300發(fā)送AT+CIPCLOSE(ASCII 碼),如果命令正確則返回“OK”,命令錯誤則發(fā)回“ERROR”。
5.2 設置本地端口(指令代碼:AT+CLPORT)
SIM300作為客戶端,其端口號應該設置與服務器端一致,可用該指令進行設置。
格式為:AT+CLPORT=(“TCP”,“UDP”),“PORT”
5.3 發(fā)送數據(指令代碼:AT+CIPSEND返回“>”后寫入需發(fā)送的數據,按CTRL+Z(16 進制為1A)開始發(fā)送)所有發(fā)送的數據均以ASCII碼的形式進行,每次傳送的數據小于等于1024BYTES,且可以通過AT+CIPSEND=<數據長度>來發(fā)送固定長度的數據串,通過AT+CIPATS=1,
本系統的全部程序很長,而且不同的控制系統邏輯控制程序可能完全不同,對于控制工業(yè)生產的程序便不做描述,而PLC通信控制程序的編制需遵循FX2N 系列PLC的編程規(guī)則其通信的編程方法比較固定,圖4為本系統采用的通信程序框架。

遠程智能設備要求能與GPRS DTU 進行數據交換,可以根據實際情況用高級語言編寫程序做成可視化界面,點擊相應操作后實現系統功能要求,在本系統中,采用了Visual Basic 編程語言進行上位機軟件的開發(fā),為了實現TCP/IP 協議的實現,選用了Windows Sockets 控件,它是一套開放的、支持多種協議的Window 下的網絡編程接口,通過它我們可以調用多種協議功能,最常使用的就是調用TCP/IP 協議,在利用Socket 進行網絡編程時,需要涉及到的內容有:協議、本地地址、本地端口、遠程地址和遠程端口號。
由于遠程智能設備端是作為服務器,本文只對通信連接做程序的描述,服務器端程序編寫過程如下:
(1)設置服務器端的winsock 控件的協議及設置偵聽端口,用于監(jiān)聽客戶端的連接請求
SockServer.Protocol=SckTCPProtocol'設置為tcp 協議
SockServer.LocalPort=PortNumber'設置偵聽端口
(2)調用服務器端的Winsock 控件的偵聽方法,使服務器進入偵聽狀態(tài)。
SockServer.Listen'開始進行偵聽
(3)服務器接收到客戶端發(fā)來的連接請求后,用Accept 方法接收請求,于是服務器便與客戶端正式連接起來。
SockServer.Accept requestID
(4)當服務器接收到數據時,會發(fā)生DataArrival 事件,參數BytesTotal 包含接收到的數據字節(jié)數,在該事件中,可用GetData 方法進行接收。
SockServer.GetData StrTemp
txtReceice.Text=StrTemp
利用GPRS網絡把工業(yè)生產實況與遠程服務器端連接在一起,幾乎不用花費硬件布線成本,造價低廉,隨著GPRS的在手機間的廣泛應用,其通信質量穩(wěn)定,技術日益成熟,將其應用在PLC的數據采集及傳輸上有著鮮明的優(yōu)勢,是未來PLC發(fā)展的一個新趨勢。
[1] 仲維俊.Visual Basic6.0 完全自學手冊.機械工程出版社,2007.3.
[2] 鄧紅軍,王清.GPRS網絡無線數據通信設備應用研究[J].科技創(chuàng)新導報,2010.21.17.
[3] SIMCOM Ltd,SIM300 HARDWARE SPECIFICATION.2005.12.27.
[4] 郭昌榮.FX 系列PLC的鏈接通信及VB 圖形監(jiān)控[M].北京:北京航空航天大學出版社,2008.
[5] 長林.Visual Basic 串口通信技術與典型實例[M].北京:清華大學出版社,2006.