这种方式处理简单,仅用一条命令就可以获取大量的信息,但当监控系统仅需要了解其中少量数据内容时,许多无用的却依然占据着传输时间的数据,势必降低了效率。
因此很多公司有自己的通讯协议,他们直接采用二进制编码,即网络流中的数据不是ACSII格式的数据,而是数据本身,并且尽量减少冗余的数据。
3.3通信协议的实现过程
本系统的智能设备采用协议转换器 (串口服务器)方式接入,传输协议采用《智能设备通讯协议》和企业自定义的传输协议(由于涉及企业的技术保密要求,本文中没作介绍),编程语言为C#,编程环境为Microsoft Visual Studio .NET 2003。
在Internet中,TCP连接是常见的方式,用这种连接方式可以方便地在互联网中传递数据,只要事先知道串口服务器的IP地址和端口,实现通讯协议的程序如下:
TcpClient myClient; //TCP连接套接字
NetworkStream myStream; //获取网络流
public bool ConectStation(string ip,int port)
{
//连接局站函数,连接成功返回true,失败则返回false
try
{
myClient= new TcpClient(ip,port);
myStream="myClient".GetStream();
return true;
}
catch
{
return false;
}
}
由于采用串口服务器,只需将传输数据的ASCII码转换为网络数据流,即可利用TCP/IP协议的可靠连接TCP连接传输二进制流,程序如下:
String stationNo; //局站号
String version; //版本号
AsyncCallback outcallback="new" AsyncCallback(this.OnCompleteWrite); //网络流传输的异步调用
public void SetDChksum (); //求CHKSUM
public void StartSend()
{
char soi=(char)0x7E; //开始字节
char eoi=(char)0x0D; //结束字节
string check="version"+stationNo+commandCode; //版本号+局站号+命令代码,需进行校验
string send="soi"+check+SetDChksum(check)+eoi; //发送数据字符串
byte[] outbuffer="Encoding".ASCII.GetBytes(send); //将数据字符串转化成字节数据流
try
{
myStream.BeginWrite(outbuffer,0,outbuffer.Length,outcallback,null);
}
catch
{
//发送数据失败的数据处理
}
}
4结束语
网络技术、通信技术、计算机技术的快速发展,为通信电源监控系统的进一步发展和完善提供了条件。本系统正是结合这些最新技术,实现了对通信电源的遥测、遥信和遥控,并实现了对通信电源运行数据的远程Web浏览。本系统已在实际通讯电源监控中采用,收到了良好的效果。
网络技术、通信技术、计算机技术的快速发展,为通信电源监控系统的进一步发展和完善提供了条件。本系统正是结合这些最新技术,实现了对通信电源的遥测、遥信和遥控,并实现了对通信电源运行数据的远程Web浏览。本系统已在实际通讯电源监控中采用,收到了良好的效果。