流量計 RS485 接口通訊程序的設計與實現(xiàn)
在工業(yè)現(xiàn)場,流量計是工業(yè)測量中***重要的儀表之一,用于測量流體的流量,隨著工業(yè)的發(fā)展,尤其工廠對于智能制造的需求,市場對流量計在通訊方面的要求與日俱增,RS485 接口是***適合各種流量計的通訊接口,設計和實現(xiàn)此通訊程序,可以實時快速地將流量數(shù)據(jù)、診斷信息、狀態(tài)檢測等傳輸?shù)缴衔豢刂葡到y(tǒng)中,實現(xiàn)信息交互,提高工廠的自動化水平。
0 引言
流量計量是計量科學技術的組成部分之一,它與國民經濟、國防建設、科學研究有密切的關系,做好這一工作,對保證產品質量、提高生產效率、促進科學技術的發(fā)展都具有重要的作用。目前制造業(yè)都在向智能化轉型,工業(yè)生產自動化程度愈來愈高,使得流量計都需要有信息通訊功能,***初是數(shù)據(jù)模擬信號輸出簡單過程量,后來采用 RS232 接口,這種接口可以實現(xiàn)點對點的通信方式,但這種方式不能實現(xiàn)聯(lián)網功能,隨后出現(xiàn)的 RS485 接口徹底解決了這個問題,RS485 接口使用通訊指令進行串行通訊,傳輸流量計的流量數(shù)據(jù)、診斷信息、狀態(tài)檢測等信息。
1 .串行接口
工業(yè)生產對于信息化的需求是不可或缺的,使得企業(yè)在流量計選型時其中的一個必要條件就是要具有聯(lián)網通信接口 ,串行接口的出現(xiàn)正好解決了這個問題,串行接口是指數(shù)據(jù)一位一位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信,從而大大降低了成本,特別適用于遠距離通信,具有串行接口的流量計采用串行通訊的方式將信息逐位按順序的傳送,傳送距離可以從幾米到幾千米。
串行接口按電氣標準及協(xié)議來分包括 RS-232、RS-422、RS-485。RS-232 是為點對點通訊而設計的,傳送距離***大為約 15 米,***高速率為 20kb/s,適合本地設備之間的通信。
RS-422 定義了接口電路的特性,總線上***多可接 10 個節(jié)點,***大傳輸距離為 1219 米,***大傳輸速率為 10Mb/s。RS-485是從 RS-422 基礎上發(fā)展而來的升級版,RS-485 總線上***多可接到 32 個設備,共模輸出電壓提高到- 7V 至+12V 之說,提供了很大的便利與節(jié)省了大量的人力物力。傳統(tǒng)方法上,對于數(shù)據(jù)的統(tǒng)計,特別是對于很多數(shù)據(jù)的***大傳輸速率為 10Mb/s。
2 .RS485 通訊程序的設計與實現(xiàn)
RS485 總線是基于物理接口和屏蔽雙絞線傳輸介質,只是物理介質層,由于其電路特性專門針對一主多從協(xié)議的,上面可以運行很多通訊協(xié)議,如何根據(jù)流量計內部 RS485 接口的通訊協(xié)議編寫通訊程序,讀寫流量計的各種信息,就是關鍵所在了。本文的研究對象是采用 Kojima 公司的 DF 系列氣體質量流量計作為 RS485 總線的從站,Schneider 公司的 Proface 觸摸屏作為 RS485 總線主站,在主站中采用腳本語言編寫通訊程序,讀寫從站流量計的各種信息。本文的研究和程序設計思路對于其余品牌的流量計和上位控制系統(tǒng)同樣適用。
2.1 從站流量計通訊規(guī)范設計
Kojima 公司的 DF 系列氣體質量流量計的 RS485 通訊規(guī)格是傳輸速度 9600 bps、1 位開始位、數(shù)據(jù)長度 8 位、1 位停止位、無奇偶校驗位、采用 3 線半雙工傳輸?shù)膫鬏斚到y(tǒng),支持 32 種指令格式,本文主要編寫的是 32 種指令中的 RCFR(獲取瞬時流量指令)和 WSFD(設定流量設定值指令)兩種指令的通訊程序。
2.1.1 WSFD 設定流量設定值指令
WSFD 設定流量設定值指令的報文格式,如表 1 所示。
STX:設定流量計通訊指令起始碼,固定為“@”,對應 AS-CII 碼 40H,占 1 個字節(jié)。
Communication ID:流量計從站地址,占用 3 個字節(jié),范圍是 001 ~ 099。
Command:指定通訊指令為 WSFD(設定流量設定值指令),占 4 個字節(jié)。
Data:4 位十進制數(shù)的流量設定值,范圍 0000 ~***大流量,占 4 個字節(jié)。
Check sum:校驗碼,計算方法是“STX + Communication ID + Command + Data”的低兩位 16 進制數(shù),占 2 個字節(jié)。
ETX:通訊指令結束碼,固定為“CR”,對應 ASCII 碼 0DH,占 1 個字節(jié)。
發(fā)出 WSFD 指令后,返回的報文格式,如表 2 所示。STX:返回報文起始碼,固定為“%”,對應 ASCII 碼 25H,占 1 個字節(jié)。
Communication ID:流量計從站地址,占用 3 個字節(jié),范圍是 001 ~ 099。
Command:指定通訊指令為 WSFD(設定流量設定值指令),占用 4 個字節(jié)。
Exit code:返回數(shù)據(jù)成功,顯示 OK 的 ASCII 碼;返回數(shù)據(jù)失敗,顯示 NG 的 ASCII 碼,占用 2 個字節(jié)。
Check sum:校驗碼,計算方法是“STX + Communication ID + Command + Exit code”的低兩位 16 進制數(shù),占 2 個字節(jié)。
ETX:通訊指令結束碼,固定為“CR”,對應 ASCII 碼 0DH,
占 1 個字節(jié)。
2.1.2 RCFR 獲取瞬時流量指令
RCFR 獲取瞬時流量指令的報文格式,如表 3 所示:
STX:設定流量計通訊指令起始碼,固定為“@”,對應 AS-CII 碼 40H,占 1 個字節(jié)。
Communication ID:流量計從站地址,占用 3 個字節(jié),范圍是 001 ~ 099。
Command:指定通訊指令為 RCFR(獲取瞬時流量指令),占用 4 個字節(jié)。
Check sum:校驗碼,計算方法是“STX + Communication ID + Command”的低兩位 16 進制數(shù),占 2 個字節(jié)。
ETX:通訊指令結束碼,固定為“CR”,對應 ASCII 碼 0DH,占 1 個字節(jié)。
發(fā)出 RCFR 指令后,返回的瞬時流量值的報文格式,如表 4 所示。
STX:返回報文起始碼,固定為“%”,對應 ASCII 碼 25H,
占 1 個字節(jié)。
Communication ID:流量計從站地址,占用 3 個字節(jié),范圍
是 001 ~ 099。
Command:指定通訊指令為 RCFR(獲取瞬時流量指令),占用 4 個字節(jié)。
Exit code:返回數(shù)據(jù)成功,顯示 OK 的 ASCII 碼;返回數(shù)據(jù)失敗,顯示 NG 的 ASCII 碼,占用 2 個字節(jié)。
Data:返回 4 位十進制數(shù)的瞬時流量值,范圍 0001 ~9999,占用 4 個字節(jié)。
Check sum:校驗碼,計算方法是“STX + Communication ID + Command + Exit code + Data”的低兩位 16 進制數(shù),占 2 個字節(jié)。
ETX:通訊指令結束碼,固定為“CR”,對應 ASCII 碼 0DH,占 1 個字節(jié)。
2.2 主站通訊程序實現(xiàn)
主站采用 Schneider 公司的 Proface 觸摸屏,在主站中采用腳本語言編寫通訊程序,實現(xiàn) RCFR(獲取瞬時流量指令)和WSFD(設定流量設定值指令),從而可以讀寫從站流量計的流量信息。
2.2.1 主站通訊參數(shù)設定
在主站(Schneider 公司的 Proface 觸摸屏)中對應設定 Ko-jima 公司的 DF 系列氣體質量流量計的 RS485 通訊規(guī)格傳輸速度 9600 bps、1 位開始位、數(shù)據(jù)長度 8 位、1 位停止位、無奇偶校驗位,如圖 1 所示。
2.2.2 主站串口操作指令
主站 Schneider 公司的 Proface 觸摸屏支持類 C 語言格式的腳本編程語言,具有完整的串口操作指令,引用 IO_WRITE和 IO_READ 兩個串口操作指令函數(shù)[5],編寫通訊程序,完成對從站流量計流量信息的讀寫。
IO_WRITE 發(fā)送指令,功能是將數(shù)據(jù)寫至流量計串口,格式如下。
IO_WRITE ([p:EXT_SIO],數(shù)據(jù)存儲地址,發(fā)送字節(jié)數(shù))IO_READ 接收指令,功能是從流量計串口中讀取已接收的數(shù)據(jù),格式如下。
IO_READ ([p:EXT_SIO],數(shù)據(jù)存儲地址,接收字節(jié)數(shù))
2.2.3 主站通訊程序編寫
本文給出如下編寫的 RCFR 和 WSFD 指令的通訊程序腳本,實現(xiàn)在主站觸摸屏上設定從站流量計的設定值,并實時讀取從站流量計的瞬時流量值的功能。
if([b:[#INTERNAL]USR0000000])
{ //檢測位開關發(fā)送設定值指令是否為 ON;如果為 ON,清除位開關發(fā)送設定值,使其為 OFFclear([b:[#INTERNAL]USR0000000])// 發(fā)送流量設定值,發(fā)送指令: @ 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
//從數(shù)據(jù)緩沖器到內部寄存器函數(shù)
//_dlcopy ([復制目標地址]、復制源數(shù)據(jù)緩沖器、復制源偏移值、復制字符數(shù))
_ldcopy(databuf0, [w:[#INTERNAL]USR00003], 11)
//將數(shù)據(jù)寫至流量計串口時,采用發(fā)送指令
IO_WRITE_EX([p:EXT_SIO], databuf0, 11)}
Endif
//接收流量瞬時值
//(1)發(fā)出讀瞬時流量指令 @ 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
//當從流量計串口中讀取已接收數(shù)據(jù)時,采用接收指令IO_READ_EX([p:EXT_SIO], databuf2, 13)
_dlcopy([w:[#INTERNAL]USR00024], databuf2, 0, 13)// [w:[#INTERNAL]USR00034] 里面 存儲的是 返回的瞬時流量值。
Kojima 公司的 DF 系列氣體質量流量計一共支持 32 種通訊指令,每種指令的報文格式不同,根據(jù)它們的報文格式,參照如上 RCFR 和 WSFD 指令的通訊程序,可以在主站中實現(xiàn)全部 32 中通訊指令,從而可以讀寫流量計中各種各樣的數(shù)據(jù)信息。
3.結論
RS485 是工業(yè)數(shù)據(jù)總線的一種,是自動化領域中底層數(shù)據(jù)通信網絡,流量計具有 RS485 串口通訊使得上位系統(tǒng)可以方便的編寫通訊程序,用數(shù)字通信替代了傳統(tǒng)的模擬信號及普通開關量信號的傳輸,高效便捷的連接了智能現(xiàn)場設備和自動化系統(tǒng),將流量計量和智能制造緊密的連接了起來。