流量计 RS485 接口通讯程序的设计与实现

在工业现场,流量计是工业测量中***重要的仪表之一,用于测量流体的流量,随着工业的发展,尤其工厂对于智能制造的需求,市场对流量计在通讯方面的要求与日俱增,RS485 接口是***适合各种流量计的通讯接口,设计和实现此通讯程序,可以实时快速地将流量数据、诊断信息、状态检测等传输到上位控制系统中,实现信息交互,提高工厂的自动化水平。

0 引言

 

流量计量是计量科学技术的组成部分之一,它与国民经济、国防建设、科学研究有密切的关系,做好这一工作,对保证产品质量、提高生产效率、促进科学技术的发展都具有重要的作用。目前制造业都在向智能化转型,工业生产自动化程度愈来愈高,使得流量计都需要有信息通讯功能,***初是数据模拟信号输出简单过程量,后来采用 RS232 接口,这种接口可以实现点对点的通信方式,但这种方式不能实现联网功能,随后出现的 RS485 接口彻底解决了这个问题,RS485 接口使用通讯指令进行串行通讯,传输流量计的流量数据、诊断信息、状态检测等信息。

 

1 .串行接口

 

工业生产对于信息化的需求是不可或缺的,使得企业在流量计选型时其中的一个必要条件就是要具有联网通信接口 ,串行接口的出现正好解决了这个问题,串行接口是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,具有串行接口的流量计采用串行通讯的方式将信息逐位按顺序的传送,传送距离可以从几米到几千米。

串行接口按电气标准及协议来分包括 RS-232、RS-422、RS-485。RS-232 是为点对点通讯而设计的,传送距离***大为约 15 米,***高速率为 20kb/s,适合本地设备之间的通信。

RS-422 定义了接口电路的特性,总线上***多可接 10 个节点,***大传输距离为 1219 米,***大传输速率为 10Mb/s。RS-485是从 RS-422 基础上发展而来的升级版,RS-485 总线上***多可接到 32 个设备,共模输出电压提高到- 7V 至+12V 之说,提供了很大的便利与节省了大量的人力物力。传统方法上,对于数据的统计,特别是对于很多数据的***大传输速率为 10Mb/s。

2 .RS485 通讯程序的设计与实现

RS485 总线是基于物理接口和屏蔽双绞线传输介质,只是物理介质层,由于其电路特性专门针对一主多从协议的,上面可以运行很多通讯协议,如何根据流量计内部 RS485 接口的通讯协议编写通讯程序,读写流量计的各种信息,就是关键所在了。本文的研究对象是采用 Kojima 公司的 DF 系列气体质量流量计作为 RS485 总线的从站,Schneider 公司的 Proface 触摸屏作为 RS485 总线主站,在主站中采用脚本语言编写通讯程序,读写从站流量计的各种信息。本文的研究和程序设计思路对于其余品牌的流量计和上位控制系统同样适用。

2.1 从站流量计通讯规范设计

Kojima 公司的 DF 系列气体质量流量计的 RS485 通讯规格是传输速度 9600 bps、1 位开始位、数据长度 8 位、1 位停止位、无奇偶校验位、采用 3 线半双工传输的传输系统,支持 32 种指令格式,本文主要编写的是 32 种指令中的 RCFR(获取瞬时流量指令)和 WSFD(设定流量设定值指令)两种指令的通讯程序。

 

2.1.1  WSFD 设定流量设定值指令

 

WSFD 设定流量设定值指令的报文格式,如表 1 所示。

格式1.jpg

STX:设定流量计通讯指令起始码,固定为“@”,对应 AS-CII 码 40H,占 1 个字节。

Communication ID:流量计从站地址,占用 3 个字节,范围是 001 ~ 099。

Command:指定通讯指令为 WSFD(设定流量设定值指令),占 4 个字节。

 

Data:4 位十进制数的流量设定值,范围 0000 ~***大流量,占 4 个字节。

 

Check sum:校验码,计算方法是“STX + Communication ID + Command + Data”的低两位 16 进制数,占 2 个字节。

 

ETX:通讯指令结束码,固定为“CR”,对应 ASCII 码 0DH,占 1 个字节。

发出 WSFD 指令后,返回的报文格式,如表 2 所示。STX:返回报文起始码,固定为“%”,对应 ASCII 码 25H,占 1 个字节。

 格式2.jpg

Communication ID:流量计从站地址,占用 3 个字节,范围是 001 ~ 099。

 

Command:指定通讯指令为 WSFD(设定流量设定值指令),占用 4 个字节。

 

Exit code:返回数据成功,显示 OK 的 ASCII 码;返回数据失败,显示 NG 的 ASCII 码,占用 2 个字节。

 

Check sum:校验码,计算方法是“STX + Communication ID + Command + Exit code”的低两位 16 进制数,占 2 个字节。

 

ETX:通讯指令结束码,固定为“CR”,对应 ASCII 码 0DH,

占 1 个字节。

2.1.2  RCFR 获取瞬时流量指令

RCFR 获取瞬时流量指令的报文格式,如表 3 所示:

格式3.jpg

STX:设定流量计通讯指令起始码,固定为“@”,对应 AS-CII 码 40H,占 1 个字节。

Communication ID:流量计从站地址,占用 3 个字节,范围是 001 ~ 099。

Command:指定通讯指令为 RCFR(获取瞬时流量指令),占用 4 个字节。

 

Check sum:校验码,计算方法是“STX + Communication ID + Command”的低两位 16 进制数,占 2 个字节。

 

ETX:通讯指令结束码,固定为“CR”,对应 ASCII 码 0DH,占 1 个字节。

 格式4.jpg

发出 RCFR 指令后,返回的瞬时流量值的报文格式,如表 4 所示。

STX:返回报文起始码,固定为“%”,对应 ASCII 码 25H,

 

占 1 个字节。

 

Communication ID:流量计从站地址,占用 3 个字节,范围

 

是 001 ~ 099。

 

Command:指定通讯指令为 RCFR(获取瞬时流量指令),占用 4 个字节。

 

Exit code:返回数据成功,显示 OK 的 ASCII 码;返回数据失败,显示 NG 的 ASCII 码,占用 2 个字节。

 

Data:返回 4 位十进制数的瞬时流量值,范围 0001 ~9999,占用 4 个字节。

 

Check sum:校验码,计算方法是“STX + Communication ID + Command + Exit code + Data”的低两位 16 进制数,占 2 个字节。

 

ETX:通讯指令结束码,固定为“CR”,对应 ASCII 码 0DH,占 1 个字节。

 

2.2 主站通讯程序实现

 

主站采用 Schneider 公司的 Proface 触摸屏,在主站中采用脚本语言编写通讯程序,实现 RCFR(获取瞬时流量指令)和WSFD(设定流量设定值指令),从而可以读写从站流量计的流量信息。

 

2.2.1  主站通讯参数设定

在主站(Schneider 公司的 Proface 触摸屏)中对应设定 Ko-jima 公司的 DF 系列气体质量流量计的 RS485 通讯规格传输速度 9600 bps、1 位开始位、数据长度 8 位、1 位停止位、无奇偶校验位,如图 1 所示。

格式5.jpg

2.2.2 主站串口操作指令

主站 Schneider 公司的 Proface 触摸屏支持类 C 语言格式的脚本编程语言,具有完整的串口操作指令,引用 IO_WRITE和 IO_READ 两个串口操作指令函数[5],编写通讯程序,完成对从站流量计流量信息的读写。

IO_WRITE 发送指令,功能是将数据写至流量计串口,格式如下。

IO_WRITE ([p:EXT_SIO],数据存储地址,发送字节数)IO_READ 接收指令,功能是从流量计串口中读取已接收的数据,格式如下。

IO_READ ([p:EXT_SIO],数据存储地址,接收字节数)

2.2.3 主站通讯程序编写

本文给出如下编写的 RCFR 和 WSFD 指令的通讯程序脚本,实现在主站触摸屏上设定从站流量计的设定值,并实时读取从站流量计的瞬时流量值的功能。

if([b:[#INTERNAL]USR0000000])

{  //检测位开关发送设定值指令是否为 ON;如果为 ON,清除位开关发送设定值,使其为 OFFclear([b:[#INTERNAL]USR0000000])// 发送流量设定值,发送指令: @ 0 0 1 W S F D 设定值校验码 CR

// (对应 ASCII 码) 40H 30H 30H 31H 57H 53H 46H 44H 设定值 校验码 ODH

//校验码计算 校验和 & 0x00ff 得到低 8 位

[t:0010]=0x40+0x30+0x30+0x31+0x57+0x53+0x46+0x44+[w:[#INTERNAL]USR00002]

[t:0011]=[t:0010]&0x00ff

[w:[#INTERNAL]USR00003]=0x40

[w:[#INTERNAL]USR00004]=0x30

[w:[#INTERNAL]USR00005]=0x30

[w:[#INTERNAL]USR00006]=0x31

[w:[#INTERNAL]USR00007]=0x57

[w:[#INTERNAL]USR00008]=0x53

[w:[#INTERNAL]USR00009]=0x46

[w:[#INTERNAL]USR00010]=0x44

[w:[#INTERNAL]USR00011]=[w:[#INTERNAL]USR00002]//画面输入的设定值

[w:[#INTERNAL]USR00012]=[t:0011]

[w:[#INTERNAL]USR00013]=0x0D

//从数据缓冲器到内部寄存器函数

//_dlcopy ([复制目标地址]、复制源数据缓冲器、复制源偏移值、复制字符数)

_ldcopy(databuf0, [w:[#INTERNAL]USR00003], 11)

//将数据写至流量计串口时,采用发送指令

IO_WRITE_EX([p:EXT_SIO], databuf0, 11)}

Endif

//接收流量瞬时值

//(1)发出读瞬时流量指令 @ 0 0 1 R C F R 校验码 CR// (对应 ASCII 码) 40H 30H 30H 31H 52H 43H 46H 52H 校验码 0DH

//校验码计算,校验和 & 0x00ff 得到低 8 位

[t:0012]=0x40+0x30+0x30+0x31+0x52+0x43+0x46+0x52

[t:0013]=[t:0010]&0x00ff

[w:[#INTERNAL]USR00014]=0x40

[w:[#INTERNAL]USR00015]=0x30

[w:[#INTERNAL]USR00016]=0x30

[w:[#INTERNAL]USR00017]=0x31

[w:[#INTERNAL]USR00018]=0x52

[w:[#INTERNAL]USR00019]=0x43

[w:[#INTERNAL]USR00020]=0x46

[w:[#INTERNAL]USR00021]=0x52

[w:[#INTERNAL]USR00022]=[t:0013]

[w:[#INTERNAL]USR00023]=0x0D

_ldcopy(databuf1, [w:[#INTERNAL]USR00014], 10)IO_WRITE_EX([p:EXT_SIO], databuf1, 10)

//(2)接收返回的瞬时流量值

// 指令:% 0 0 1 R C F R O K 瞬时流量值 校验码 CR

// (对应 ASCII 码): 25H 30H 30H 31H 52H 43H 46H 52H

4FH 4BH 瞬时流量值 校验码 ODH

//当从流量计串口中读取已接收数据时,采用接收指令IO_READ_EX([p:EXT_SIO], databuf2, 13)

_dlcopy([w:[#INTERNAL]USR00024], databuf2, 0, 13)// [w:[#INTERNAL]USR00034] 里面 存储的是 返回的瞬时流量值。

Kojima 公司的 DF 系列气体质量流量计一共支持 32 种通讯指令,每种指令的报文格式不同,根据它们的报文格式,参照如上 RCFR 和 WSFD 指令的通讯程序,可以在主站中实现全部 32 中通讯指令,从而可以读写流量计中各种各样的数据信息。

3.结论

RS485 是工业数据总线的一种,是自动化领域中底层数据通信网络,流量计具有 RS485 串口通讯使得上位系统可以方便的编写通讯程序,用数字通信替代了传统的模拟信号及普通开关量信号的传输,高效便捷的连接了智能现场设备和自动化系统,将流量计量和智能制造紧密的连接了起来。

 

 

相关新闻

返回顶部
0517-8699 6066 欢迎来电咨询
Hello. Add your message here.