久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

最新廣告
關注中國自動化產業(yè)發(fā)展的先行者!
工業(yè)智能邊緣計算2025年會
CAIAC 2025
2025工業(yè)安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

工業(yè)控制網絡監(jiān)控系統(tǒng)及其軟件設計的探討(下)
  • 企業(yè):控制網     領域:電源     行業(yè):網絡通訊    
  • 點擊數:2879     發(fā)布時間:2004-11-19 14:15:00
  • 分享到:

 

 

5  實例

 

    以一個交流調速網絡監(jiān)控系統(tǒng)為例說明網絡監(jiān)控軟件的開發(fā)。系統(tǒng)組成見圖2

 

2  交流調速網絡監(jiān)控系統(tǒng)

    系統(tǒng)采用Java結合C++進行系統(tǒng)設計。需要用到Java SocketJNIJDBCJava多線程以及C++ DLL等應用。

    (1)  現場端實現現場數據的收集

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

    系統(tǒng)由JNI調用操作數據采集卡的DLL完成實時數據的采集。如類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()用于啟動采樣,返回采集到的數據。

       public static void main(String args[])

       {  ACTimingNC ACtiming=new ACTimingNC("交流調速網絡監(jiān)控現場端");

          ......  } }

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

       Java串口包實現對變頻器的參數查詢和控制

    利用Sun公司提供的串口包,再結合臺達變頻器的控制協議,就可以實現雙方的數據交流了。例如控制命令串的發(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); 

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

        }catch(UnsupportedCommOperationException e3){}

        try{  String s="......"; //s為控制命令串,具體參照說明書

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

 

        (2)  Java Socket實現數據在現場端和服務器端的傳輸

        例如從現場端向服務器端傳送數據:由現場端提交監(jiān)測數據,數據服務器端接收數據。現場端部分代碼如下:

        public  class SceneServer  //數據服務器端

        {  public static void main(String args[])

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

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

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

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

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

             }catch(IOException e) {}  }  }

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

        public class DSServer   //數據服務器端

        {  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()

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

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

 

        (3)  服務器端采用JSP結合Java Bean實現監(jiān)控

        JDBC訪問SQL Server2000數據庫

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

        import java.sql.*;

        class DataIO

        {  public static void main(String args[])

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

                   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());} }

        系統(tǒng)的登陸

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

    ③  其他,如顯示曲線類、數據分析類、報表打印類等

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

 

6  結語

 

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

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 欧美成人tv| 美国特级黄 色大片| 日本69sex护士www| a级毛片免费全部播放| 亚洲高清毛片| 免费观看黄色视屏| 国产在线永久视频| 性色xxx视频| 蕾丝视频成人★在线观看| 国产亚洲精品国产福利在线观看 | 免费看色片| 国产大学生毛片一级高清| 视频一区 国产| 精品视频在线免费| 国产高清在线精品免费| 久久久久毛片成人精品| 日韩欧美不卡片| 亚洲欧美日韩国产综合专区| 一a一片一级一片啪啪| 日本a毛片| 日韩色爱| 在线观看91精品国产hd| 免费一级e一片在线播放| 欧美黄色特级视频| 国产成人99精品免费观看| 国产精品久久久影院| 美女视频黄a视频免费全过程| 蜜臀网站| 99视频精品免视3| 二区国产| 国产成人精品免费视频大全可播放的 | 国产成人精品日本亚洲语音| 国产精品免费拍拍1000部| 美女黄色免费看| 爱爱免费| 狠狠色综合久久婷婷| 黄色小视频免费网站| 黄页网址免费| 特级黄国产片一级视频播放 | 欧美区一区二| 欧美成人精品一区二三区在线观看 |