基于GSM短信息的离散油井监控系统 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于GSM短信息的离散油井监控系统

来源:中国一卡通网  作者:不详  发布时间:2012-06-19 09:01:59  字体:[ ]

关键字:离散油井监控  GSM短信息  通讯网络  

摘   要:  利用GSM移动通讯网络短信息服务快捷的性能和想对低廉的收费,研制开发了一种用于分布式井群生产的监控系统,可直接应用于油井地比较分散的采油生产企业,满足了油田生产监控网络所要求的高可靠性、高实时性和维护方便性。


  1. 发送用户数据

  语法:D7│控制字节=UDL│STA│UD

  UDL:要发送的除包头D7H以外总的数据长度。包括STA,UD和它本身的字节长度,因STA 和 UDL的字节长度一般是固定的,即固定为1+6=7个字节,所以其长度可由如下公式计算UDL数值=1+6+UD长度

  STA:接受方的电话号码,即目的地址。号码需要进行格式转换。

  UD: 您需要发送的有效数据。其总长度小等于140个字节。因为短信息的数据长度不能超过140个字节。

  例1:

  假设您要发送00H,11H,22H,33H,44H,55H,共6个字节数据,接收方的电话号码(目的地址)是13655436789,UDL=0DH(13个字节), STA=01H,36H,55H,43H,67H,89H,UD=00H,11H,22H,33H,44H,55H, 发送格式如下

  D7H│0DH│01H│36H│55H│43H│67H│89H│00H│11H│22H│33H│44H│55H

  2.收用户数据

  语法: D7H │ UDL │ SOA │ UD

  SOA:发送方的电话号码,即源地址。

  例2:

  假设您收到上面发送来的00H,11H,22H,33H,44H,55H,共6个字节数据,发送方的电话号码(源地址)是13920855795,UDL=0DH(13个字节), SOA=01H,39H,20H,85H,57H,95H,UD=00H,11H,22H,33H,44H,55H, 接收到的数据格式如下

  D7H│0DH│01H│39H│20H│85H│57H│95H│00H│11H│22H│33H│44H│55H

  3 上位机监控软件设计

  上位机我们选用Delphi6.0作为开发工具。虽然Delphi没有自带串口通讯的控件,但是可以一方便的编写出通信应用程序。用Delphi实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi中调用其它串口通讯程序。下面介绍使用SPCOMM控件来实现Modbus协议,实现PC机和RTU通信。

  使用SPCOMM控件进行串口通信需要处理好两个事件;

  onReceoveData : procedure (Sender: Tobject;Buff:pointer;BufferLength:Word)of object

  当输入缓存有数据时将触发该事件,在这里可以对串口收到的数据进行处理。Buffer中是收到的数据,bufferlength是收到的数据长度。

  OnReceiveError: procedure(Sender: Tobject;EventMask: DWORD)

  当接受数据时出现错误将触发该事件
 
  Modbus RTU协议是一种主从式通信协议,每次由主站发起并期望从从站得到回应,从站接收到一消息,它将建立一定回应格式并返回给发起斩主站,从站返回消息在OnReceiveData事件里处理,根据主站发起的命令字分类比较如下代码

  ProcedureTform1.Comm1ReceiveData(Sender:Tobject;Buffer:pointer;BufferLength:Word);

  Var

  Temp_receive:array of byte;

  I,rec_len:byte;

  Calculate_crc,rec_crc,reg,reg-value:word;

  Begin

  Rec_len:=bufferlength;

  Setlength9temp_receive,bufferlength);

  Move(buffer^,pchar(temp_receive)^,bufferlength);

  Rec_crc:=temp_receive[rec_len-2 shl 8+temp_receive[rec-len-1];

  Calculate_crc:=fcrc16(@temp_receive[0],rec_len-2);

  If rec_crc<> calculate_crc then //返回数据CRC16校验错误决定重发

  Begin

  If error_order<>order_index then

  Over_num:=over_num=1;

  If over_num<3 then

  Begin

  Make_order(order_index);

  End

  Else

  Begin

  Showmessage(′传输数据有误,请检查通信线路′);

  Error_order:=order_index;

  Exit;

  End

  End

  Elsd

  Over_num:=0;

  Case ovder_index of//order_index Modbus function code1:

  Begin

  //存储数字输出状态

  end;

  2:

  begin

  //存储数字输入状态

  end;

  …

  16:

  begin

  //存储预置的保持寄存器值

  end;

  end;

  end;

  服务哭端数据存储我们采用后台Access数据库,根据不同的油井编号对应不同的从站通信地址,把个离散油井数据分类在不同表格存储,便于地质和勘井人员查询分析。其他有关监控软件页面数据刷新处理等问题限于篇幅不再说明。

  结束语

  我们开发研究的这套系统首先是在调查研究了国内油田所有应用系统的基础上,针对新疆油田特殊的地理环境,从实际需要出发,利用Dynamic C强大的处理能力,在保证了系统性能的条件下,降低了系统造价,节省了传统的方法采用中控室使用组态软件开发所需要的昂贵的通信设备费用。该系统经过在克拉玛依新疆油田采油一厂、二厂、五厂投入试运行后,为采油管理人员及时地提供了准确完整的运行数据,单口油井能效比得到提高。

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖