APP下载

水下生产测试系统的数据通信

2014-08-02甘宜洋程武山

化工自动化及仪表 2014年12期
关键词:波特率子程序字符

甘宜洋 程武山

(上海工程技术大学机械工程学院,上海 201620)

水下生产系统是深海油气田开发最为核心的组成部分,其工作是否稳定、可靠直接影响整个油气开采系统的工作性能,我国现行的水下生产系统设计和建造经验相对匮乏,同样也无相关设备和系统的测试经验,更没有专用于水下生产系统测试的相关平台和测试基地[1,2]。因此,对水下生产系统测试技术的研究和专用测试平台的建设不仅具有较大的工程应用价值,而且可以带动国内水下生产系统的相关研究工作,产生明显的经济和社会效益。

水下生产系统主要由主控站、液压动力站、脐带缆和脐带缆分配单元、水下采油树、水下管汇、跨接管及水下控制系统等组成。水下生产系统的测试主要针对各个单元部件工作性能进行测试[3],具体可分为:验收测试、系统集成测试、现场接收测试及生产调试等内容。测试实验主要通过模拟水下生产系统实际工作环境,对单元器件进行压力测试,检验其工作性能是否满足API 17、ISO 13628及 NORSOK等标准。为保证测试过程中数据采集的有效性和可靠性,笔者开发了一套基于PLC模块的数据采集系统,实现数据的远程传输与实时采集。

1 数据采集系统的组成①

数据采集系统采用DCS控制方式[4],实现集中控制分散管理,具体包括管理层和控制层和现场设备层(图1)。管理层(数据控制中心)根据生产测试系统的工艺要求,负责将采集到的水下生产现场层各功能模块的数据上传到工控上位机,并通过工业组态软件KingVIEW,将数据进行管理、图像显示及数据归档等可视化操作。控制层由CPU224系列PLC和模拟量扩展模块EM231组成,主要完成模数转换与数据传输。现场设备层主要由压力传感器、温度传感器、流量计及涡街流量计等计量设备组成,完成现场数据的采集。对于现在的测量系统而言,数据传输速率和稳定性影响着测试系统的整体质量,因此当前测量测试系统的一个关键问题是计算机和PLC的通信。本测试系统主要进行水下采油树可靠性测试,通过搭建模拟测试平台,完成对器件的气压、水压及油压等各环节的联合检测,测试项目及其主要参数见表1。

图1 数据采集系统结构框图 表1 主要测试参数

测试项目 最小值/psi 最大值/psi 回路油压 8 250 15 000 14水压 6 000 30 000 6气压 6 000 30 000 6压力舱 150 5 075 2

由于串行通信具有线路简单、应用灵活和可靠性高的优点,并且普通机上均有串行口,所以通常上位机与PLC之间的通信都是采用串行通信的方式,本设计采用自由口通信方式。

2 自由口通信协议

所谓自由口通信模式即Freeport模式,是建立在硬件基础上的一种通信方式,它允许用户自己定义一些简单、基本的通信协议设置[5],如数据长度、奇偶校验等,通信功能完全由用户程序控制,为了方便自由口通信,S7-200 PLC配有发送与接收、通信与接收中断和用于通信设置的特殊功能寄存器。

2.1 数据格式

使用自由口通信前,必须了解自由口通信工作模式的定义方法,即控制字的组态。S7-200 PLC的自由口通信数据字节格式必须含有一个起始位、一个停止位,数据位长度为7位或8位,校验位和校验类型(奇、偶校验)可选(图2)。字符传输从最低位开始,空闲线高电平、起始位低电平、停止位高电平。字符传输时间取决于波特率。PLC通信口工作在自由口模式时,通信口就不支持其他通信协议(如PPI),此时,通信口不能再与编程软件Micro/WIN通信。PLC的CPU停止时,自由口不能工作,Micro/WIN就可以与PLC的CPU通信。

图2 自由口通信数据格式

2.2 工作方式

自由口通信定义方法为将自由口通信操作数传入特殊寄存器 SMB30(端口0)和 SMB130 (端口1)进行端口定义。自由口通信主要通过发送接收指令、特殊功能寄存器配置和中断来实现,端口0常用中断事件见表2。

表2 自由口通信相关的中断事件

字符发送通过XMT指令完成,字符接收可由RCV指令或字符接收中断实现。自由口工作过程大体可分为:

a. 根据数据发送特点,分配发送和接收的数据缓冲区;

b. 设置自由口通信参数,选择接收发送字符方式;

c. 执行发送指令,字符发送完毕进入相应的中断事件;

d. 进入字符发送完中断事件,执行接收指令 RCV,进行数据接收。

2.3 字符接收指令与字符中断

报文的结束字符只有 8 位,与接收到的报文数据位数相同,因此在数据接收过程中可能造成二者混淆。通常在发送前对数据作某种处理,例如将数据字符转换为 ASCII码后再发送,并使用不会与ASCII码相混淆的数据作为结束字符,接收方收到数据后将它还原为最初的数据格式,这样是可以解决上述问题,但是会增加编程的工作量和数据传送的时间。如果在设计通信程序时使用接收字符中断,就可以对收到的每个字符进行判断和处理,能有效地解决数据字符与结束字符混淆的问题。为确保系统通信的准确性,本设计采用字符中断方式接收字符。

3 下位机PLC通信协议

计算机与PLC通信时,为了避免通信中各方争用通信线,一般采用主-从方式,即计算机为主机,PLC为从机,只有主机才有权主动发送请求报文,从机收到后返回响应报文(图3)。本设计中KingVIEW为主站,S7-200PLC为从站,设计过程中考虑了PC/PPI电缆切换时间、数据帧异或校验、结束字符及数据字符混淆等问题,减少了通信故障。

图3 主-从式通信示意图

3.1 自由口初始化

S7-200PLC的自由口模式通信是对用户完全开放的通信方式,设计时可以自行规定通信协议,CPU只有处于RUN状态下才能工作在自由口模式。通过将SMB30(端口0)或SMB130(端口1)的协议选择区域置1,可以将通信端口设置为自由端口模式,或者使用特殊寄存器位SM0.7来控制自由口模式。以端口0为例,通过SMB30还可以设置校验方式、波特率及数据位长度等,具体如图4所示。

图4 控制字节SMB30

图4中,相应的校验方式、波特率及数据位长度等的取值为:

PP 校验选择

00=不校验

01=偶校验

10=不校验

11=奇校验

d 字符数据位

0=每个字符8位

1=每个字符7位

bbb 自由口波特率

000=38 400bit/s

001=19 200bit/s

010=9 600bit/s

011=4 800bit/s

100=2 400bit/s

111=57 600bit/s

其他

mm 协议选择

00=PPI/从站模式

01=自由口模式

10=PPI/主站模式

11=保留

选择自由口通信口0,波特率为 38 400bit/s,8 位数据,无校验,1 个停止位。在这种情况下,SMB30赋值为16#01。通常在通信口初始化过程中,还要中断连接指令连接接收完成中断、接收完成中断等子程序。

3.2 数据发送与接收

S7-200PLC配有发送和接收指令,通信和接收中断,用于通信设置的特殊标志位,通过相关寄存器的配置和程序组态,可方便实现数据通信。

3.2.1数据发送

发送数据可以用XMT指令,XMT指令激活发送缓冲区(TBL)中的数据,其格式为发送字节数和信息字符。缓冲区的第一个数据指明了要发送的字节数,最大为255个,PORT指定了用于发送的端口0。在发送完缓冲区最后一个字符时,会产生一个中断事件9,通过监视SM4.5信号,也可以判断发送是否完成。

本系统中采集的数据单元共28个,模数转换后,把2Byte的整数转换为4Byte的实数即工程值,所以需要发送给KingVIEW的数据长度为112Byte,故划分发送缓冲区如图5所示。其中,VW44为存放接收数据按字节异或校验的次数;VW54为存放发送数据按字节异或校验的次数;VD60为发送缓冲区的首指针;VD66为指向发送缓冲区的指针;VB200为发送缓冲区的首字节。

图5 数据发送缓冲区

3.2.2数据接收

使用字符中断方式接收数据,接收每个字符时都会产生中断事件8。在执行与接收字符事件相连的中断程序前,接收的字符存入SMB2寄存器中,校验状态存入SM3.0。SMB2、SM3.0都是只读的。SMB2为特殊标志位,是自由口接收字符缓冲器。在自由口方式下收到的每个字符都放到这里便于用户程序进行存取。

接收缓冲区的格式,以起始字符作为接收报文的开始,校验码为接收缓冲区中“数据字节数”与数据区各字节的异或和。因为在字符接收中断程序中是根据收到的字符个数来判别接收是否结束,所以没有设置结束字符。其中,VW8为存放PLC的地址;VD40为存放接收缓冲区的首指针;VW44为存放接收数据按字节异或校验的次数;VD46为指向接收缓冲区的指针;VB100为接收缓冲区的首字节。

3.3 自由口通信程序

3.3.1通信流程

S7-200PLC与KingVIEW自由口通信流程设计如图6所示,主要流程为:

a. 通过SMB30.1=1或SM0.7=1方式,打开自由口通信;

b. 串口初始化,将参数写入控制字节,开中断;

c. 有需要接收的字符时,执行接收任务,将收到的字符存入接收缓冲区中;

d. 执行发送指令XMT,将处理好的数据发送给KingVIEW;

e. 完成发送后,执行发送完中断程序,等待下一帧数据。

图6 通信程序流程

3.3.2部分通信程序

自由口通信程序采用模块化编写方式,主要包括串口初始化子程序、字符接收中断子程序等。部分程序如下:

/****主程序****/

LD SM0.1

CALL SBR0//调用串口初始化子程序SBR0;

LD SM0.7

=SM30.0//PPI与自由口方式转换控制位;

/****初始化子程序****/

LD SM0.0

MOVW +2, VW8//设置PLC通信地址为2;

LD SM0.0

MOVB 1, SMB30//设置参数,波特率38400,自由口模式,无校验;

MOVD &VB100, VD40//接收缓冲区地址传送;

MOVW +10, VW54//发送校验次数10;

MOVB 12, VB150

MOVB VB9, VB151

MOVD &VB151, VD60//发送缓冲区首地址

MOVB 6, SMB34//定时6ms

ATCH INT0, 10//连接定时中断0

ATCH INT1, 8//连接接收字符中断子程序1;

ENI

/****发送子程序****/

LD SM0.0

MOVB 250, SMB34

ATCH INT7, 10//起用发送时间监控

ATCH INT7, 9//发送中断(发送完成时触发)起用服务程序INT7

A SM4.5

XMT VB150, 0

/****部分接收子程序****/

LD SM0.0

XORW SMW1, AC0//记住异或的次数

MOVB SMB2, *VD46//将读写代码存入VB100

INCD VD46//指针VD46指向VB101

DECW VW44//异或的次数VW44-1=10-1=9

LD SM1.0

4 上位机KingVIEW通信设置

自由口通信时,KingVIEW配置主要包括定义设备、I/O地址选择、通信参数设定及定义变量等环节。KingVIEW定义设备时选择:PLC/西门子/S7200系列/自由口。I/O设备地址:由于S7-200系列PLC 的型号不同,设备地址的范围不同,笔者选用S7-200PLC,所以PLC的地址选择2。通信参数设置:波特率为38 400bit/s,数据位长度为8,停止位长度为1,校验方式为无校验,如图7所示。定义变量:在数据字典中选择相应的寄存器和数据类型,设定变量类型,主要有I/O整数、I/O实数、I/O离散、I/O字符串,对于不同类型的变量,配置不同的读/写属性。

图7 KingVEIW通信参数设置

实际通信调试时,根据特殊需要,对有关变量要进行特殊设置:

a. 对于只写寄存器,采集频率设置为0;

b. 当V寄存器BIT类型为只写类型时,写入1下发,写入0无效 , 默认为0;

c. STR寄存器与V寄存器的BIT类型要一一对应。

5 结束语

PLC 由于其高可靠性、编程简单、通用性强、结构简单及安装维护方便等优点,在自控系统中得到了广泛应用。笔者根据水下生产测试系统控制要求开发了基于自由口模式通信的数据采集系统,实现了数据远程传输。现场调试与运行表明,该系统具有实时性好、速度快及可靠性高等优点,压力采集精度达到0.01psi,适用于水下生产测试系统的实时监控。

猜你喜欢

波特率子程序字符
UART 波特率检测电路的FPGA 设计算法与实现
CAN 总线波特率自适应程序设计
字符代表几
一种USB接口字符液晶控制器设计
图片轻松变身ASCⅡ艺术画
HBM电子称与西门子S7-200系列PLC自由口通讯
波特率自适应的CAN驱动在嵌入式Linux下的实现①
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序