DCS

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

ainet.cn   2014年03月18日

  一 簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  3.2流程畫面的實(shí)時(shí)傳送

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  lOMCALL函數(shù)–實(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ù)實(shí)現(xiàn)單個(gè)數(shù)據(jù)的讀操作。

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

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

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

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

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

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

  2intomopen(structom_header_node*om_descriptor,intopen_id)

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

  2intomread(intomopen_id,intsize_list,structvalue*var_list)

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

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

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

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

  此函數(shù)實(shí)現(xiàn)關(guān)閉一個(gè)已經(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特點(diǎn)

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

  lFOXAPI函數(shù)–實(shí)現(xiàn)I/A’s系統(tǒng)內(nèi)部數(shù)據(jù)的讀寫操作及強(qiáng)大的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ù)實(shí)現(xiàn)以連續(xù)更新的方式打開一個(gè)讀寫SET。

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

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

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

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

  2intclsset(intdset,int*reterr)

  此函數(shù)實(shí)現(xiàn)關(guān)閉一個(gè)已經(jīng)打開SET,釋放程序所使用的內(nèi)存空間,釋放對(duì)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特點(diǎn)

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

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

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

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

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

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

  2intvpt(floatp,floatt,float*v)

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

  2inthpt_stm(floatp,floatt,float*h)

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

  2intspt_stm(floatp,floatt,float*s)

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

  2inthpt_wtr(floatp,floatt,float*h)

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

  2intspt_wtr(floatp,floatt,float*s)

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

  2inthpt_air(floatp,floatt,float*h)

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

  2intspt_air(floatp,floatt,float*s)

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

  lINFORMIX編程。

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

  4.2通訊的實(shí)現(xiàn)

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

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

  用RS-232實(shí)現(xiàn)通訊時(shí),首先應(yīng)初始化通訊端口,然后可以按RS-232通訊規(guī)程(RXD,TXD,RTS,CTS,DSR,DTR,DCD信號(hào)),發(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進(jìn)行通訊的是PC機(jī)或其它DCS,比較好的通訊辦法是利用RJ-45等通訊口,按FTP協(xié)議或TCP/IP協(xié)議進(jìn)行通訊。其中,F(xiàn)TP通訊的效率較低,且一直有讀盤/寫盤動(dòng)作,對(duì)機(jī)器的影響較大,但此方法比較簡(jiǎn)單,容易實(shí)現(xiàn),因此,在通訊不頻繁的時(shí)候(建議大于一小時(shí)),也可以采用這個(gè)辦法。在更多的時(shí)候,則建議使用TCP/IP協(xié)議進(jìn)行通訊。

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

  UDP通訊的程序的編寫也比較容易,只需指定客戶機(jī)的IP地址(或主機(jī)名)及傳送端口號(hào)即可,下面是一段利用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之間雙向通訊后,安全性就成為一個(gè)比較突出的問題,應(yīng)盡力避免不必要的人為破壞。安全性是一個(gè)非常復(fù)雜的問題,請(qǐng)參考專業(yè)文獻(xiàn)。在此不做詳細(xì)討論,只就一般性原則提出幾點(diǎn)建議:

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

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

  III.建立通訊程序握手機(jī)制時(shí),必須考慮安全性。

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

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

  六 結(jié)論

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

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

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

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

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

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

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

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

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

(轉(zhuǎn)載)

標(biāo)簽:DCS 我要反饋 
泰科電子ECK、ECP系列高壓直流接觸器白皮書下載
優(yōu)傲機(jī)器人下載中心
億萬克
專題報(bào)道