關(guān)鍵詞:PDS;串口;以太網(wǎng);泓格;I-7188EX
為什么需要設(shè)備服務(wù)器
在產(chǎn)業(yè)自動化應(yīng)用中,系統(tǒng)管理的數(shù)據(jù)源是由大量的基礎(chǔ)設(shè)備提供,包括:傳感器、二次儀表、PLC、CNC 控制臺、讀卡器、UPS、LED 看板等,而這些設(shè)備大部分均只提供RS-232 和RS-422/485 通訊介面。由這些設(shè)備所實現(xiàn)的自動化控制系統(tǒng),在架構(gòu)上是屬于孤立的封閉的系統(tǒng),在各控制系統(tǒng)之間,以及各控制系統(tǒng)與企業(yè)資源管理系統(tǒng)(ERP)之間無法實現(xiàn)數(shù)據(jù)的有效及時的交換,從而在傳統(tǒng)的自動化系統(tǒng)中形成了大量的“信息孤島”。
在當前的自動化應(yīng)用中,一個重要的趨勢是以太網(wǎng)技術(shù)的廣泛采用,企業(yè)的信息層均已采用Ethernet 完成通信,并進一步地延伸至車間級和現(xiàn)場級。以太網(wǎng)進軍工業(yè)自動化的最主要動力是:因普遍應(yīng)用所形成的硬件資源、軟件資源和廣泛支持。據(jù)相關(guān)統(tǒng)計,Ethernet 是世界上應(yīng)用最多的網(wǎng)絡(luò),超過93%的網(wǎng)絡(luò)節(jié)點為Ethernet。因為以太網(wǎng)節(jié)點的廣泛應(yīng)用,在近十年內(nèi)以太網(wǎng)通信速度的提高及采購成本的大幅降低是異常引人注目的趨勢。
基于TCP/IP 的Ethernet 構(gòu)成的工廠網(wǎng)絡(luò)的最大優(yōu)點是將工廠的商務(wù)網(wǎng)、車間的制造網(wǎng)絡(luò)和現(xiàn)場級的儀表、設(shè)備網(wǎng)絡(luò)構(gòu)成了暢通的透明網(wǎng)絡(luò),并與WEB 功能相結(jié)合,與工廠的電子商務(wù)、物資供應(yīng)鏈和ERP 等形成整體。
那么這是否意味著為了建立即時高效的以太網(wǎng)實時監(jiān)控系統(tǒng),那些缺少以太網(wǎng)或TCP/IP 聯(lián)網(wǎng)能力的設(shè)備和投資都過時了,必須將成功運行多年的原有系統(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)場機電工程師對TCP/IP、Socket API、網(wǎng)絡(luò)通信協(xié)議7 層架構(gòu)等網(wǎng)絡(luò)技術(shù)知識都不是很熟悉;同時作為已經(jīng)投入使用的SCADA 系統(tǒng),也不允許輕易改變I/O 的讀取方式。因此對于設(shè)備服務(wù)器最初的要求是以較低的價格、較高的可靠性使串口設(shè)備實現(xiàn)以太網(wǎng)聯(lián)網(wǎng)能力,對于SCADA 系統(tǒng)而言,通過外掛廠家提供的設(shè)備服務(wù)器驅(qū)動程序,使設(shè)備服務(wù)器的串口變成PC 管理終端的實端口,從而在不必重新撰寫SCADA 系統(tǒng)的I/O 驅(qū)動程序的前提下實現(xiàn)系統(tǒng)的快速升級。
[align=center]
圖二 泓格可編程設(shè)備服務(wù)器方案[/align]
但是在部分的進階應(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ù)器在出廠時即內(nèi)置有VCOM3009 的Firmware,用戶使用泓格提供的VxComm 驅(qū)動程序,可以將I-7188EN 的串口映射成PC 的標準串口(如COM3/COM4 等),一臺基于Windows 系統(tǒng)的PC 最多可以管理256 個串口設(shè)備,如圖四所示。VCOM3009 采用UDP 方式發(fā)送報文,可以允許多臺上位機訪問該串口設(shè)備服務(wù)器,根據(jù)網(wǎng)絡(luò)的數(shù)據(jù)流量的不同,4~8 臺上位PC均在系統(tǒng)的有效負荷能力之內(nèi)。
[align=center]
圖四 虛擬串口應(yīng)用方式[/align]
第二種方式屬于進階的應(yīng)用,利用泓格PDS 提供的特定的TCP 端口,通過Socket 存取數(shù)據(jù),這種方式可用于任何TCP/IP 的連接,而不會局限于某個特殊的操作系統(tǒng),或受限于某種特殊的設(shè)備,如圖五。常用的TCP 端口包括:
●Port502 為Modbus/TCP 端口
●Port9999 為I-8000E I/O 讀寫端口或自行定義
●Port10000 為設(shè)置端口或自行定義
●Port10001 為COM1
●Port10002 為COM2
......
利用泓格X-Server 集成開發(fā)環(huán)境提供的強大功能,用戶可以輕易地實現(xiàn)多種高級應(yīng)用模式,如TCP Server(允許串口設(shè)備被動連接到TCP 網(wǎng)絡(luò))、TCP Client(允許串口設(shè)備主動發(fā)送數(shù)據(jù))、UDP Server/Client(實現(xiàn)基于UDP 協(xié)議的快速封包傳送和多點數(shù)據(jù)傳送)等。X-Server 支持的功能包括:TCP/IP 函數(shù)庫;虛擬串口技術(shù);Modbus/TCP 函數(shù)庫等。其中TCP/IP 函數(shù)庫支持的以太網(wǎng)通訊協(xié)議包括:
●TCP 傳輸控制協(xié)議
●UDP 用戶數(shù)據(jù)報文協(xié)議
●IP Internet 協(xié)議
●ICMP Internet 控制信息協(xié)議
●ARP 地址分析協(xié)議
●RARP 保留的地址分析協(xié)議
[align=center]
圖五 TCP/IP Socket 編程方式[/align]
以下為透過泓格X-Server 集成開發(fā)環(huán)境實現(xiàn)的以太網(wǎng)通訊實例,從程序中可以看出, 程序員只需對BuildSocket 、ReceiveSocketBinaryCmd 、SendSocketBinaryCmd、KillSocket 等幾個簡單的函數(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。同時還提供C/C++的程示例序、文檔以及庫函數(shù),程序員只需要調(diào)用幾個簡單的函數(shù)(例如:GetDataFromWeb(void)等),甚至于根本無需編程,只要編寫幾個Html 文檔就可以使用Web server 功能,來完成IO 數(shù)據(jù)信息采集、信息發(fā)布和設(shè)備參數(shù)設(shè)定,從而達成以太網(wǎng)無遠弗屆的效果,如圖六所示。
[align=center]
圖六 Web Server 應(yīng)用方式[/align]
多功能可編程設(shè)備服務(wù)器
●上節(jié)中所涉及的PDS 均是基于DOS_Like 的操作系統(tǒng)所建立,在具體應(yīng)用中尚存在諸多的局限性,例如:
●不能提供友善的人機界面,當Local 需要顯示終端時,將必須使用一臺上位PC,未免有疊床架屋的嫌疑,而且在部分應(yīng)用場合,PC 因其設(shè)計上的缺陷,并不適合惡劣的工業(yè)環(huán)境。
●在編程上不能采用可視化編程技術(shù),只能采用如TC、BC 等編程方式,對程序員有一定要求。
●存儲量有限制,不能適應(yīng)大數(shù)據(jù)量存儲的要求。
針對此種應(yīng)用上的需求,市場迫切需要一種既具備普通PC 的特性,如:使用的便利性、網(wǎng)絡(luò)通信實現(xiàn)方式的多樣性、廣泛的第三方軟件支持、大容量的數(shù)據(jù)庫、友善的圖形人機界面等,同時又具備高可靠性的可編程設(shè)備服務(wù)器。泓格之LinCon系列正是符合此需求的平臺。
[align=center]
圖七 LinCon 系列多功能可編程設(shè)備服務(wù)器[/align]
●LinCon-8000 系列采用32-bit RISC CPU,提供與普通PC 相同的鍵盤/鼠標接口、以太網(wǎng)接口、USB 接口、標準VGA 接口等,存儲介質(zhì)為128MB Compact Flash。因為使用RISC 低功耗CPU,其整機功耗最大為20W,主機功耗為5W,及無磁盤、無風(fēng)扇架構(gòu)的特性,遠比工業(yè)PC 更能承受工業(yè)現(xiàn)場的惡劣環(huán)境。
●操作系統(tǒng)部份采用的是具實時內(nèi)核的Embedded Linux , 視窗畫面為QT-embedded window system。可以避免基于商業(yè)Windows 操作系統(tǒng)可能帶來的系統(tǒng)”當機”的困擾,同時也可以提供更高的網(wǎng)絡(luò)安全特性。
●除視窗操作畫面外,LinCon 也配置了DHCP、Http、FTP、Telnet、SSH 和SFTP Servers 等功能,可以實現(xiàn)WEB-Based I/O Control。
●內(nèi)建MySQL 數(shù)據(jù)庫引擎,大為提升在本機處理數(shù)據(jù)庫的能力。LinCon 的缺省配置為128 MB Compact Flash 存儲空間(此為用戶的應(yīng)用程序及數(shù)據(jù)存儲空間,操作系統(tǒng)映像保存在獨立的32MB Flash 中),用戶可升級至1GB,也可通過USB外接USB 硬盤,實現(xiàn)海量數(shù)據(jù)存儲。
●系統(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)用
項目背景:該應(yīng)用為山東某化工廠之關(guān)鍵生產(chǎn)線緊急停車系統(tǒng),原本只是用一臺iFix 工作站與HonyWell FCS 2004D 系統(tǒng)聯(lián)結(jié),后來iFix 工作站增加到三臺,而該HonyWell 從站設(shè)備只提供一個RS-232 串口。一般來說,RS-232 只能一對一聯(lián)結(jié)兩端 (即一臺 PC 和一臺 HoneyWell),無法一個串口同時連接三臺 PC。
方案一:通過RS-232 至RS-485 的隔離轉(zhuǎn)換器將HoneyWell2004D 的RS-232轉(zhuǎn)換為RS-485,因為RS-485 具有廣播的特性,允許在一條總線上有多個設(shè)備同時工作。這一方案實現(xiàn)了多個iFix 客戶端同時對一臺從機,但是還是有問題。如圖八:Request 是由第二臺送出的,應(yīng)該只有第二臺收到Response,可是其它兩臺會因為RS-485 的廣播特性,也都收到這個Response。這樣,會把另外兩臺PC 搞混淆了。所以這是一個不可行的解決方案。
[align=center]
圖八 不可行的解決方案[/align]
方案二:所以解決的辦法應(yīng)該是在iFix 工作站和HoneyWell2004D 之間加上一個通訊控制器,來實現(xiàn)PC 和從站設(shè)備間的通訊流量控制,實現(xiàn)分時通訊。最簡便的方式是在3 臺iFix 工作站和HoneyWell2004D 之間加一顆Ethernet/RS-232 的串口設(shè)備服務(wù)器,采用虛擬串口的方式實現(xiàn)iFix 工作站的分時訪問。這個方式實現(xiàn)最容易,可以滿足系統(tǒng)升級的設(shè)定,實現(xiàn)iFix 工作站對從站設(shè)備的同時訪問;同時工作站與串口設(shè)備服務(wù)器間采用以太網(wǎng)方式,通訊速度大為提高。但是因為HoneyWell2004D 的波特率最快只能調(diào)到 38400Kbps,對于此架構(gòu)而言,每臺iFix工作站的通信請求該設(shè)備服務(wù)器都需要進行轉(zhuǎn)發(fā),整個系統(tǒng)的效率會因為串口設(shè)備服務(wù)器和HoneyWell2004D 之間通訊時間過長的瓶頸而降低。所以這是一個不具效率的解決方案。
[align=center]
圖九 不具效率的解決方案之一[/align]
方案三:將上述之通用型串口設(shè)備服務(wù)器換成 Modbus/TCP 至Modbus/RTU 的Gateway——I-7188EX-MTCP,粗看上去也許會帶來效率的提高,但是其結(jié)果與方案三一樣。只要該設(shè)備服務(wù)器和HoneyWell2004D 間的數(shù)據(jù)量無法減少,整個系統(tǒng)在掃描時間上的的瓶頸就無法解決。所以這仍然是一個不具效率的解決方案。
方案四:綜上所述,問題的核心是如何將設(shè)備服務(wù)器和HoneyWell2004D 之間的通訊量減到最低以提升系統(tǒng)的效率。我們還是采用方案三的設(shè)備服務(wù)器,因為I-7188EX-MTCP 提供用戶編程的設(shè)定,可以透過修改Modbus Firmware 的核心,將HoneyWell2004D 的數(shù)據(jù)全部收集到I-7188EX-MTCP 內(nèi)的共享內(nèi)存(Share Memory)中,而3 臺iFix 工作站都直接以Modbus/TCP 的協(xié)議透過共享內(nèi)存取得HoneyWell2004D 的所有數(shù)據(jù)。
[align=center]
圖十 完美的解決方案[/align]
這種方式,對于iFix 工作站而言,它們隨時可以來I-7188EX-MTCP 的共享內(nèi)存抓數(shù)據(jù),而且抓了就走。這部分,純粹只有Ethernet 的通訊,速度很快,iFix 工作站花在通訊上面的時間,會比原來通過串口直接以Modbus/RTU 的方式和HoneyWell2004D 通訊, 節(jié)省更多時間。而I-7188EX-MTCP 的共享內(nèi)存和HoenyWell2004D 之間的數(shù)據(jù)交換、更新,是屬于在后臺處理,iFix 工作站在取得共享內(nèi)存中的數(shù)據(jù)時,根本不需要關(guān)心這一部分是否完成了。而且I-7188EX-MTCP和HoneyWell2004D 之間的通訊量,不管Ethernet 端有幾個客戶端,RS-232 端都只會有一次的通訊量,這就給未來的系統(tǒng)升級留下了充分的余量,而且可以進一步定制各客戶端與I-7188EX-MTCP 之間數(shù)據(jù)交換的內(nèi)容,以更充分地發(fā)揮系統(tǒng)的效
能。
在程序修改的部分,因該Modbus Firmware 已經(jīng)提供與Modbus 客戶端通訊德能力,同時也提供現(xiàn)成的庫函數(shù)實現(xiàn)I-7188E-MTCP 和其它Modbus/RTU 設(shè)備間的數(shù)據(jù)交換。所以程序員只要修改Firmware 中與HoneyWell2004D 設(shè)備通訊的代碼,將數(shù)據(jù)存入共享內(nèi)存中就可以了。
所以這一方案是一個完美的解決方案。用最小的成本和最少的程序開發(fā)時間完成了系統(tǒng)設(shè)計的最初構(gòu)想,并為系統(tǒng)未來的升級留下了充分的想象空間。事實上PDS可編程設(shè)備服務(wù)器的應(yīng)用領(lǐng)域還非常的多,有待大家在具體的應(yīng)用中進一步發(fā)揮其效能,例如以下的所列的一些領(lǐng)域:
●門禁控制和安防管理系統(tǒng)
●建筑自動化
●LED 狀態(tài)顯示設(shè)備
●SCADA、測量儀器及監(jiān)控系統(tǒng)
●工廠自動化
●PLC 控制與管理
●CNC 管理
●醫(yī)療/化工自動化
●電力監(jiān)視系統(tǒng)
●POS 終端機
●遠端圖像傳輸
●其它RS-232/422/485 設(shè)備聯(lián)網(wǎng)應(yīng)用