此函数根据空气的压力及温度计算空气的焓。
2intspt_air(floatp,floatt,float*s)
此函数根据空气的压力及温度计算空气的熵。
lINFORMIX编程。
在某些需要对历史数据进行操作的场合,可以利用INFORMIX及E-SQL进行编程。
2.通讯的实现
在用软件编程实现通讯时所采用的具体的通讯硬件上,既可以通过串口实现RS-232通讯,也可以通过AUI网卡、BNC网卡、RJ-45网卡实现FTP通讯、TCP/IP通讯。
当与I/A’s通讯的其它设备(如智能数据采集前端、GPS、自动同期装置等非通用设备)可以提供串口通讯,且通讯点数量不多时,采用专门的硬件实现通讯硬件不是一个非常经济的方案,此时可以采用RS-232实现通讯。
用RS-232实现通讯时,首先应初始化通讯端口,然后可以按RS-232通讯规程(RXD,TXD,RTS,CTS,DSR,DTR,DCD信号),发送指令并接受数据。
以下是初始化端口的一段例程:
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_GETFL,0)《0)
return(2);
if(fcntl(*fd,F_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进行通讯的是PC机或其它DCS,比较好的通讯办法是利用RJ-45等通讯口,按FTP协议或TCP/IP协议进行通讯。其中,FTP通讯的效率较低,且一直有读盘/写盘动作,对机器的影响较大,但此方法比较简单,容易实现,因此,在通讯不频繁的时候(建议大于一小时),也可以采用这个办法。在更多的时候,则建议使用TCP/IP协议进行通讯。
利用TCP/IP进行通讯时,有两个协议可以选择:TCP及UDP,其中TCP(TransportControlProtocol,传输控制协议)是面向联接的,它提供高可靠性服务,尤其适用于传输大量报文信息。UDP(UserDatagramProtocol,用户数据报协议)是无联接的,它提供高效率的服务,适用于一次传输少量报文信息的场合。
UDP通讯的程序的编写也比较容易,只需指定客户机的IP地址(或主机名)及传送端口号即可,下面是一段利用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*)&sockname.sin_addr,(char*)hp-》h_addr,hp-》h_length);
sockname.sin_family=AF_INET;
sockname.sin_port=htons(atoi(portNum);
return(0);
}……
本文关键字:软件编程 工艺技术,电子知识资料 - 工艺技术
上一篇:DCS通讯安全性的考虑