泓格可编程设备服务器PDS的典型应用

供稿: 上海金泓格国际贸易有限公司

  • 关键词:编码器,电机,IFIX,流量计

为什么需要设备服务器
在产业自动化应用中,系统管理的数据源是由大量的基础设备提供,包括:传感器、二次仪表、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需要显示终端

发布时间:2005年2月3日 11:25  人气:  
更多内容请访问( 上海金泓格国际贸易有限公司
相关链接

我有需求