摘要:本文對Java實現串行通信的理論進行了分析,給出了一種基于Java語言的計算機與PLC串口通信方案。
關鍵詞:Java;串口通信;計算機;PLC
中圖分類號:TN91 文獻標識碼:A 文章編號:1674-7712(2012)20-0020-01
Java是一種面向對象的,支持網絡通信的程序設計語言,該語言不僅具有C++和Smalltalk語言的諸多優點,還能夠進行網絡通信、實現并發程序設計、對多媒體數據進行控制等,這些特點都決定了Java語言具有強健的魯棒性。再者,Java對不同平臺具有良好的支持性能,可以通過一次編譯實現跨平臺通信和數據傳輸。這個特性幾號了解決了控制程序移植困難的問題,減少了開發周期,降低了開發難度。
PLC的抗干擾能力強、可靠性高、便于應用和集成,因此被應用在許多領域。通過PLC在分布式系統和數據采集系統中實現串行通信已經得到了廣泛的應用。
本文就利用Java語言實現計算機與PLC的串口通信進行了研究。
一、基于Java的串口通信技術
(一)Java本地調用技術。將Java與硬件系統進行關聯需要使用Java本地調用技術,也就是JNI技術。該技術通過Java虛擬機實現與用其他語言編寫的應用程序和庫的相互操作,其作用可以表示為兩者之間的中介。
(二)Javax.comm類庫。串口通信是計算機與其他外部設備進行數據傳輸的主要方式,但是不能直接利用Java語言實現串口通信的編程控制,因此需要借助其他語言如匯編、C/C++等實現對硬件的控制,在此之上利用JNI技術實現對串行通信的控制。雖然過程可能比較繁瑣,但是SUN公司提供了javax.comm類庫,通過該庫調用合適的API即可通過Java實現串口的通信。該庫提供有四個接口,六個類,三個層次。
其中上層類中的CommPortIdentifier可以使應用程序用方法和驅動器對可用的通信端口進行查找,選擇某一端口后打開該端口利用通過其他類庫,如底層類庫等,進行通信。
類CommPort則是一個用來描述底層系統定義的有效通訊端口抽象類,通過該類可以控制通信端口實現傳輸的方法。
底層類中的兩個類庫分別提供串行或并行通訊接口,分別定義通信所需的基本功能的方法。
由于驅動層類不直接提供使用,故本文不做討論。
具體通信流程為:搜索系統中的可用端口,選中其中一個可用端口創建傳輸對象,然后將該對象投射到某一類型的物理通訊設備中,標注該端口打開,就可以通過調用不同的方法進行數據的讀寫和傳遞,使用完畢后關閉該端口。
二、PLC串行通信
(一)通信協議。上位機與PLC之間的通信需要使用到通信協議,實現一次數據或命令的傳輸被稱為一個數據幀或者命令幀,PLC接收到相應的幀后對上位機進行反饋。
一個完整的幀結構包含如下幾個部分:協議幀結構標志、PLC判別節點號、識別碼、正文、FSC幀檢查碼、終止符等。
(二)通信順序。具體的通信順序如下:首先上位機完成定界符的設定后對其控制的PLC設備發送控制幀,然后PLC在接收到定界符后向上位機進行反饋確定兩者之間開始通信,上位機接收到PLC發送的反饋定界符后開始傳輸數據幀;當PLC向上位機發送數據時,同樣需要先發送定界符并確認返回定界符,然后才能開始進行數據傳輸,數據傳輸完畢后以終止符結尾。
三、網絡中的基于Java控制技術的多PLC通信技術
本文使用一臺上位機同時對多個PLC設備進行控制,鑒于上位機只有RS-232接口,故在硬件配置中需要使用RS-232與RS-485的轉換器,通過該轉換器實現利用RS-485網絡對PLC設備的遠程控制。
系統的軟件部分流程為首先進行程序初始化工作,然后與控制設備進行連接,連接成功后通過命令幀或者數據幀實現上位機與不同PLC之間的數據通信和遠程控制。
打開串口代碼為:
try{
PortId=CommPortIdentifier.getPortIdentifiers(PortName);
try{
serialPort=().portld.open(“Serial_Communication”,2000);
}catch(PortInUseException e)
{return InitFail};
}try{
In=SerialPort.getInputStream();
Out=SerialPort.getOutputStream();
}catch(IOException e)
{return InitFail};
串口配置代碼為:
try
{serialPort.setSerialPortParams(9600,//傳輸波特率為9600
SerialPort.DATABITS_16,//數據位為16位
SerialPort.STOPBITS_2,//停止位為2位
SerialPort.PATITY_NONE);//無數據校驗
}catch(UnsupportedCommOperation Exception e)
{return InitFail};
本系統使用監聽的方式實現數據傳遞,該方式的好處在于響應速度快、實時性高。監聽法是緩存區存儲了新的數據時,端口會根據存儲狀態的改變而產生變化,監聽器將監聽結果傳遞給應用程序,應用程序對不同數據進行相應的處理,完成數據的傳輸和狀態的監控。
四、結語
應用Java實現計算機與PLC的串行通信具有非常廣泛的應用,其對分布式控制系統設計、現場設備的數據采集與遠程控制等都具有現實指導意義。這種通信方式簡單可靠,投資少,速度快,具有可觀的應用前景。
參考文獻:
[1]吳興軍,胡漢春.Java實現計算機與OMRON PLC串口通信[J].工業儀表與自動化裝置,2010,1.
[2]王峰,鄭曉麗,陸金桂.基于Java的PC與Simens S7-200 PLC的通信[J].交通與計算機,2005,3.