siemens x
DCS

DCS系統(tǒng)中的通訊方式問題探討

2025China.cn   2014年03月18日

  一 簡介

  隨著我國工業(yè)的自動化整體水平的提高,企業(yè)中的控制系統(tǒng)及控制設(shè)備的種類也越來越多;同時,隨著市場經(jīng)濟的發(fā)展,各個企業(yè)也對DCS系統(tǒng)的要求也越來越高,除了要滿足常規(guī)的控制以外,還要求DCS系統(tǒng)能將控制系統(tǒng)的各個運行參數(shù)實時傳送到上位的MIS系統(tǒng)或SIS系統(tǒng)中去,進行數(shù)據(jù)后處理加工、共享、性能優(yōu)化。所有的這些,都對DCS系統(tǒng)提出了通訊問題,包括和其它DCS或PLC的通訊、以及與上位機的通訊。

  在諫壁發(fā)電廠的四臺300MW機組(7#、8#、9#、10#)的DCS改造中,全部采用的Foxboro公司的I/A’s系統(tǒng),與I/A’s通訊的裝置有893類智能數(shù)據(jù)采集前端、鍋爐高過壁溫分析系統(tǒng)、基于PC機的實時報表數(shù)據(jù)庫系統(tǒng)、PI海量數(shù)據(jù)庫(SIS系統(tǒng)),幾乎涵蓋了DCS系統(tǒng)與其他系統(tǒng)進行通訊的所有方式:使用專業(yè)通訊硬件實現(xiàn)通訊、使用專業(yè)通訊軟件實現(xiàn)通訊、自行開發(fā)通訊程序(包括:串口通訊、TCP/IP通訊、FTP通訊、基于TCP/IP的MODBUS協(xié)議通訊)。

  下面,將對以上幾種通訊方式的實現(xiàn)做一個簡單介紹并比較,給出在選擇通訊方式時的幾點建議。

  二 利用硬件實現(xiàn)通訊

  對于市場上廣泛使用的A-B公司PLC產(chǎn)品,F(xiàn)oxboro公司專門開發(fā)專用的通訊硬件--集成在I/A’s中的AB-STATION,通過AB-STATION,在I/A’s中可以直接對A-B的PLC進行管理、組態(tài)、通訊及數(shù)據(jù)采集監(jiān)視,使整個系統(tǒng)既具有PLC快速的優(yōu)點,又具有DCS系統(tǒng)友好的人機界面,強大的數(shù)據(jù)庫管理的優(yōu)勢。

  對于工業(yè)界廣泛采用的MODBUS協(xié)議(含ASCII協(xié)議及RTU協(xié)議),F(xiàn)oxboro公司開發(fā)了多種符合MODBUS協(xié)議的硬件,主要有:MODBUSGATEWAY,MODBUSGATEWAYPLUS,適用于RS-232通訊及RS-485通訊,并可以選擇做為仆方或主方。采用專門的通訊硬件,可以與一切提供MODBUS協(xié)議通訊接口的設(shè)備進行通訊,包括其它公司的DCS系統(tǒng)、PLC產(chǎn)品等。在上海Foxboro公司所實施的大部分需要進行通訊的項目中均采用這種方式。

  除以上兩種專門通訊硬件外,F(xiàn)oxboro公司還有一個可以自定義協(xié)議的通訊硬件—FOREIGNDEVICEINTIGRATOR30(設(shè)備集成器30)。使用此通訊硬件,需要通訊的雙方只要定義好通訊數(shù)據(jù)包格式(包括數(shù)據(jù)包報頭信息、數(shù)據(jù)格式、數(shù)據(jù)包報尾信息)和通訊參數(shù)(包括起始位、停止位、數(shù)據(jù)位、波特率)即可實現(xiàn)通訊。在鎮(zhèn)江電廠項目中,上海Foxboro公司就采用這個方法實現(xiàn)了與GEPLC及無錫陽山智能數(shù)據(jù)采集前端的通訊,大大減少了用戶的投資。

  此外,對于市場上使用較多的PLC和DCS產(chǎn)品,F(xiàn)oxboro公司提供專門的通訊軟件進行通訊。

  以上所有的通訊方式所采用的硬件是一樣的:通訊處理機30(COMMUNICATIONPROCESSOR30),不同之處在于所選用的通訊軟件不一樣。

  對于MODBUS協(xié)議,采用的波特率通常為9600bps,因此每秒所能通訊的數(shù)據(jù)包是有限制的。

  對于MODBUS協(xié)議,如果MODBUS設(shè)備不同,每個通訊包所能通訊的量是不一樣的,通常使用的548設(shè)備可以通訊到256個字節(jié),亦即128個模擬量或2048個數(shù)字量。

  標準的MODBUS通訊幀格式為:“〈仆方地址〉〈功能碼〉〈起始地址〉〈數(shù)據(jù)傳送量〉〈校驗碼〉”。對于不同的設(shè)備具有不同的MODBUS地址;同一設(shè)備,不同數(shù)據(jù)類型(外部寄存器、內(nèi)部寄存器、外部保持線圈、內(nèi)部保持線圈等)具有不同的功能碼;同一數(shù)據(jù)類型,讀/寫操作不同時,也具有不同的功能碼。

  因此,在考慮MODBUS協(xié)議通訊時,不能只看有多少個模擬量/數(shù)字量,而必須同時考慮:有多少個設(shè)備,每個設(shè)備的通訊模擬量/數(shù)字量數(shù)據(jù)有多少,數(shù)據(jù)是否雙向傳送,通訊速率為多少。綜合考慮以上因數(shù)后,計算出需要多少個通訊處理器。

  需要強調(diào)的是:Foxboro公司的硬件通訊產(chǎn)品COMM30與許多公司的硬件通訊方式通過采用插在工程師站/操作員站主板上的串口通訊卡實現(xiàn)不同,F(xiàn)oxboro公司的COMM30具有專用的CPU芯片,獨立于工程師站及操作員站運行,是控制網(wǎng)絡(luò)中一個獨立的處理站,即使在工程師站/操作員站死機時仍能保證通訊的正常運行,這在參與控制的通訊(如與定排程控、吹灰程控等)中顯的尤為重要。

  三 用專業(yè)通訊軟件實現(xiàn)通訊

  專業(yè)的通訊軟件主要分為兩類:一類實現(xiàn)數(shù)據(jù)的實時采集與傳送,另一類實現(xiàn)流程畫面的實時傳送。

  3.1數(shù)據(jù)的實時采集及傳送

  用Foxboro公司開發(fā)的通訊軟件或利用第三方開發(fā)的針對I/A’s的通訊軟件實現(xiàn)通訊是一種非常方便的辦法,它可以大大縮短項目周期。

  Foxboro公司的專業(yè)通訊軟件從早期的DataforWindow、PIMS中的DataLink到現(xiàn)在使用的AIM*AT軟件秉承始終如一的思想,利用AISAPI(FOXAPI的早期版本),F(xiàn)OXAPI的內(nèi)部函數(shù)調(diào)用實現(xiàn)數(shù)據(jù)的實時讀寫;利用TCP/IP實現(xiàn)數(shù)據(jù)在I/A’s與PC機之間的雙向傳送;利用DDE技術(shù)將I/A’s的數(shù)據(jù)在支持DDE技術(shù)的程序(如:Excel、Lotus1-2-3、Delphi等)中顯示,同時提供VB調(diào)用函數(shù),便于用戶的二次開發(fā)。該軟件的最快傳送速率為0.1秒。在目前的項目中,比較多的采用了這種辦法。

  對于目前較流行的OPC通訊協(xié)議,F(xiàn)oxboro公司提供專門的OPC通訊軟件,同時也可以選用第三方,如:MATRICON公司的OPC通訊軟件。

  第三方通訊軟件主要是美國OSI公司的PI實時數(shù)據(jù)庫。OSI公司的PI系統(tǒng)基于C/S結(jié)構(gòu),能將100多家的DCS系統(tǒng)或PLC中的實時數(shù)據(jù)傳送到WindowNT服務(wù)器中,利用其專利的“螺旋門壓縮”技術(shù),將數(shù)據(jù)進行壓縮加工,使其保存周期可長達數(shù)年以上(取決于硬盤容量)。同時,利用其強大的系統(tǒng)工具實現(xiàn)二次開發(fā),包括流程畫面顯示、趨勢顯示、優(yōu)化處理、性能計算等。PI實時數(shù)據(jù)庫在Foxboro的I/A’s中的應(yīng)用在國外已經(jīng)有了上百個成功使用的業(yè)績。諫壁發(fā)電廠利用PI系統(tǒng)將其#7、#8、#9、#10四臺300MW機組多達20,000點的數(shù)據(jù)實現(xiàn)了實時傳送、長達2年的數(shù)據(jù)存儲,并利用其強大的二次開發(fā)工具,為全廠MIS(或SIS)系統(tǒng)的應(yīng)用開發(fā)服務(wù)。

  專業(yè)的通訊軟件,如:PI,除了具有高率、高速、數(shù)據(jù)保存時間長、安全可靠、功能強大、界面友好、使用方便等優(yōu)點外,通常在數(shù)據(jù)傳送時還具有以下特性:

  l采用“例外報告”方式:設(shè)定數(shù)據(jù)需要傳送的變化范圍,對未超過變化范圍的數(shù)據(jù)不傳送,這一機制大大降低了通訊負載。

  l具有“數(shù)據(jù)緩存”機制:在網(wǎng)絡(luò)通訊中斷時,將需要傳送的數(shù)據(jù)緩存在工作站的硬盤上,待網(wǎng)絡(luò)通訊恢復(fù)時,在網(wǎng)絡(luò)通訊的空閑時再將數(shù)據(jù)傳送到數(shù)據(jù)庫中。這一機制保證了數(shù)據(jù)不丟失。

  3.2流程畫面的實時傳送

  將流程畫面實時傳送到PC機上,可以使企業(yè)領(lǐng)導(dǎo)和運行管理人員、熱工儀表維護人員可以及時掌握現(xiàn)場的生產(chǎn)運行情況,便于整個企業(yè)的資源共享、狀態(tài)監(jiān)視及物流管理。

  關(guān)于流程畫面的實時傳送,目前使用較多的是使用HumingBird公司的Exceed軟件。利用Exceed軟件的Telnet功能和I/A’s的附加顯示管理器(AdditionalDisplayManager),將I/A’s中的流程畫面實時傳送至PC機中,并可以定義在PC機中的操作權(quán)限是否可以操作。

  除Exceed軟件外,還可以使用GraphOn公司的GO_Global軟件,該軟件可以直接利用網(wǎng)絡(luò)傳輸,也可以用撥號方式,將I/A’s中的流程畫面實時傳送至PC機中。

  在使用Exceed及GO_Global軟件時,利用Modem撥號,就可以實現(xiàn)“遠程診斷”(FOXWATCH),即:將I/A’s使用情況等信息,及時傳送回Foxboro公司,F(xiàn)oxboro公司的工程技術(shù)人員在公司內(nèi)就可以對用戶的各種要求進行及時響應(yīng),對其系統(tǒng)進行診斷,并對用戶提出使用建議。在諫壁發(fā)電廠的I/A’s系統(tǒng)中,就安裝有FOXWATCH軟件,使用效果非常好,廠級領(lǐng)導(dǎo)、熱工維護人員等在辦公室內(nèi)即可了解機組生產(chǎn)運行情況;在出現(xiàn)故障時,可以迅速將DCS系統(tǒng)使用情況傳送給Foxboro公司的工程技術(shù)人員,在最短的時間內(nèi)得到技術(shù)支持,最大程度地降低損失。

  無論是采用專門的硬件實現(xiàn)通訊,還是使用專業(yè)的通訊軟件實現(xiàn)通訊,實現(xiàn)方法都比較簡單,下面將重點介紹在Foxboro公司I/A’s產(chǎn)品中用軟件編程方法實現(xiàn)通訊的幾種方法。

  四 利用軟件編程實現(xiàn)通訊

  利用軟件編程方式,可以更加靈活實現(xiàn)各種非常規(guī)的通訊。

  由于自行編寫的程序在工程師站/操作員站運行,需要占用一定的CUP時間及內(nèi)存,因此在通訊數(shù)據(jù)量較大,同時要求通訊速度較快時,由于沒有專業(yè)通訊軟件的“例外報告”機制,建議不要采用自行開發(fā)程序的辦法。

  由于自行編寫的程序通常沒有“數(shù)據(jù)緩存”機制,在傳送非常重要的數(shù)據(jù)時應(yīng)該謹慎使用。

  自行編程主要工作為了兩方面,一為I/A數(shù)據(jù)的讀寫及處理,一為通訊的實現(xiàn)。

  通常自行開發(fā)通訊軟件包括:串口通訊(如智能前端)、TCP/IP通訊(如實時數(shù)據(jù)傳送)、FTP通訊(如定期傳送報表文本)、基于TCP/IP的MODBUS協(xié)議通訊。

  以上幾種通訊方式在通訊的實現(xiàn)方式上不同,但在I/A’s內(nèi)數(shù)據(jù)的讀寫操作是一樣的,接下來將闡述軟件編程時的主要函數(shù)及方式:

  4.1I/A’s數(shù)據(jù)的讀寫及處理

  Foxboro公司I/A’s系統(tǒng)提供強大的內(nèi)部編程函數(shù)(C函數(shù)、FORTRAN),主要包括有:

  lOMCALL函數(shù)–實現(xiàn)I/A’s系統(tǒng)內(nèi)部數(shù)據(jù)的讀寫操作。

  主要函數(shù)有:

  2intgetval(char*name,intobj_type,intimport,char*value,unsignedint*status,intdata_len)

  此函數(shù)實現(xiàn)單個數(shù)據(jù)的讀操作。

  2intom_getval(char*name,intobj_type,intimport,charvalue,unsignedint*status,intdata_len,PSAP_ADDR*psap_ptr)

  此函數(shù)實現(xiàn)單個數(shù)據(jù)的讀操作,它使用PSAP指針。

  2intsetval(char*name,intobj_type,intimport,char*value,unsigned*status,intdata_len)

  此函數(shù)實現(xiàn)單個數(shù)據(jù)的寫操作。

  2intom_setval(char*name,intobj_type,intimport,char*value,unsigned*status,intdata_len,PASP_ADDR*psap_ptr);

  此函數(shù)實現(xiàn)單個數(shù)據(jù)的寫操作,它使用PSAP指針。

  2intomopen(structom_header_node*om_descriptor,intopen_id)

  此函數(shù)實現(xiàn)打開一個LIST,為數(shù)據(jù)的讀寫操作做準備。

  2intomread(intomopen_id,intsize_list,structvalue*var_list)

  此函數(shù)實現(xiàn)從打開的LIST中讀取數(shù)據(jù)。

  2intomwrite(intomopen_id,intsize_list,structvalue*var_list);

  此函數(shù)實現(xiàn)向打開的LIST中寫數(shù)據(jù)。

  2intomclose(intopen_id,structom_header_node*header,structopen_var*var_list,structnet_addr*addr_tbl)

  此函數(shù)實現(xiàn)關(guān)閉一個已經(jīng)打開的LIST。

  2頭部文件、OM結(jié)構(gòu)及例程

  #include

  #include

  #include

  #include

  #include

  main()

  {

  structopen_varin_var_list[8];

  structheader_nodein_om_desc;

  structnet_adrin_net_adr_tbl[2];

  intin_open_id;

  intrtn;

  floatdelta_temp,delta_fc,delta_df;

  structvalue*in_data_list,*temp;

  inti;

  delta_temp=5.0;

  delta_fc=1.0;

  delta_df=0.5;

  _status=OM_R_ACCESS;

  _adr_tbl_ptr=in_net_adr_tbl;

  _net_adr_tbl=2;

  _list_ptr=in_var_list;

  _open_list=8;

  ……

  }

  2特點

  使用getval、setval、om_getval、om_setval函數(shù)進行編程比較簡單,但效率較差;用omopen、omread、omwrite、omclose編程需要復(fù)雜的聲明,編程比較復(fù)雜,但程序通用性好(不要FOXAPI的支持)、效率高。

  lFOXAPI函數(shù)–實現(xiàn)I/A’s系統(tǒng)內(nèi)部數(shù)據(jù)的讀寫操作及強大的C/S結(jié)構(gòu)編程。

  主要函數(shù)有:

  2intsbopen(int*gw_array,intnument,char*name_array,int*valtyp_array,intacctyp,float*delta_array,intclexit,intrsr,intwsr,float*wdelta_array,int*dset,int*index_array,int*error_array,int*reterr)

  此函數(shù)實現(xiàn)以連續(xù)更新的方式打開一個讀寫SET。

  2intbread(intdset,long*value_array,int*status_array,int*reterr)

  此函數(shù)實現(xiàn)從一個已經(jīng)打開SET中讀取數(shù)據(jù)。

  2intbwrite(intdset,long*value_array,int*error_array,int*reterr)

  此函數(shù)實現(xiàn)向一個已經(jīng)打開SET中寫數(shù)據(jù)。

  2intclsset(intdset,int*reterr)

  此函數(shù)實現(xiàn)關(guān)閉一個已經(jīng)打開SET,釋放程序所使用的內(nèi)存空間,釋放對CP中數(shù)據(jù)的控制權(quán)。

  2頭部函數(shù),F(xiàn)OXAPI結(jié)構(gòu)定義及例程

  #include

  #include

  #include

  #include

  #include

  #include

  #include

  #defineOBJNUM100

  #defineSETNUM20

  typedefunion

  {

  longlval;

  shortival;

  floatfval;

  charbval;

  }IAXVAL;

  /*PredefinedParameterofI/Avalue*/

  staticintgw[SETNUM][OBJNUM];/*GatewayArray*/

  charname[SETNUM][OBJNUM][32];/*ObjectNameArray*/

  chardesc[SETNUM][OBJNUM][15];/*ObjectdescriptionArray*/

  staticintvaltype[SETNUM][OBJNUM];/*ObjectValueTypeArray*/

  staticintacctype=1;/*Read-onlyArray*/

  staticfloatrdelta[SETNUM][OBJNUM];/*ObjectsReadDeltaArray*/

  staticfloatwdelta[SETNUM][OBJNUM];/*ObjectsWriteDeltaArray*/

  interror[SETNUM][OBJNUM];/*ObjectsErrorArray*/

  intindex[SETNUM][OBJNUM];/*ObjectsIndexesArray*/

  intstatus[SETNUM][OBJNUM];/*ObjectsStatusArray*/

  IAXVALvalue[SETNUM][OBJNUM];/*ObjectsValueArray*/

  staticintrsr=4;/*ReadScanRate*/

  staticintwsr=4;/*WriteScanRate*/

  staticintclexit=1;/*IgnoredinUNIX*/

  intreterr[SETNUM];/*OpenSetreturnErrorCode*/

  /*PredefineParameterofutility*/

  intset[SETNUM];/*OpenSetNumber*/

  intTotal_SET;/*TotalSetNumber*/

  intLast_SET_Num;/*LastSetValueNuber*/

  intTotal_Num;/*TotalNumberofobjects*/

  intTotal_File;/*TotaloutputfilesNumber*/

  intINTERVAL;/*Communicateinterval*/

  intCol_Num;/*Valuenumberperline*/

  main()

  {

  ……scopen(gw[i],k,name[i],valtype[i],acctype,rdelta[i],clexit,rsr,\

  wsr,wdelta[i],&set[i],index[i],error[i],&reterr[i]);

  printf(“ReturnErrorCode=%-d\n”,reterr[i]);

  printf(“ReturnDataSet=%-d\n”,set[i]);

  ……rtn=bread(set[i],value[i],status[i],&reterr[i]);

  if(reterr[i]!=0)

  {

  printf(“BufferedReadObjectsError%d,%d,%d\n”,rtn,\

  reterr[i],set[i]);

  }

  ……for(i=0;i

  {

  clsset(set[i],&reterr[i]);

  }

  ……

  }

  2特點

  使用FOXAPI編程比較簡單,程序效率也很高,但程序的執(zhí)行需要FOXAPI的支持,編譯好的程序只能在裝有FOXAPI的AW、AP機器中運行。PI實時數(shù)據(jù)庫實際上便是利用FOXAPI函數(shù)編寫的應(yīng)用程序。

  lHICALL函數(shù)–實現(xiàn)具有I/A’s風格的人機界面(HUMANINTERFACE)編程,包括顯示元素,如:矩形、圓弧、填充色;對話框、菜單結(jié)構(gòu)、鼠標鍵盤驅(qū)動、查詢、文件驅(qū)動等,事實上,整個I/A’s的人機界面編寫既是通過這些函數(shù)完成。

  lIPCALL函數(shù)–實現(xiàn)I/A’s系統(tǒng)內(nèi)部通訊編程,如:SOE軟件等。

  lICCAPI函數(shù)–實現(xiàn)I/A’s控制處理器CP中CIO的相關(guān)操作。

  l數(shù)學(xué)庫–提供各種經(jīng)典數(shù)值計算的調(diào)用函數(shù)。

  l物理特性庫–提供各種物理特性計算的調(diào)用函數(shù),包括水、蒸汽的焓、熵等計算。

  2intvpt(floatp,floatt,float*v)

  此函數(shù)根據(jù)蒸汽的壓力及溫度計算蒸汽的容積。

  2inthpt_stm(floatp,floatt,float*h)

  此函數(shù)根據(jù)蒸汽的壓力及溫度計算蒸汽的焓。

  2intspt_stm(floatp,floatt,float*s)

  此函數(shù)根據(jù)蒸汽的壓力及溫度計算蒸汽的熵。

  2inthpt_wtr(floatp,floatt,float*h)

  此函數(shù)根據(jù)水的壓力及溫度計算水的焓。

  2intspt_wtr(floatp,floatt,float*s)

  此函數(shù)根據(jù)水的壓力及溫度計算水的熵。

  2inthpt_air(floatp,floatt,float*h)

  此函數(shù)根據(jù)空氣的壓力及溫度計算空氣的焓。

  2intspt_air(floatp,floatt,float*s)

  此函數(shù)根據(jù)空氣的壓力及溫度計算空氣的熵。

  lINFORMIX編程。

  在某些需要對歷史數(shù)據(jù)進行操作的場合,可以利用INFORMIX及E-SQL進行編程。

  4.2通訊的實現(xiàn)

  在用軟件編程實現(xiàn)通訊時所采用的具體的通訊硬件上,既可以通過串口實現(xiàn)RS-232通訊,也可以通過AUI網(wǎng)卡、BNC網(wǎng)卡、RJ-45網(wǎng)卡實現(xiàn)FTP通訊、TCP/IP通訊。

  當與I/A’s通訊的其它設(shè)備(如智能數(shù)據(jù)采集前端、GPS、自動同期裝置等非通用設(shè)備)可以提供串口通訊,且通訊點數(shù)量不多時,采用專門的硬件實現(xiàn)通訊硬件不是一個非常經(jīng)濟的方案,此時可以采用RS-232實現(xiàn)通訊。

  用RS-232實現(xiàn)通訊時,首先應(yīng)初始化通訊端口,然后可以按RS-232通訊規(guī)程(RXD,TXD,RTS,CTS,DSR,DTR,DCD信號),發(fā)送指令并接受數(shù)據(jù)。

  以下是初始化端口的一段例程:

  intinit_port(intk,int*fd,char*comport)

  {

  intsavef;

  if((*fd=open(comport,O_RDWR|O_NDELAY|O_NONBLOCK))《0)

  return(1);

  fflush(stdout);

  fflush(stdin);

  if(savef=fcntl(*fd,F(xiàn)_GETFL,0)《0)

  return(2);

  if(fcntl(*fd,F(xiàn)_SETFL,savef|O_NDELAY)《0)

  return(3);

  if(ioctl(*fd,TCGETS,&termio)《0)

  return(4);

  /*Settheportparameteras9600Baudrate,8databits,1siopbit,

  Enablereceiver,Evenparityenable*/

  termio.c_cflag=B9600|CS8|CREAD|PARENB|CLOCAL;

  termio.c_cflag&=~CSTOPB;

  termio.c_cflag&=~PARODD;

  termio.c_iflag=INPCK;

  termio.c_iflag&=~ISTRIP;

  termio.c_lflag=0;

  termio.c_oflag=0;

  termio.c_cc[VMIN]=1;

  termio.c_cc[VTIME]=0;

  if(ioctl(*fd,TCSETS,&termio)《0)

  return(5);

  sleep(1);

  return(0);

  }

  以下是讀寫端口的一段例程:

  intcomm(unsignedcharnum,intfd)

  {

  intI,rtn,tioc;

  unsignedcharT[200];

  unsignedcharbuff[200];

  ……ioctl(fd,TIOCMGET,&tioc);

  tioc=tioc|TIOCM_RTS;

  ioctl(fd,TIOCMSET,&tioc);

  ……write(fd,T,200);

  rtn=ioctl(fd,TCSBRK,1);

  strcpy(buf,”“,200);

  read(fd,buf,200);

  }

  如果與I/A’s進行通訊的是PC機或其它DCS,比較好的通訊辦法是利用RJ-45等通訊口,按FTP協(xié)議或TCP/IP協(xié)議進行通訊。其中,F(xiàn)TP通訊的效率較低,且一直有讀盤/寫盤動作,對機器的影響較大,但此方法比較簡單,容易實現(xiàn),因此,在通訊不頻繁的時候(建議大于一小時),也可以采用這個辦法。在更多的時候,則建議使用TCP/IP協(xié)議進行通訊。

  利用TCP/IP進行通訊時,有兩個協(xié)議可以選擇:TCP及UDP,其中TCP(TransportControlProtocol,傳輸控制協(xié)議)是面向聯(lián)接的,它提供高可靠性服務(wù),尤其適用于傳輸大量報文信息。UDP(UserDatagramProtocol,用戶數(shù)據(jù)報協(xié)議)是無聯(lián)接的,它提供高效率的服務(wù),適用于一次傳輸少量報文信息的場合。

  UDP通訊的程序的編寫也比較容易,只需指定客戶機的IP地址(或主機名)及傳送端口號即可,下面是一段利用UDP初始化例程:

  #include

  #include

  #include

  #include

  #include

  #include

  intsock,length;

  structsockaddr_in,sockname;

  charbuff[1024];

  intInit_Socket()

  {

  char*clientName=“AW5101”;

  intportNum=10002;

  structhostent*hp,*gethostbyname();

  /*Creatsocketonwhichtosend.*/

  sock=socket(AF_INET,SOCK_DGRAM,0);

  if(sock==-1)

  {

  perror(“opendatagramsocketerr0r”);

  exit(1);

  }

  hp=gethostbyname(clientName);

  if(hp==(structhostent*)0)

  {

  printf(“unkownhost:%s\n”,clientName);

  exit(2);

  }

  memcpy((char*)&_addr,(char*)hp-》h_addr,hp-》h_length);

  _family=AF_INET;

  _port=htons(atoi(portNum);

  return(0);

  }……

  五 通訊安全性的考慮

  在采用了I/A’s和PC或其它DCS之間雙向通訊后,安全性就成為一個比較突出的問題,應(yīng)盡力避免不必要的人為破壞。安全性是一個非常復(fù)雜的問題,請參考專業(yè)文獻。在此不做詳細討論,只就一般性原則提出幾點建議:

  I.自行開發(fā)軟件時,必須考慮到安全性,包括對控制處理器數(shù)據(jù)的讀寫操作權(quán)限、軟件的事件處理功能(進程的意外中斷、程序的死循環(huán)、邊界處理、內(nèi)存的釋放等)、TCP/IP的操作權(quán)限。

  II.對于專業(yè)軟件,由于功能強大,在使用時,應(yīng)對軟件不必要的部分加以封閉,并對軟件的操作加以口令授權(quán)。

  III.建立通訊程序握手機制時,必須考慮安全性。

  IV.加強有關(guān)的安全性規(guī)章制度的建設(shè),避免人為的破壞。

  系統(tǒng)與MIS/SIS系統(tǒng)之間設(shè)置網(wǎng)關(guān),企業(yè)MIS/SIS系統(tǒng)聯(lián)結(jié)到INTERNET時配置防火墻。

  六 結(jié)論

  本文通過以諫壁發(fā)電廠使用的Foxboro公司的I/A’s系統(tǒng)為例,討論了DCS系統(tǒng)中實行通訊的幾種方法。歸納起來有:使用專業(yè)硬件、使用專門通訊軟件,以及自行開發(fā)軟件三種。

  對主流通訊協(xié)議(MODBUS、A-BPLC)以及通訊數(shù)據(jù)量較多時,采用專業(yè)通訊硬件實現(xiàn)通訊是一個比較好的辦法。這種配置方式的優(yōu)勢在于:通訊可靠、安全性好、容易實現(xiàn)、開發(fā)周期短;不足之處在于:增加了硬件投資。需要指出:在考慮MODBUS協(xié)議通訊時,不能只看有多少個模擬量/數(shù)字量,而必須同時考慮:有多少個設(shè)備,每個設(shè)備的通訊模擬量/數(shù)字量數(shù)據(jù)有多少,數(shù)據(jù)是否雙向傳送,通訊速率為多少。綜合考慮以上因數(shù)后,計算出需要多少個通訊處理器。

  專門的通訊軟件由于功能強大,在使用時首先要考慮的是安全性,同時要增加軟件費用(大型的數(shù)據(jù)庫如:PI,I-FIX等價格都比較貴)。但它也有非常明顯的優(yōu)勢:實現(xiàn)通訊容易、二次開發(fā)工具充足,項目周期短,項目質(zhì)量有保證。

  在需要實時傳送流程畫面時,當然應(yīng)采用專業(yè)通訊軟件,如:Exceed、GO_Global等。

  如果自行開發(fā)通訊程序,需要考慮的有:編程工具—C語言投資、程序的魯棒性、編程的工作量、項目周期、通訊效率、對工程師站/操作員站的CPU占用等問題。它的優(yōu)勢在于:開發(fā)靈活,容易實現(xiàn)用戶的各種特殊需求。

  如果通訊量不大(50點左右),建議使用增加I/O卡件,不同系統(tǒng)系統(tǒng)之間通過硬接線連接的方式實現(xiàn)。這樣既考慮到了總體投資、項目周期,也增加了系統(tǒng)的可靠性。

  如果通訊只提供RS-232通訊,則采用RS-232C協(xié)議進行通訊。

  如果通訊量較大,但時間間隔較長,可以考慮采用FTP方式傳送文本數(shù)據(jù)。

  如果通訊頻率較高,建議采用TCP/IP中的UDP協(xié)議進行通訊。

(轉(zhuǎn)載)

標簽:DCS 我要反饋 
2024世界人工智能大會專題
即刻點擊并下載ABB資料,好禮贏不停~
優(yōu)傲機器人下載中心
西克
2024全景工博會
專題報道