關(guān)鍵詞:PDS;串口;以太網(wǎng);泓格;I-7188EX
為什么需要設(shè)備服務(wù)器
在產(chǎn)業(yè)自動(dòng)化應(yīng)用中,系統(tǒng)管理的數(shù)據(jù)源是由大量的基礎(chǔ)設(shè)備提供,包括:傳感器、二次儀表、PLC、CNC 控制臺(tái)、讀卡器、UPS、LED 看板等,而這些設(shè)備大部分均只提供RS-232 和RS-422/485 通訊介面。由這些設(shè)備所實(shí)現(xiàn)的自動(dòng)化控制系統(tǒng),在架構(gòu)上是屬于孤立的封閉的系統(tǒng),在各控制系統(tǒng)之間,以及各控制系統(tǒng)與企業(yè)資源管理系統(tǒng)(ERP)之間無法實(shí)現(xiàn)數(shù)據(jù)的有效及時(shí)的交換,從而在傳統(tǒng)的自動(dòng)化系統(tǒng)中形成了大量的“信息孤島”。
在當(dāng)前的自動(dòng)化應(yīng)用中,一個(gè)重要的趨勢是以太網(wǎng)技術(shù)的廣泛采用,企業(yè)的信息層均已采用Ethernet 完成通信,并進(jìn)一步地延伸至車間級和現(xiàn)場級。以太網(wǎng)進(jìn)軍工業(yè)自動(dòng)化的最主要?jiǎng)恿κ牵阂蚱毡閼?yīng)用所形成的硬件資源、軟件資源和廣泛支持。據(jù)相關(guān)統(tǒng)計(jì),Ethernet 是世界上應(yīng)用最多的網(wǎng)絡(luò),超過93%的網(wǎng)絡(luò)節(jié)點(diǎn)為Ethernet。因?yàn)橐蕴W(wǎng)節(jié)點(diǎn)的廣泛應(yīng)用,在近十年內(nèi)以太網(wǎng)通信速度的提高及采購成本的大幅降低是異常引人注目的趨勢。
基于TCP/IP 的Ethernet 構(gòu)成的工廠網(wǎng)絡(luò)的最大優(yōu)點(diǎn)是將工廠的商務(wù)網(wǎng)、車間的制造網(wǎng)絡(luò)和現(xiàn)場級的儀表、設(shè)備網(wǎng)絡(luò)構(gòu)成了暢通的透明網(wǎng)絡(luò),并與WEB 功能相結(jié)合,與工廠的電子商務(wù)、物資供應(yīng)鏈和ERP 等形成整體。
那么這是否意味著為了建立即時(shí)高效的以太網(wǎng)實(shí)時(shí)監(jiān)控系統(tǒng),那些缺少以太網(wǎng)或TCP/IP 聯(lián)網(wǎng)能力的設(shè)備和投資都過時(shí)了,必須將成功運(yùn)行多年的原有系統(tǒng)均淘汰重建?答案是否定的!籍由串口設(shè)備聯(lián)網(wǎng)服務(wù)器提供的犀利功能,可以使您的串口設(shè)備立刻成為具備以太網(wǎng)聯(lián)網(wǎng)能力的網(wǎng)絡(luò)設(shè)備,如圖一所示:
[align=center]
圖一:串口設(shè)備立即聯(lián)網(wǎng)乃大勢所趨[/align]
考慮到大部分的現(xiàn)場機(jī)電工程師對TCP/IP、Socket API、網(wǎng)絡(luò)通信協(xié)議7 層架構(gòu)等網(wǎng)絡(luò)技術(shù)知識(shí)都不是很熟悉;同時(shí)作為已經(jīng)投入使用的SCADA 系統(tǒng),也不允許輕易改變I/O 的讀取方式。因此對于設(shè)備服務(wù)器最初的要求是以較低的價(jià)格、較高的可靠性使串口設(shè)備實(shí)現(xiàn)以太網(wǎng)聯(lián)網(wǎng)能力,對于SCADA 系統(tǒng)而言,通過外掛廠家提供的設(shè)備服務(wù)器驅(qū)動(dòng)程序,使設(shè)備服務(wù)器的串口變成PC 管理終端的實(shí)端口,從而在不必重新撰寫SCADA 系統(tǒng)的I/O 驅(qū)動(dòng)程序的前提下實(shí)現(xiàn)系統(tǒng)的快速升級。
[align=center]
圖二 泓格可編程設(shè)備服務(wù)器方案[/align]
但是在部分的進(jìn)階應(yīng)用中,此種模式存在較大的局限性,因此業(yè)界開始提出可編程設(shè)備服務(wù)器(Programmable Device Server,PDS)的概念,以解決此問題。在各廠家中,以ICPDAS 泓格為得風(fēng)氣之先者。針對不同的應(yīng)用場合,泓格提供高中低搭配的可編程設(shè)備服務(wù)器的方案,如圖二所示:
在下文中筆者將就泓格PDS 的定位及應(yīng)用方式加以說明,在文章的最后,將以山東某化工廠的應(yīng)用為例具體說明采用PDS 與傳統(tǒng)設(shè)備服務(wù)器之間的區(qū)別。
可編程設(shè)備服務(wù)器PDS 的應(yīng)用方式
[align=center]
圖三 泓格PDS 的應(yīng)用方式[/align]
如上圖,PDS 可以有三種應(yīng)用方式:虛擬串口(Virtual COM)方式、TCP/IP Socket 編程方式、Web Server 方式。其中虛擬串口方式為一般設(shè)備服務(wù)器常用的應(yīng)用方式,以I-7188EN 為例:該設(shè)備服務(wù)器在出廠時(shí)即內(nèi)置有VCOM3009 的Firmware,用戶使用泓格提供的VxComm 驅(qū)動(dòng)程序,可以將I-7188EN 的串口映射成PC 的標(biāo)準(zhǔn)串口(如COM3/COM4 等),一臺(tái)基于Windows 系統(tǒng)的PC 最多可以管理256 個(gè)串口設(shè)備,如圖四所示。VCOM3009 采用UDP 方式發(fā)送報(bào)文,可以允許多臺(tái)上位機(jī)訪問該串口設(shè)備服務(wù)器,根據(jù)網(wǎng)絡(luò)的數(shù)據(jù)流量的不同,4~8 臺(tái)上位PC均在系統(tǒng)的有效負(fù)荷能力之內(nèi)。
[align=center]
圖四 虛擬串口應(yīng)用方式[/align]
第二種方式屬于進(jìn)階的應(yīng)用,利用泓格PDS 提供的特定的TCP 端口,通過Socket 存取數(shù)據(jù),這種方式可用于任何TCP/IP 的連接,而不會(huì)局限于某個(gè)特殊的操作系統(tǒng),或受限于某種特殊的設(shè)備,如圖五。常用的TCP 端口包括:
●Port502 為Modbus/TCP 端口
●Port9999 為I-8000E I/O 讀寫端口或自行定義
●Port10000 為設(shè)置端口或自行定義
●Port10001 為COM1
●Port10002 為COM2
......
利用泓格X-Server 集成開發(fā)環(huán)境提供的強(qiáng)大功能,用戶可以輕易地實(shí)現(xiàn)多種高級應(yīng)用模式,如TCP Server(允許串口設(shè)備被動(dòng)連接到TCP 網(wǎng)絡(luò))、TCP Client(允許串口設(shè)備主動(dòng)發(fā)送數(shù)據(jù))、UDP Server/Client(實(shí)現(xiàn)基于UDP 協(xié)議的快速封包傳送和多點(diǎn)數(shù)據(jù)傳送)等。X-Server 支持的功能包括:TCP/IP 函數(shù)庫;虛擬串口技術(shù);Modbus/TCP 函數(shù)庫等。其中TCP/IP 函數(shù)庫支持的以太網(wǎng)通訊協(xié)議包括:
●TCP 傳輸控制協(xié)議
●UDP 用戶數(shù)據(jù)報(bào)文協(xié)議
●IP Internet 協(xié)議
●ICMP Internet 控制信息協(xié)議
●ARP 地址分析協(xié)議
●RARP 保留的地址分析協(xié)議
[align=center]
圖五 TCP/IP Socket 編程方式[/align]
以下為透過泓格X-Server 集成開發(fā)環(huán)境實(shí)現(xiàn)的以太網(wǎng)通訊實(shí)例,從程序中可以看出, 程序員只需對BuildSocket 、ReceiveSocketBinaryCmd 、SendSocketBinaryCmd、KillSocket 等幾個(gè)簡單的函數(shù)進(jìn)行參數(shù)設(shè)定,即可實(shí)現(xiàn)網(wǎng)絡(luò)通信,而無需復(fù)雜編程。
*******************************************
#include
#include
#include "..\..\lib\8000.h"
#include "..\..\lib\VXCOMM.H"
#include "Vsocket.h"
#define SVR_PORT 5000 //server linst port
#define SVR_IP "192.168.0.18" //server ip address
extern int bLedControl;
int iNeedConnect,iOutskt;
unsigned char iTemp=1;
void UserInit(void)
{
InstallCom1(115200L,8,0);
EnableWDT(); //Watch dog enable
TimerOpen(); //add display fun
StopWatchStart(0); //Timer(0)
iNeedConnect=1; //tcp link need connect
}
void UserLoopFun(void)
{
unsigned long t_value;
int i;
int iHour,iMin,iSec;
int iRet,iSend=0;
unsigned char ch, TimeBuf[9],OutBuf[1024],InBuf[1024];
RefreshWDT();
//*************************************
//* Build TCP/IP Socket
//*************************************
if(iNeedConnect) //TCP Cennect
{
iOutskt=BuildSocket(SVR_IP,SVR_PORT,200); //buildsockets
printCom1("Building Sockot... SKTNO:%d\n\r",iOutskt);
if(iOutskt!=-1)
{
iNeedConnect=0;
}
}
//*************************************
//* send data
//*************************************
StopWatchReadValue(0,&t_value);
RefreshWDT();
if(t_value>1000)
{
StopWatchReset(0);
iSend=1; //send flag
GetTime(&iHour,&iMin,&iSec);
sprintf(TimeBuf,"%02d:%02d:%02d",iHour,iMin,iSec);
strcpy(OutBuf,TimeBuf);
if(iOutskt>0)
{
iRet=ReceiveSocketBinaryCmd(iOutskt,InBuf,100,100);
if(iRet > 0)
{
ToCom1Bufn(InBuf,strlen(InBuf));
ToCom1Str("\n\r");
if(strcmp(InBuf,"$PRINT$")==0)
{
printCom1("Out:%x\n\r",iTemp);
DO_8(3,iTemp);
iTemp=iTemp<<1;
if(iTemp==0) iTemp=1;
}
}
}
}
//*************************************
//* Send OutBuff
//*************************************
RefreshWDT();
if(iSend==1 )
{
if (iOutskt)
{
iRet=SendSocketBinaryCmd(iOutskt,OutBuf,strlen(OutBuf));
}
if (iRet < 0)
{
KillSocket(iOutskt);
iNeedConnect = 1;
}
else
{
iSend=0;
}
}
}
int UserCmd(unsigned char *Cmd,unsigned char *Response)
{
return 1; /* return no error */
}
void UserCount(void)
{
//user defined count event;
}
int VcomUserBinaryCmd(TCPREADDATA *p)
{
return 1; /* any value will be accept */
}
int VcomCmdUser(TCPREADDATA *p)
{
return 1; /* any value will be accept */
}
*******************************************
PDS 的第三種應(yīng)用方式為Web Server 方式,泓格提供Web server 開發(fā)框架,該開發(fā)框架支持Form 表單和CGI。同時(shí)還提供C/C++的程示例序、文檔以及庫函數(shù),程序員只需要調(diào)用幾個(gè)簡單的函數(shù)(例如:GetDataFromWeb(void)等),甚至于根本無需編程,只要編寫幾個(gè)Html 文檔就可以使用Web server 功能,來完成IO 數(shù)據(jù)信息采集、信息發(fā)布和設(shè)備參數(shù)設(shè)定,從而達(dá)成以太網(wǎng)無遠(yuǎn)弗屆的效果,如圖六所示。
[align=center]
圖六 Web Server 應(yīng)用方式[/align]
多功能可編程設(shè)備服務(wù)器
●上節(jié)中所涉及的PDS 均是基于DOS_Like 的操作系統(tǒng)所建立,在具體應(yīng)用中尚存在諸多的局限性,例如:
●不能提供友善的人機(jī)界面,當(dāng)Local 需要顯示終端時(shí),將必須使用一臺(tái)上位PC,未免有疊床架屋的嫌疑,而且在部分應(yīng)用場合,PC 因其設(shè)計(jì)上的缺陷,并不適合惡劣的工業(yè)環(huán)境。
●在編程上不能采用可視化編程技術(shù),只能采用如TC、BC 等編程方式,對程序員有一定要求。
●存儲(chǔ)量有限制,不能適應(yīng)大數(shù)據(jù)量存儲(chǔ)的要求。
針對此種應(yīng)用上的需求,市場迫切需要一種既具備普通PC 的特性,如:使用的便利性、網(wǎng)絡(luò)通信實(shí)現(xiàn)方式的多樣性、廣泛的第三方軟件支持、大容量的數(shù)據(jù)庫、友善的圖形人機(jī)界面等,同時(shí)又具備高可靠性的可編程設(shè)備服務(wù)器。泓格之LinCon系列正是符合此需求的平臺(tái)。
[align=center]
圖七 LinCon 系列多功能可編程設(shè)備服務(wù)器[/align]
●LinCon-8000 系列采用32-bit RISC CPU,提供與普通PC 相同的鍵盤/鼠標(biāo)接口、以太網(wǎng)接口、USB 接口、標(biāo)準(zhǔn)VGA 接口等,存儲(chǔ)介質(zhì)為128MB Compact Flash。因?yàn)槭褂肦ISC 低功耗CPU,其整機(jī)功耗最大為20W,主機(jī)功耗為5W,及無磁盤、無風(fēng)扇架構(gòu)的特性,遠(yuǎn)比工業(yè)PC 更能承受工業(yè)現(xiàn)場的惡劣環(huán)境。
●操作系統(tǒng)部份采用的是具實(shí)時(shí)內(nèi)核的Embedded Linux , 視窗畫面為QT-embedded window system??梢员苊饣谏虡I(yè)Windows 操作系統(tǒng)可能帶來的系統(tǒng)”當(dāng)機(jī)”的困擾,同時(shí)也可以提供更高的網(wǎng)絡(luò)安全特性。
●除視窗操作畫面外,LinCon 也配置了DHCP、Http、FTP、Telnet、SSH 和SFTP Servers 等功能,可以實(shí)現(xiàn)WEB-Based I/O Control。
●內(nèi)建MySQL 數(shù)據(jù)庫引擎,大為提升在本機(jī)處理數(shù)據(jù)庫的能力。LinCon 的缺省配置為128 MB Compact Flash 存儲(chǔ)空間(此為用戶的應(yīng)用程序及數(shù)據(jù)存儲(chǔ)空間,操作系統(tǒng)映像保存在獨(dú)立的32MB Flash 中),用戶可升級至1GB,也可通過USB外接USB 硬盤,實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ)。
●系統(tǒng)開發(fā)工具用戶可選C 或JAVA,LinCon 內(nèi)建JVM,在應(yīng)用程序開發(fā)方面LinCon 提供多種SDK,如:用于GUI 開發(fā)的SDK,Microsoft desktop OS Cross platform SDK,Modbus TCP/IP SDK,DCON I/O SDK 等。
可編程設(shè)備服務(wù)器在化工廠關(guān)鍵生產(chǎn)線緊急停車系統(tǒng)中的典型應(yīng)用
項(xiàng)目背景:該應(yīng)用為山東某化工廠之關(guān)鍵生產(chǎn)線緊急停車系統(tǒng),原本只是用一臺(tái)iFix 工作站與HonyWell FCS 2004D 系統(tǒng)聯(lián)結(jié),后來iFix 工作站增加到三臺(tái),而該HonyWell 從站設(shè)備只提供一個(gè)RS-232 串口。一般來說,RS-232 只能一對一聯(lián)結(jié)兩端 (即一臺(tái) PC 和一臺(tái) HoneyWell),無法一個(gè)串口同時(shí)連接三臺(tái) PC。
方案一:通過RS-232 至RS-485 的隔離轉(zhuǎn)換器將HoneyWell2004D 的RS-232轉(zhuǎn)換為RS-485,因?yàn)镽S-485 具有廣播的特性,允許在一條總線上有多個(gè)設(shè)備同時(shí)工作。這一方案實(shí)現(xiàn)了多個(gè)iFix 客戶端同時(shí)對一臺(tái)從機(jī),但是還是有問題。如圖八:Request 是由第二臺(tái)送出的,應(yīng)該只有第二臺(tái)收到Response,可是其它兩臺(tái)會(huì)因?yàn)镽S-485 的廣播特性,也都收到這個(gè)Response。這樣,會(huì)把另外兩臺(tái)PC 搞混淆了。所以這是一個(gè)不可行的解決方案。
[align=center]
圖八 不可行的解決方案[/align]
方案二:所以解決的辦法應(yīng)該是在iFix 工作站和HoneyWell2004D 之間加上一個(gè)通訊控制器,來實(shí)現(xiàn)PC 和從站設(shè)備間的通訊流量控制,實(shí)現(xiàn)分時(shí)通訊。最簡便的方式是在3 臺(tái)iFix 工作站和HoneyWell2004D 之間加一顆Ethernet/RS-232 的串口設(shè)備服務(wù)器,采用虛擬串口的方式實(shí)現(xiàn)iFix 工作站的分時(shí)訪問。這個(gè)方式實(shí)現(xiàn)最容易,可以滿足系統(tǒng)升級的設(shè)定,實(shí)現(xiàn)iFix 工作站對從站設(shè)備的同時(shí)訪問;同時(shí)工作站與串口設(shè)備服務(wù)器間采用以太網(wǎng)方式,通訊速度大為提高。但是因?yàn)镠oneyWell2004D 的波特率最快只能調(diào)到 38400Kbps,對于此架構(gòu)而言,每臺(tái)iFix工作站的通信請求該設(shè)備服務(wù)器都需要進(jìn)行轉(zhuǎn)發(fā),整個(gè)系統(tǒng)的效率會(huì)因?yàn)榇谠O(shè)備服務(wù)器和HoneyWell2004D 之間通訊時(shí)間過長的瓶頸而降低。所以這是一個(gè)不具效率的解決方案。
[align=center]
圖九 不具效率的解決方案之一[/align]
方案三:將上述之通用型串口設(shè)備服務(wù)器換成 Modbus/TCP 至Modbus/RTU 的Gateway——I-7188EX-MTCP,粗看上去也許會(huì)帶來效率的提高,但是其結(jié)果與方案三一樣。只要該設(shè)備服務(wù)器和HoneyWell2004D 間的數(shù)據(jù)量無法減少,整個(gè)系統(tǒng)在掃描時(shí)間上的的瓶頸就無法解決。所以這仍然是一個(gè)不具效率的解決方案。
方案四:綜上所述,問題的核心是如何將設(shè)備服務(wù)器和HoneyWell2004D 之間的通訊量減到最低以提升系統(tǒng)的效率。我們還是采用方案三的設(shè)備服務(wù)器,因?yàn)镮-7188EX-MTCP 提供用戶編程的設(shè)定,可以透過修改Modbus Firmware 的核心,將HoneyWell2004D 的數(shù)據(jù)全部收集到I-7188EX-MTCP 內(nèi)的共享內(nèi)存(Share Memory)中,而3 臺(tái)iFix 工作站都直接以Modbus/TCP 的協(xié)議透過共享內(nèi)存取得HoneyWell2004D 的所有數(shù)據(jù)。
[align=center]
圖十 完美的解決方案[/align]
這種方式,對于iFix 工作站而言,它們隨時(shí)可以來I-7188EX-MTCP 的共享內(nèi)存抓數(shù)據(jù),而且抓了就走。這部分,純粹只有Ethernet 的通訊,速度很快,iFix 工作站花在通訊上面的時(shí)間,會(huì)比原來通過串口直接以Modbus/RTU 的方式和HoneyWell2004D 通訊, 節(jié)省更多時(shí)間。而I-7188EX-MTCP 的共享內(nèi)存和HoenyWell2004D 之間的數(shù)據(jù)交換、更新,是屬于在后臺(tái)處理,iFix 工作站在取得共享內(nèi)存中的數(shù)據(jù)時(shí),根本不需要關(guān)心這一部分是否完成了。而且I-7188EX-MTCP和HoneyWell2004D 之間的通訊量,不管Ethernet 端有幾個(gè)客戶端,RS-232 端都只會(huì)有一次的通訊量,這就給未來的系統(tǒng)升級留下了充分的余量,而且可以進(jìn)一步定制各客戶端與I-7188EX-MTCP 之間數(shù)據(jù)交換的內(nèi)容,以更充分地發(fā)揮系統(tǒng)的效
能。
在程序修改的部分,因該Modbus Firmware 已經(jīng)提供與Modbus 客戶端通訊德能力,同時(shí)也提供現(xiàn)成的庫函數(shù)實(shí)現(xiàn)I-7188E-MTCP 和其它Modbus/RTU 設(shè)備間的數(shù)據(jù)交換。所以程序員只要修改Firmware 中與HoneyWell2004D 設(shè)備通訊的代碼,將數(shù)據(jù)存入共享內(nèi)存中就可以了。
所以這一方案是一個(gè)完美的解決方案。用最小的成本和最少的程序開發(fā)時(shí)間完成了系統(tǒng)設(shè)計(jì)的最初構(gòu)想,并為系統(tǒng)未來的升級留下了充分的想象空間。事實(shí)上PDS可編程設(shè)備服務(wù)器的應(yīng)用領(lǐng)域還非常的多,有待大家在具體的應(yīng)用中進(jìn)一步發(fā)揮其效能,例如以下的所列的一些領(lǐng)域:
●門禁控制和安防管理系統(tǒng)
●建筑自動(dòng)化
●LED 狀態(tài)顯示設(shè)備
●SCADA、測量儀器及監(jiān)控系統(tǒng)
●工廠自動(dòng)化
●PLC 控制與管理
●CNC 管理
●醫(yī)療/化工自動(dòng)化
●電力監(jiān)視系統(tǒng)
●POS 終端機(jī)
●遠(yuǎn)端圖像傳輸
●其它RS-232/422/485 設(shè)備聯(lián)網(wǎng)應(yīng)用