任明强,王瑾荣
(中原油田勘探研究设计院,河南濮阳457001)
中原油田是中国重要的石油天然气生产基地,主要勘探开发区域横跨河南、山东两省,油田采油区较为分散,生产数据不能及时上传。为了油田开发的科学管理,中原油田将基于无线传输数据的SCADA技术用于油田勘探开发中,建立了石油勘探开发控制系统。该系统不仅数据传输效率高,而且结构简单,操作方便。
石油勘探开发控制系统主要对温度、压力、流量、液位等石油生产参数进行集中测量,它是一种由控制中心PC机、无线数据传输模块与子站PC机、无线数据传输模块、数据采集模块、现场仪表所组成的主从式系统,系统结构如图1所示。
控制中心是石油勘探控制总站,子站则在城市或地区的周边。它们收集的各种生产数据通过数据采集器送入子站PC机进行处理以及参数显示和保存,并随时准备接受中心站的查询和定时数据发送。每一子站与控制中心之间的远程通信采用无线数传全双工通信模式。
控制中心、子站与无线数传模块间的通信通过异步串口完成。异步串口采用标准的串口格式,即1个起始位、8个数据位、1个停止位。传输速率为1 200bit/s。
无线数据传输模块的工作方式有全双工和半双工两种。为了能充分测试系统传输数据的可靠性,该系统采用全双工模式。需要注意的是,在设置通信时,必须保证通过串行口对无线数据传输模块设置相同的收发频率。
图1 石油勘探开发系统结构
图2 无线数传发射模块结构
1.2.1 模块发送过程
当收到PC机的串行口数据后,模块先通过DTR线判断收到的数据是命令还是发送的数据。若是命令,则执行相应的命令;若是发送的数据,则先将其送到发送缓冲区EERAM中,并同时将模块的状态由接收状态转换成发射状态。状态转换完成后,启动发送打包程序,并将该数据包的数据送到模块中的数据调制口,以FSK方式调制成模拟信号,与锁相环中的振荡信号一起送入混频器。升频后的射频信号再经发射放大器、功率放大器放大后通过天线发送出去。该数据打包要遵从事先定义好的传输协议,这样才可使接收双方有章可循,而且避免其他信号干扰。
1.2.2 模块接收过程
数据的接收过程跟发送过程基本相反。在接收状态下,通过天线接收的射频信号经射频放大器后,与锁相环中的振荡信号一起送到混频器。降频后的中频信号通过中频滤波器、中频放大器放大后送到调制解调器,以FSK解调后的数字信号按照协议将有效数据送到存储器中,再经串行口送到计算机。
因为无线通信模块要对接收的数据进行处理,且必须能够鉴别数据的真伪,所以要求传输数据的双方建立一种有效协议,从而识别噪声和有效数椐。因为噪声是以随机字节出现的,没有明显的结合方式,噪声源可能产生任意字节的组合,所以在研究无线通信的过程中最好通过一种协议能有效地抑制噪声的产生。经过比较选择,采用了表1的数据传输协议格式。
表1 数据传输协议格式
表1中,Radom表示任意内容的字节;Data表示位数据包字节;Length表示数据包包含的Header字节之后的所有字节的长度;Checksum表示校验和字节。
在无线通信系统中传输频率也是至关重要的。为合理使用频率,需采用国家业余频段。由于油田系统要长期专用某一频段,需申请频谱许可证。系统中数据的远距离传输需根据接收双方的频率来判断,所以需要编写一定的程序完成频率设置。如写频时,把DTR置低;而传送数据时,DTR置高或悬空。
由于设计采用的是无线传输,因此当通过串行口将数据送到无线数据传输模块时,需要考虑数据的传输格式。通常发送的是字符或者数字,这时就需要在软件中根据ASCII码的规则将其转化为十六进制数形式,以字节方式传输,同时也需考虑发送与接收串口之间的延迟。
串行口是常用的计算机与外部串行设备之间的数据传输通道,而Visual C++6.0是一种功能强大、可视化、面向对象的Windows编程开发平台,利用其进行串行通信方便易行,应用广泛。通常情况下,VC++中有3种实现串行通信的编程技术:a)利用控件MSComm实现串行通信,在对话框中创建通信控件MSComm,该方法简单易用,但必须在对话框中使用,灵活性较差;b)多线程实现串行通信,在自定义的串行通信类中创建端口监视线程,进行多线程控制,并在指定的事件发生时向相关的窗口发送通知消息,该方法实时性强,但是系统复杂;c)在单线程中建立自定义的通信类实现串行通信,利用VC++的MFC类库实现。与控件方法相比,该方法灵活性强,可按不同需要定制灵活的串口通信类来实现串行通信,同时,其结构也比多线程通信简单。结合该系统所采用硬件的特点,以及实际运行环境,最终选择第三种方式完成串行口通信。在程序中利用类CserialPort实现负责串口的配置、数据传输的延迟处理以及读写,数据读写流程如图3~4所示。
图3 数据读取示意流程
图4 数据写入示意流程
整个程序的编制相应分为:配置串口;配置数据传输模块;读写串行口;通信延时处理等。在收发数据时需要先监测串行口是否准备好。程序中为了识别操作是否正确,需设置读写成功标志,同时确定读写字节的个数。
油田勘探开发控制系统具有采样数据量大、传输距离远,以及环境条件差别大的特点。数据传输长期以来一直是人们关注的焦点。系统以往主要采用Modem和电话机实现远程通信。但由于电话线具有通信速度慢,质量差的缺点,已不能满足油田勘探开发信息传输的要求。使用无线数据传输模块完成远程数据通信,不仅克服了上述缺点,而且改善了该系统的数据传输性能。经最终测试,该系统不仅可以在条件恶劣和干扰大的环境下进行远距离传输,而且数据准确率高,传输速度快,可根据不同需要应用于各种领域。
[1] 夏华.无线通信模块设计与物联网应用开发[M].北京:电子工业出版社,2010.
[2] 韦惠民,李国民,暴宇.移动通信技术[M].北京:人民邮电出版社,2006.
[3] 纪越峰.现代通信技术[M].北京:北京邮电大学出版社,2002.
[4] 王华忠.监控与数据采集(SCADA)系统及其应用[M].北京:电子工业出版社,2010.
[5] 王振明.SCADA监控与数据采集软件系统的设计与开发[M].北京:机械工业出版社,2009.
[6] 周洪利.计算机高级接口技术[M].北京:清华大学出版社,2008.
[7] 张明,李训涛.计算机测控技术[M].北京:国防工业出版社,2009.
[8] 谭浩强.C++程序设计[M].北京:清华大学出版社,2004.
[9] 刘锐宁.Visual C++项目开发案例[M].北京:清华大学出版社,2010.
[10] 于海生.计算机控制技术[M].北京:机械工业出版社,2010.