为什么需要设备服务器在产业
自动化应用中,系统管理的数据源是由大量的基础设备提供,包括:
传感器、二次仪表、
PLC、CNC控制台、读卡器、UPS、LED看板等,而这些设备大部分均只提供RS-232和RS-422\485通讯介面。由这些设备所实现的自动化控制系统,在架构上是属于孤立的封闭的系统,在各控制系统之间,以及各控制系统与企业资源管理系统(ERP)之间无法实现数据的有效及时的交换,从而在传统的自动化系统中形成了大量的“信息孤岛”。
在当前的自动化应用中,一个重要的趋势是以太网技术的广泛采用,企业的信息层均已采用Ethernet完成通信,并进一步地延伸至车间级和现场级。以太网进军工业自动化的最主要动力是:因普遍应用所形成的硬件资源、软件资源和广泛支持。据相关统计,Ethernet是世界上应用最多的网络,超过93%的网络节点为Ethernet。因为以太网节点的广泛应用,在近十年内以太网通信速度的提高及采购成本的大幅降低是异常引人注目的趋势。
基于TCP\IP的Ethernet构成的工厂网络的最大优点是将工厂的商务网、车间的制造网络和现场级的仪表、设备网络构成了畅通的透明网络,并与WEB功能相结合,与工厂的电子商务、物资供应链和ERP等形成整体。
那么这是否意味着为了建立即时高效的以太网实时监控系统,那些缺少以太网或TCP\IP联网能力的设备和投资都过时了,必须将成功运行多年的原有系统均淘汰重建?答案是否定的!籍由串口设备联网服务器提供的犀利功能,可以使您的串口设备立刻成为具备以太网联网能力的网络设备,如图一所示:

图一:串口设备立即联网乃大势所趋
考虑到大部分的现场机电工程师对TCP\IP、Socket API、网络通信协议7层架构等网络技术知识都不是很熟悉;同时作为已经投入使用的SCADA系统,也不允许轻易改变I\O的读取方式。因此对于设备服务器最初的要求是以较低的价格、较高的可靠性使串口设备实现以太网联网能力,对于SCADA系统而言,通过外挂厂家提供的设备服务器驱动程序,使设备服务器的串口变成PC管理终端的实端口,从而在不必重新撰写SCADA系统的I\O驱动程序的前提下实现系统的快速升级。

图二 泓格可编程设备服务器方案
但是在部分的进阶应用中,此种模式存在较大的局限性,因此业界开始提出可编程设备服务器(Programmable Device Server,PDS)的概念,以解决此问题。在各厂家中,以
ICPDas泓格为得风气之先者。针对不同的应用场合,泓格提供高中低搭配的可编程设备服务器的方案,如图二所示:
在下文中笔者将就泓格PDS的定位及应用方式加以说明,在文章的最后,将以山东某化工厂的应用为例具体说明采用PDS与传统设备服务器之间的区别。
可编程设备服务器PDS的应用方式
图三 泓格PDS的应用方式
如上图,PDS可以有三种应用方式:虚拟串口(Virtual COM)方式、TCP\IP Socket编程方式、Web Server方式。其中虚拟串口方式为一般设备服务器常用的应用方式,以I-7188EN为例:该设备服务器在出厂时即内置有VCOM3009的Firmware,用户使用泓格提供的VxComm驱动程序,可以将I-7188EN的串口映射成PC的标准串口(如COM3\COM4等),一台基于Windows系统的PC最多可以管理256个串口设备,如图四所示。VCOM3009采用UDP方式发送报文,可以允许多台上位机访问该串口设备服务器,根据网络的数据流量的不同,4~8台上位PC均在系统的有效负荷能力之内。

图四 虚拟串口应用方式
第二种方式属于进阶的应用,利用泓格PDS提供的特定的TCP端口,通过Socket存取数据,这种方式可用于任何TCP\IP的连接,而不会局限于某个特殊的操作系统,或受限于某种特殊的设备,如图五。常用的TCP端口包括:
Port502为Modbus\TCP端口
Port9999为I-8000E I\O读写端口或自行定义
Port10000为设置端口或自行定义
Port10001为COM1
Port10002为COM2
。。。。。。
利用泓格X-Server集成开发环境提供的强大功能,用户可以轻易地实现多种高级应用模式,如TCP Server(允许串口设备被动连接到TCP网络)、TCP Client(允许串口设备主动发送数据)、UDP Server\Client(实现基于UDP协议的快速封包传送和多点数据传送)等。X-Server支持的功能包括:TCP\IP函数库;虚拟串口技术;Modbus\TCP函数库等。其中TCP\IP函数库支持的以太网通讯协议包括:
TCP 传输控制协议
UDP 用户数据报文协议
IP Internet协议
ICMP Internet控制信息协议
ARP 地址分析协议
RARP 保留的地址分析协议

图五 TCP\IP Socket编程方式
以下为透过泓格X-Server集成开发环境实现的以太网通讯实例,从程序中可以看出,程序员只需对BuildSocket、ReceiveSocketBinaryCmd 、SendSocketBinaryCmd、KillSocket等几个简单的函数进行参数设定,即可实现网络通信,而无需复杂编程。
*********************************************************************************************
#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的第三种应用方式为Web Server方式,泓格提供Web server 开发框架,该开发框架支持Form表单和CGI。同时还提供C\C++的程示例序、文档以及库函数,程序员只需要调用几个简单的函数(例如:GetDataFromWeb(void)等),甚至于根本无需编程,只要编写几个Html文档就可以使用Web server功能,来完成IO数据信息采集、信息发布和设备参数设定,从而达成以太网无远弗届的效果,如图六所示。

图六 Web Server应用方式
多功能可编程设备服务器
上节中所涉及的PDS均是基于DOS_Like的操作系统所建立,在具体应用中尚存在诸多的局限性,例如:
不能提供友善的人机界面,当Local需要显示终端时,将必须使用一台上位PC,未免有叠床架屋的嫌疑,而且在部分应用场合,PC因其设计上的缺陷,并不适合恶劣的工业环境。
在编程上不能采用可视化编程技术,只能采用如TC、BC等编程方式,对程序员有一定要求。
存储量有限制,不能适应大数据量存储的要求。
针对此种应用上的需求,市场迫切需要一种既具备普通PC的特性,如:使用的便利性、网络通信实现方式的多样性、广泛的第三方软件支持、大容量的数据库、友善的图形人机界面等,同时又具备高可靠性的可编程设备服务器。泓格之LinCon系列正是符合此需求的平台。

图七 LinCon系列多功能可编程设备服务器
LinCon-8000系列采用32-bit RISC CPU,提供与普通PC相同的键盘\鼠标接口、以太网接口、USB接口、标准VGA接口等,存储介质为128MB Compact Flash。因为使用RISC低功耗CPU,其整机功耗最大为20W,主机功耗为5W,及无磁盘、无风扇架构的特性,远比工业PC更能承受工业现场的恶劣环境。
操作系统部份采用的是具实时内核的Embedded Linux,视窗画面为QT-embedded window system。可以避免基于商业Windows操作系统可能带来的系统”当机”的困扰,同时也可以提供更高的网络安全特性。
除视窗操作画面外,LinCon也配置了DHCP、Http、FTP、Telnet、SSH和SFTP Servers等功能,可以实现WEB-Based I\O Control。
内建MySQL数据库引擎,大为提升在本机处理数据库的能力。LinCon的缺省配置为128 MB Compact Flash存储空间(此为用户的应用程序及数据存储空间,操作系统映像保存在独立的32MB Flash中),用户可升级至1GB,也可通过USB外接USB硬盘,实现海量数据存储。
系统开发工具用户可选C或JAVA,LinCon内建JVM,在应用程序开发方面LinCon提供多种SDK,如:用于GUI开发的SDK,Microsoft desktop OS Cross platform SDK,Modbus TCP\IP SDK,DCON I\O SDK等。
可编程设备服务器在化工厂关键生产线紧急停车系统中的典型应用
项目背景:该应用为山东某化工厂之关键生产线紧急停车系统,原本只是用一台iFix工作站与HonyWell FCS 2004D系统联结,后来iFix工作站增加到三台,而该HonyWell从站设备只提供一个RS-232串口。一般来说,RS-232 只能一对一联结两端 (即一台 PC 和一台 Honeywell),无法一个串口同时连接三台 PC。
方案一:通过RS-232至RS-485的隔离转换器将HoneyWell2004D的RS-232转换为RS-485,因为RS-485具有广播的特性,允许在一条总线上有多个设备同时工作。这一方案实现了多个iFix客户端同时对一台从机,但是还是有问题。如图八:Request是由第二台送出的,应该只有第二台收到Response,可是其它两台会因为RS-485的广播特性,也都收到这个Response。这样,会把另外两台PC搞混淆了。所以这是一个不可行的解决方案。

图八 不可行的解决方案
方案二:所以解决的办法应该是在iFix工作站和HoneyWell2004D之间加上一个通讯控制器,来实现PC和从站设备间的通讯流量控制,实现分时通讯。最简便的方式是在3台iFix工作站和HoneyWell2004D之间加一颗Ethernet\RS-232的串口设备服务器,采用虚拟串口的方式实现iFix工作站的分时访问。这个方式实现最容易,可以满足系统升级的设定,实现iFix工作站对从站设备的同时访问;同时工作站与串口设备服务器间采用以太网方式,通讯速度大为提高。但是因为HoneyWell2004D的波特率最快只能调到 38400Kbps,对于此架构而言,每台iFix工作站的通信请求该设备服务器都需要进行转发,整个系统的效率会因为串口设备服务器和HoneyWell2004D 之间通讯时间过长的瓶颈而降低。所以这是一个不具效率的解决方案。

图九 不具效率的解决方案之一
方案三:将上述之通用型串口设备服务器换成 Modbus\TCP至Modbus\RTU的Gateway——I-7188EX-MTCP,粗看上去也许会带来效率的提高,但是其结果与方案三一样。只要该设备服务器和HoneyWell2004D间的数据量无法减少,整个系统在扫描时间上的的瓶颈就无法解决。所以这仍然是一个不具效率的解决方案。
方案四:综上所述,问题的核心是如何将设备服务器和HoneyWell2004D 之间的通讯量减到最低以提升系统的效率。我们还是采用方案三的设备服务器,因为I-7188EX-MTCP提供用户编程的设定,可以透过修改Modbus Firmware的核心,将HoneyWell2004D的数据全部收集到I-7188EX-MTCP内的共享内存(Share Memory)中,而3 台iFix工作站都直接以Modbus\TCP的协议透过共享内存取得HoneyWell2004D 的所有数据。

图十 完美的解决方案
这种方式,对于iFix工作站而言,它们随时可以来I-7188EX-MTCP的共享内存抓数据,而且抓了就走。这部分,纯粹只有Ethernet的通讯,速度很快,iFix工作站花在通讯上面的时间,会比原来通过串口直接以Modbus\RTU的方式和HoneyWell2004D通讯,节省更多时间。而I-7188EX-MTCP的共享内存和 HoenyWell2004D之间的数据交换、更新,是属于在后台处理,iFix 工作站在取得共享内存中的数据时,根本不需要关心这一部分是否完成了。而且I-7188EX-MTCP和HoneyWell2004D之间的通讯量,不管Ethernet端有几个客户端,RS-232端都只会有一次的通讯量,这就给未来的系统升级留下了充分的余量,而且可以进一步定制各客户端与I-7188EX-MTCP之间数据交换的内容,以更充分地发挥系统的效能。
在程序修改的部分,因该Modbus Firmware已经提供与Modbus客户端通讯德能力,同时也提供现成的库函数实现I-7188E-MTCP和其它Modbus\RTU设备间的数据交换。所以程序员只要修改Firmware中与HoneyWell2004D设备通讯的代码,将数据存入共享内存中就可以了。
所以这一方案是一个完美的解决方案。用最小的成本和最少的程序开发时间完成了系统设计的最初构想,并为系统未来的升级留下了充分的想象空间。事实上PDS可编程设备服务器的应用领域还非常的多,有待大家在具体的应用中进一步发挥其效能,例如以下的所列的一些领域:
门禁控制和安防管理系统
建筑自动化
LED状态显示设备
SCADA、测量仪器及监控系统
工厂自动化
PLC控制与管理
CNC管理
医疗\化工自动化
电力监视系统
POS终端机
远端图像传输
其它RS-232\422\485设备联网应用