• <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

    <table id="fficu"></table>

    <sup id="fficu"></sup>
    <output id="fficu"></output>
    1. ACS880-07C
      關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
      橫河電機-23年10月11日
      2024
      工業(yè)智能邊緣計算2024年會(huì )
      2024中國自動(dòng)化產(chǎn)業(yè)年會(huì )
      2023年工業(yè)安全大會(huì )
      OICT公益講堂
      當前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

      案例頻道

      工業(yè)控制網(wǎng)絡(luò )監控系統及其軟件設計的探討(下)
      • 企業(yè):控制網(wǎng)     領(lǐng)域:電源     行業(yè):網(wǎng)絡(luò )通訊    
      • 點(diǎn)擊數:2400     發(fā)布時(shí)間:2004-11-19 14:15:00
      • 分享到:

       

       

      5  實(shí)例

       

          以一個(gè)交流調速網(wǎng)絡(luò )監控系統為例說(shuō)明網(wǎng)絡(luò )監控軟件的開(kāi)發(fā)。系統組成見(jiàn)圖2。

       

      2  交流調速網(wǎng)絡(luò )監控系統

          系統采用Java結合C++進(jìn)行系統設計。需要用到Java Socket、JNI、JDBC、Java多線(xiàn)程以及C++ DLL等應用。

          (1)  現場(chǎng)端實(shí)現現場(chǎng)數據的收集

          JNI調用C++ DLL實(shí)現轉速反饋數據的采集

          系統由JNI調用操作數據采集卡的DLL完成實(shí)時(shí)數據的采集。如類(lèi)ACTimingNC.java

          public class ACTimingNC

          {  ......

             public native short inport(short port);  //聲明本地方法inport(),

             public native void outport(short port,int value); //聲明本地方法outport()

             public native float sample(short base,int num);//聲明本地方法sample()

             static{ System.loadLibrary("PCL8112.dll");} //調入本地庫

            //聲明三種本地方法:inport()用于返回數據采集卡端口號,outport()用于向指定的端口輸出數值,sample()用于啟動(dòng)采樣,返回采集到的數據。

             public static void main(String args[])

             {  ACTimingNC ACtiming=new ACTimingNC("交流調速網(wǎng)絡(luò )監控現場(chǎng)端");

                ......  } }

          然后在命令提示符下鍵入javac  ACTimingNC.java進(jìn)行編譯生成ACTimingNC.class,再運行javah  ACTimingNC,得到C++文件ACTimingNC.h,然后編制相應的ACTimingNC.cpp文件實(shí)現對應的本地方法即可,最后編譯形成動(dòng)態(tài)鏈接庫DLL文件,放到應用程序路徑下。運行時(shí)就實(shí)現了Java調用DLL對硬件的操作。

             Java串口包實(shí)現對變頻器的參數查詢(xún)和控制

          利用Sun公司提供的串口包,再結合臺達變頻器的控制協(xié)議,就可以實(shí)現雙方的數據交流了。例如控制命令串的發(fā)送代碼如下:

          import java.io.*;import java.util.*;import javax.comm.*;

          class SerialportIO

          {  public static void main(String args[])

             {  …… //得到對串口COM1的控制權

          try{  serialPort.setSerialPortParams(4800,SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_ODD); 

              //實(shí)施臺達變頻器串口協(xié)議:波特率、數據位、停止位和奇偶校驗位分別為4800、8、1、O(奇校驗)。

              }catch(UnsupportedCommOperationException e3){}

              try{  String s="......"; //s為控制命令串,具體參照說(shuō)明書(shū)

                   os.writeUTF(s);  }catch(IOException e3){}  }}}}}

       

              (2)  Java Socket實(shí)現數據在現場(chǎng)端和服務(wù)器端的傳輸

              例如從現場(chǎng)端向服務(wù)器端傳送數據:由現場(chǎng)端提交監測數據,數據服務(wù)器端接收數據?,F場(chǎng)端部分代碼如下:

              public  class SceneServer  //數據服務(wù)器端

              {  public static void main(String args[])

               { try{ Socket socket=new Socket("202.199.133.46",PORT); //與服務(wù)器建立連接

                    PrintStream os=new PrintStream(wss.getOut- putStream()); //輸出流

                    DataInputStream is=new DataInputStream(wss.get- InputStream());//輸入流

                    StringBuffer buf=new StringBuffer(100); //定義數據緩沖區

                    ... ...//進(jìn)行數據發(fā)送

                   }catch(IOException e) {}  }  }

              在數據服務(wù)器端,考慮到以后系統的擴展,可能有多臺現場(chǎng)端智能設備提出發(fā)送數據請求,所以程序必須實(shí)現多線(xiàn)程。部分代碼如下:

              public class DSServer   //數據服務(wù)器端

              {  public static final PORT=5000;  ServerSocket ss=null;  Socket s=null;

                 public static void main(String args[])

                 {  try{  ss=new ServerSocket(PORT);

                  while(true) {s=ss.accept(); new ServerThread(s).start(); }

                }catch(IOException e1) {}    ... ... } }

              class ServerThread extends Thread

              {  Socket socket=null;

                 ServerThread(Socket socket)

                 {  super("ServerThread");  this.socket=socket;  }

                 public void run()

                 {  ……//接通輸入輸出流,實(shí)現數據傳輸以及操作到庫。 } }

              這段程序由兩個(gè)類(lèi)組成,主類(lèi)SceneServer負責建立處理連接請求,線(xiàn)程類(lèi)ServerThread用于創(chuàng )建一個(gè)新的線(xiàn)程,負責處理現場(chǎng)端的輸入輸出請求。反方向的控制信息傳輸只要加入相應代碼即可。

       

              (3)  服務(wù)器端采用JSP結合Java Bean實(shí)現監控

              JDBC訪(fǎng)問(wèn)SQL Server2000數據庫

              對于本系統,在SQL Server中需建立用戶(hù)表Users、設備表Devices、實(shí)時(shí)數據表RTData、歷史數據表HistoryData。用戶(hù)表用于進(jìn)行身份驗證,不同的用戶(hù)有不同的管理權限;而設備表包括現場(chǎng)設備的清單及其狀態(tài);實(shí)時(shí)數據表保存實(shí)時(shí)數據,如可以保存一天內的實(shí)時(shí)數據,在本系統中主要指轉速反饋、工作電流、工作頻率,然后每天將當天數據挪進(jìn)歷史數據表;歷史數據表用于保存一段時(shí)期中的運行數據。于是Web服務(wù)器可以根據客戶(hù)端的不同請求作出響應,由JDBC操作數據庫。這里數據庫實(shí)際上成為了現場(chǎng)數據上傳和控制信息下達的通信中樞。部分代碼如下:

              import java.sql.*;

              class DataIO

              {  public static void main(String args[])

                 {  try{  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  //驅動(dòng)器

                         String url="jdbc:odbc:ACTiming";  //數據源

                         con=DriverManager.getConnection(url,"",""); //連接數據庫

                         state=con.createStatement();

                         String query="select freq,curr,rev from HistoryData where DeviceID=1 and date>20030410 and         date<20030412"; //例如查看歷史數據表中1號設備在2003-4-102003-4-12號之間頻率、電流、轉速的運行數據。

                       ResultSet result=statement.executeQuery(query);

                         ... ...  //然后可以從結果集中取數據分析或送顯

                   }catch(Exceptione) ystem.out.println(e.toString());} }

              系統的登陸

              對不同的用戶(hù)登陸給出不同的操作界面。系統管理管理員可以完全操作整個(gè)系統,包括用戶(hù)管理、系統管理;對不同的現場(chǎng)系統的負責人只能監控自己的系統;而對網(wǎng)上演示,允許游客登陸只能觀(guān)看給定的系統,不能控制。登陸界面通過(guò)JSP連接用戶(hù)表進(jìn)行身份驗證,通過(guò)驗證后給出相應界面。

          ③  其他,如顯示曲線(xiàn)類(lèi)、數據分析類(lèi)、報表打印類(lèi)等

          這些類(lèi)均可以制作成Java Bean,嵌入JSP中實(shí)現。其功能分別實(shí)現接收到數據后的趨勢曲線(xiàn)繪制和顯示,可以采用雙緩沖技術(shù)來(lái)進(jìn)行。數據分析可以實(shí)現一定的智能算法,以便進(jìn)行在線(xiàn)系統分析、故障預測等。報表打印類(lèi)實(shí)現打印報表,包括故障報警記錄、歷史記錄、當天記錄等等。

       

      6  結語(yǔ)

       

          基于Java進(jìn)行網(wǎng)絡(luò )監控軟件的開(kāi)發(fā)可以充分利用Java的網(wǎng)絡(luò )特性,并可以集成C++代碼,實(shí)現本地系統控制與遠程網(wǎng)絡(luò )監控的統一,極大地提高了軟件開(kāi)發(fā)效率。對交流調速網(wǎng)絡(luò )監控軟件的設計過(guò)程以及實(shí)驗室校園網(wǎng)環(huán)境下的調試運行顯示系統性能良好。進(jìn)一步完善軟件系統設計以及進(jìn)行在線(xiàn)算法調整和控制是今后研究中很有意義的課題。

      熱點(diǎn)新聞

      推薦產(chǎn)品

      x
      • 在線(xiàn)反饋
      1.我有以下需求:



      2.詳細的需求:
      姓名:
      單位:
      電話(huà):
      郵件:
      欧美精品欧美人与动人物牲交_日韩乱码人妻无码中文_国产私拍大尺度在线视频_亚洲男人综合久久综合天

    2. <blockquote id="fficu"><optgroup id="fficu"></optgroup></blockquote>

      <table id="fficu"></table>

      <sup id="fficu"></sup>
      <output id="fficu"></output>