聚星撲克科技   服務熱線 :0591-22850016

新聞分類

News center
當前位置 :首頁 > 新聞中心 > 行業新聞 > 查看新聞
采用RS422A現場總線溫控網絡控製係統的結構及分析
作者 :admin  來源 :本站  發表時間 :2012/10/22 11:39:56  點擊 :4858

采用RS422A現場總線溫控網絡控製係統的結構及分析

  關鍵字 :RS422A 現場總線 溫控網絡控製係統

  RS422A是工業界廣泛使用的雙向 、差動平衡驅動和接收傳輸線標準接口,它以全雙工方式通信,支持多點連接,允許創建多達32個節點的網絡,具有傳輸距離遠 (最大傳輸距離為1200m),傳輸速率快 (1200m時為100kbit/s)等優點,相對於其它總線 ,如FF 、CAN 、LonWorks等而言 ,具有結構簡單 、成本低廉 、安裝方便 、與傳統的DCS兼容等特點;此外 ,市場上很多現場儀表都有RS422A總線接口 ,因此采用該總線可以很容易地開發一些中小型網絡測控係統 。RS-422A總線是EIA公布的“平衡電壓數字接口電路的電氣特性”標準 ,這個標準是為改善RS-232C標準的電氣特性 ,又考慮與RS-232C兼容而製定的 。結合某一工程項目的實際特點,聚星撲克采用了RS422A通信接口來實現遠程數據通信係統 。

  在該工程項目中 ,係統采用兩級主從總線型網絡結構 。溫度等變量的控製主要由總線上的各個智能儀表實現 ,上位機根據控製要求修改智能儀表的給定值等參數 ,以及一些數字量的監控顯示等 。該項目所選智能儀表為上海大華-千野儀表有限公司生產 ,參數相當複雜 ,具有較強的控製以及通信功能 。同時 ,利用上位機軟硬件資源豐富 ,以Windows為操作平台 ,因此開發的應用軟件有強大的管理功能以及非常友好的人機界麵 。本係統應用軟件采用Microsoft Visual C++6.0開發 ,充分利用VC++靈活快速 ,對視窗編程和多任務編程的方便接口 ,開發出來的軟件具有完善的數據采集 、設定 、報警 、實時監視等功能 。應用結果表明 ,該係統有效的實現了對溫度控製係統的監控 ,效果良好。

  係統結構

  該智能儀表功能較為完善 ,控製精度高 。自帶RS422A通信卡 ,通信命令多達一百多條,上傳及接受數據量大 ,主要包括各步溫度設定值、PID參數值 、報警參數值 、傳感器修正值 、模糊控製參數值等等 。現場總線采用RS422A總線 ,因為RS422A總線具有結構簡單 、成本低廉安裝方便等優點 。智能儀表掛接在RS422A總線上 ,通過RS422A/232C裝換器和PC串口相連接 。為此配置有十幾台(可擴展)智能儀表 ,RS422A/232C轉換器一塊 ,並且每一台儀表設置唯一的地址 。溫度的控製由下位機(智能儀表)完成 。主控計算機完成的功能有1)主動讀取下位機相關數據2)改變溫度控製的設定值以及其它的參數 ,但不直接完成對溫度的控製 。3)顯示溫控曲線畫麵,溫控儀集中顯示畫麵以及報警數據等的動態顯示 。4)數據的存儲,統計,報表等 。係統的硬件結構圖如圖1所示 。

係統的硬件結構圖

圖1 係統的硬件結構圖

  通信協議

  1) 物理層采用平衡型標準RS422接口,以提高數據傳輸的可靠性 。在平衡型標準RS422A中,

  發送器與接收器均以差分方式工作,每個信號用兩根導線傳輸,信號的電平由兩根導線上的信號的差值來表示 。

  2) 數據鏈路層本係統采用異步串行通信方式 。係統約定 ,波特率 :9600bps,偶校驗 ,1個起始位 ,7個數據位 ,1個停止位 ,采用ASCII碼作為傳輸代碼 。總線上的傳輸幀分為命令幀和數據幀 。命令幀又分為為建立連接包含地址信息的地址命令幀和對已建立連接要求上傳或者下傳數據的控製命令幀 。後者和數據幀的文本格式如下 :

數據幀的文本格式

  3)網絡層由PC機實現該層協議的功能 。總線上的傳輸幀中 ,地址命令幀是控製PC機以廣播的形式發出 ,用於喚醒總線上的某台儀表 ,握手請求與之建立通信關係 ,然後相應的儀表向控製PC機回傳本機地址 ,則握手成功;否則儀表向PC機回傳否定應答 。當PC機要和目前通信的儀表以外的其他儀表通信時 ,必須首先放棄目前的通信關係 ,發送放棄通信命令幀 。然後再從新按照上述方式建立連接 。建立連接,放棄連接以及溫控儀的應答格式如下所示:

溫控儀的應答格式

  其中ENQ EOT ACK 為控製碼 結束碼表示一幀的結束

  4)應用層 工業智能儀表的RS422A總線網絡係統的應用層 ,是對控製PC機與智能儀表之間相互傳送的信息組幀 ,即數據格式按照一定的格式和含義進行定義 。

  係統軟件設計

  係統管理軟件采用麵向對象技術 ,基於Windows2000平台 ,用VC++6.0編程開發 。係統應用軟件由實時動態過程和曆史記錄瀏覽兩大部分組成 ,實時動態過程包括數據采集及設定、運行控製 、數據管理三大模塊組成 ,數據采集及設定模塊定時從下位機即智能儀表采集和設定過程實時數據 。控製模塊主要是控製儀表的運行或停止等以及運行段選擇 ,數據管理模塊包括數據通信 、數據顯示 、報警 、打印、存儲等功能 。

   根據實時係統的特征 ,監控軟件中多個任務同時運行 ,為了不讓一個任務執行的時候 ,阻塞別的任務 ,聚星撲克充分裏了Windows係統允許多進程 、多線程編程的特點 ,將係統的分成幾個模塊 。首先 ,將曆史紀錄瀏覽和實時動態過程分成兩個進程 ,因為這兩個過程有很大的差別 。曆史紀錄瀏覽中的數據是靜態的 ,對實時性沒有要求 ,而且可以在生產過程之中或之後運行都可以 ,在開發這部分程序時 ,可以不用考慮時間的問題 。實時動態過程卻是一個實時性要求很高的任務 ,在這個過程中主要要完成通信 、顯示 、控製 、打印等任務 ,另外還要完成數據的轉儲 。

  (1) 動態進程設計

  線程一詞指程序指令順序的執行 ,每個程序獨立執行程序代碼中的一係列指令 。從用戶或應用程序編程的角度看 ,程序中的線程是同時運行的 。操作係統通常靠線程與線承建的快速切換控製來達到這種同時的感覺(但如果計算機有多個處理器 ,則係統可以直接同時執行線程) 。程需要在某個時間完成多個任務時(許多引用程序都是這樣) ,將每個任務放在不同的線程中不僅使程序更加有效 ,而且能簡化開發工作 。

  在設計實時動態進程時聚星撲克把它分成了兩個線程 :主線程和通信線程 。主線程定時啟動通信線程 ,通信線程執行完一次通信任務後自動懸掛 。在正常情況下 ,主線程兩次恢複通信線程之間的時間是能夠保證一次通信線程的完整執行 。

  在數據存儲方麵 ,為了提高係統的動態性能 ,要求能快速訪問數據存儲區 ,聚星撲克將數據存放在兩個地方 。正在進行的生產過程的過程數據首先存放在內存開辟的數據緩衝區內 ,這樣主線程能很快的訪問到 。另外 ,將幾次通信的數據定期存放到硬盤上 ,這樣能防止因停電等意外事故造成數據的損失 。

  在程序設計時聚星撲克采用了麵向對象設計的思想 ,比如聚星撲克把溫控儀看成一個對象 ,有關的數據結構及其操作完全封裝在一個類裏麵 ,這樣程序的數據結構分離也可以實現分離 ,這對於軟件的擴展 ,對於軟件開發和調試都會帶來極大的方便 。

  該軟件主要實現方式如下 :

  在重載的void CRS422AnetView::OnDraw(CDC*pDC)函數裏麵調用自定義函數StartOfSystem(pDC) ,後者打開並配置好串口 ,啟動通信線程 ,設置記時器等 。其主要代碼如下 :

  void CRs422AnetView::StartOfSystem(CDC *pDC)

  {

  ……

  m_hCom=CreateFile(m_sPort, GENERIC_READ | GENERIC_WRITE, 0, NULL,

  OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,NULL);

  if(m_hCom==INVALID_HANDLE_VALUE)

  return FALSE;

  DCB dcb;

  if(!GetCommState(m_hCom, &dcb))return FALSE;

  dcb.fBinary=TRUE;

  dcb.BaudRate=m_nBaud;

  dcb.ByteSize=m_nDataBits;

  dcb.fParity=TRUE;

  dcb.Parity=EVENPARITY;

  dcb.StopBits=ONESTOPBIT;

  return SetCommState(m_hCom, &dcb);

  ……//以上為打開並配置串口代碼

  SetTimer(1,5000,NULL); //啟動定時器,定時間隔為5妙

CwinThread*m_pThreadd=AfxBeginThread(CommProc,this->GetDocument(), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED, NULL); // 創建並掛起線程

  if(m_pThreadd==NULL)

  {

  CloseHandle(m_hCom);

  return FALSE;

  }

  else

  {

  m_bConnected=TRUE;

  m_pThreadd->ResumeThread(); // 恢複線程運行

  }

  ……

  }

   UINT CommProc(LPVOID pParam)為輔助通信線程,該線程完成設定值以及動態數據的讀取,其程序流程圖如下所示:

程序流程圖

    void CRS422AnetView::OnTimer(UINT nIDEvent)為響應計時器消息的函數 ,定時被觸發 ,本程序中定時間隔為5秒 。在該函數裏 ,主要是恢複輔助通信線程以及調用數據顯示程序定時刷新數據等 。

    (2) 曆史紀錄瀏覽進程設計

    曆史紀錄的瀏覽是為了對過去生產過程的回顧 ,可將產品的質量和過程的設定結合起來進行分析 ,對以後的生產提供參考 ,以便能提高產品的生產質量 。這個進程提供了一定的查詢功能 ,能將曆史紀錄用曲線的方式回放出來 ,能將重要的過程鎖定下來 ,也能刪除過程紀錄 。

    本文介紹的基於RS422A現場總線的溫控網絡係統已經在現場運行了較長時間 ,係統運行穩定可靠 ,充分發揮了網絡管理的便捷優點 ,提高了生產效率 。顯然 ,對於一些中 、小規模的測控係統 ,采用RS422A是一個很好的選擇 。

轉載請注明 :工業自動化 中國工控網  

 

Copyright 2003 -2018 TSheng All Rights Reserved 版權所有: 聚星撲克電氣集團-福州聚星撲克自動化工程有限公司
聯係電話 :0591-22850050 E-mail :768608509@qq.com
訪問量 :4791572   閩ICP備19020641號-1