仪表通信协议.docx

上传人:b****5 文档编号:6253602 上传时间:2023-01-04 格式:DOCX 页数:16 大小:21.72KB
下载 相关 举报
仪表通信协议.docx_第1页
第1页 / 共16页
仪表通信协议.docx_第2页
第2页 / 共16页
仪表通信协议.docx_第3页
第3页 / 共16页
仪表通信协议.docx_第4页
第4页 / 共16页
仪表通信协议.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

仪表通信协议.docx

《仪表通信协议.docx》由会员分享,可在线阅读,更多相关《仪表通信协议.docx(16页珍藏版)》请在冰豆网上搜索。

仪表通信协议.docx

仪表通信协议

南京朝阳仪表产品驱动格式

 

XMT3000/4000驱动格式

XMT4000参数及指令

XMT4000另外有60个参数(30个时间及30个温度),其参数代号从1AH到55H,第1段温度为1AH,第一段时间为1BH,依此排列,程序段号参数Step为00H,无SV参数。

代号56H为当前运行时间,只许读,不能写。

我们将代号、代码,以及读写属性列如下表:

代号

代码

读写(R/W)

备注

step

00H

R/W

当前运行段号

HIAL

01H

..

LoAL

02H

..

dHAL

03H

..

dLAL

04H

..

dF

05H

..

CtrL

06H

..

M50

07H

..

P

08H

..

T

09H

..

CtI

0AH

.

Sn

0BH

..

diP

0CH

..

diL

0DH

..

diH

0EH

..

AlP

0FH

..

Sc

10H

..

oP1

11H

..

oPL

12H

..

oPH

13H

..

CF

14H

..

bAud

15H

R

Addr

16H

R/W

dL

17H

..

Run

18H

..

Loc

19H

..

PV

R

每次都返回

SV

R

每次都返回

输出值(outValue)

R

每次都返回

报警值

R

每次都返回

C01

1AH

R/W

表示第一段温度

T01

1BH

..

表示第一段时间

C02

1CH

..

T02

1DH

..

..

C30

54H

R/W

表示第三十段温度

T30

55H

R/W

表示第三十段时间

Time

56H

R

运行的时间

 

特别备注:

在XMT4000中SV值每次都有返回,并且为只读的。

XMT4000数据返回格式和XMT3000是相同的。

其它参数和XMT3000是一样的(除了SV)。

 

XMT3000数据格式

代号

代码

读写(R/W)

备注

SV

00H

R/W

当前运行段号

HIAL

01H

..

LoAL

02H

..

dHAL

03H

..

dLAL

04H

..

dF

05H

..

CtrL

06H

..

M50

07H

..

P

08H

..

T

09H

..

CtI

0AH

.

Sn

0BH

..

diP

0CH

..

diL

0DH

..

diH

0EH

..

AlP

0FH

..

Sc

10H

..

oP1

11H

..

oPL

12H

..

oPH

13H

..

CF

14H

..

bAud

15H

R

Addr

16H

R/W

dL

17H

..

Run

18H

..

Loc

19H

..

读指令

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

1为地址

02为参数代号

读指令

0X80+1

0X80+1

0X52

0X02

返回数据

含义

测量值PV

设定值SV

输出值MV

报警状态

参数返回值

字节8位

Low

High

Low

High

Low

High

Low

High

(1)读指令

地址代号+52H+参数代号8CH8CH52H0CH(共四个字节)

返回格式:

CCH09H(测量值)C4H09H(给定值)20H(输出值)00H(报警值)02H0H(参数返回值)

举例如下:

 如果向地址为1的仪表指令应该是:

 80H+180H+152H0CH     也就是81H 81H 52H 0CH  共四个字节

 

总结如下:

向地址为N的仪表指令那么为80H+N 80H+N 52H 0CH  ,其中52H是不变的OCH为参数代号.

 

返回值说明(共八个字节)低字节在前,高字节在后:

CCH09H(测量值PV)C4H09H(给定值SV)20H(输出值)00H(报警值)02H0H(参数返回值,)

写指令

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

写入值低字节

写入值

低字节

1为地址

02为参数代号

写指令

0X80+1

0X80+1

0X43

0X02

0X8

0X00

地址指令+43H+参数代号+写入值的低字节+写入值的高字节

仪表返回:

测量值PV、给定值SV、输出值MV+报警状态、被写入的参数值

写:

82H82H43H02H2CH01H

返:

CCH09HC4H09H20H00H2CH01H

(PV)(SV)(MV)(WZ)(参数值)

 

举例如下:

 如果向地址为1的仪表写指令应该是:

 80H+180H+143H02H2CH01H      

总结如下:

向地址为N的仪表指令那么为80H+N80H+N43H02H2CH01H      

其中43H是不变的.

注:

写入和输出均是低字节在前,高字节在后。

 

下面是用VC#代码的表示:

 

⑴//通讯口控件设置

this.serialPort1.PortName="COM1";

this.serialPort1.BaudRate=4800;

this.serialPort1.StopBits=System.IO.Ports.StopBits.Two;

this.serialPort1.DataBits=8;

this.serialPort1.Open();

⑵读数据

if(this.serialPort1.IsOpen==true)

{

//定义四个变量分别用于存放:

测量值(Pv),设定值(Sv),输出值(out),报警值(alarm),参数返回值(returndata)

doublePv,Sv,Out,Alarm,returndata=0.0;

byte[]commandByte=newbyte[4];//发指令数组

commandByte[0]=Convert.ToByte(128+addr);//128为82H转变的

commandByte[1]=Convert.ToByte(128+addr);

commandByte[2]=82;//固定不变的

commandByte[3]=00;//参数代号;

//向仪表下发指令

this.serialPort1.Write(commandByte,0,commandByte.Length);System.Threading.Thread.Sleep(300);

//读数据

if(this.serialPort1.BytesToRead>0)

{

//定义字节数据接收数据

byte[]bytereceive=newbyte[this.serialPort1.BytesToRead];

//读取缓冲区中数据

this.serialPort1.Read(bytereceive,0,bytereceive.Length);

stringtext=string.Empty;

//Pv

if(bytereceive[1]>127)

{

Pv=-65536+(bytereceive[1]*256+bytereceive[0]);

}

else

{

Pv=bytereceive[0]+bytereceive[1]*256;

}

//Sv

if(bytereceive[3]>127)

{

Sv=-65536+(bytereceive[3]*256+bytereceive[2]);

}

else

{

Sv=bytereceive[2]+bytereceive[3]*256;

}

//out

Out=bytereceive[4];

//alarm

Alarm=bytereceive[5];

//returndata参数返回值

if(bytereceive[7]>127)

{

returndata=-65536+(bytereceive[7]*256+bytereceive[6]);

}

else

{

returndata=bytereceive[6]+bytereceive[7]*256;

}

⑶//写数据

写数据

bytehigh=0XFF,low=0XFF;//分别为高字节,底字节,

if(writeData>=0)//如果输入的数为正数的情况下

{

high=Convert.ToByte((int)writeData/256);

low=Convert.ToByte((int)writeData%256);

}

else//如果输入的数为负数的情况

{

high=Convert.ToByte((0x10000+(int)writeData)/256);//

low=Convert.ToByte((0X10000+(int)writeData)%256);

}

byte[]write_array;//指令数组

mand=command;//仪表参数代号

bytead=Convert.ToByte(addr+0X80);

write_array=newbyte[]{(ad),(ad),0X43,mand,low,high};

//发送写的指令

this.serialPortIO.Write(write_array,0,6);

serialPortIO.DiscardOutBuffer();

 

XMT3001,XMT4001指令格式

读:

地址代号+52H(82)+要读参数的代号+0+0+CRC校验码

读指令的CRC校验码,要读参数的代号*256+82+ADDR

byte[]readComm=newbyte[]{(byte)(128+addr),(byte)(128+addr),82,ParmaterId(参数代号),00,00,CRC,CRC};

仪表返回数据:

测量值PV+给定值SV+输出值MV及报警状态+所读/写参数值+CRC校验码。

其中PV,SV,所读参数值以及CRC校验码个占两个字节,MV和报警状态各占一各字节。

共十各字节。

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

默认

默认

CRC

CRC

1为地址

00为参数代号

读指令

0X80+1

0X80+1

0X52

0X00

0X00

0X00

Low

High

仪表返回

字节数

PV

SV

输出值

报警状态

所读/写参数值

CRC效验码

10

Low

High

Low

High

Low

High

Low

High

Low

High

写:

地址代号+43H(67)+要写参数的代号+写入数低字节+写入数高字节+CRC校验码。

byte[]writeComm=newbyte[]{(byte)(128+addr),(byte)(128+addr),67,ParmaterId(参数代号),00,00,CRC,CRC};

写指令的CRC校验码:

要写的参数代号*256+67+要写的参数值+ADDR

仪表返回的CRC效验码为:

PV+SV+(报警状态*256+MV)+参数值+ADDR.按整数相加后得到的和与256相模,余数做低字节,模做高字节。

注:

每2各8位数据代表一个16位整形数,低字节在前,高字节在后

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

要写的参数值

CRC

CRC

1为地址

00为参数代号

写指令

0X80+1

0X80+1

0X43

0X00

Low

High

Low

High

 

参数代号:

仪表的参数用1个8位二进制数(一个字节,写为16进制数)的参数代号来表示。

它在指令中表示要读/写的参数名。

仪表可读/写的参数代号表:

说明:

1、如果向仪表读取参数代号在表格中参数以外,则仪表不会返回任何数据。

XMT3001参数列表

参数

代号

含义

00H

SV(3001)给定值

01H

HIAL上限报警

02H

LoAL下限报警

03H

dHAL正偏差报警

04H

dLAL负偏差报警

05H

dF回差

06H

CtrL控制方式

07H

M5保持参数

08H

P速率参数

09H

t滞后参数

0AH

CtI控制周期

0BH

Sn输入规格

0CH

dIP小数点位置

0DH

dIL下限显示值

0EH

dIH上限显示值

0FH

ALP报警输出选择

10H

Sc传感器修正

11H

Op1输出方式

12H

oPL输出下限

13H

oPH输出上限

14H

CF功能选择

15H

波特率(3001)

16H

ADDR通讯地址

17H

dL数字滤波

18H

run运行参数

19H

Loc参数封锁

XMT4001参数列表

参数

代号

含义

00H

STEP(4001)程序段

01H

HIAL上限报警

02H

LoAL下限报警

03H

dHAL正偏差报警

04H

dLAL负偏差报警

05H

dF回差

06H

CtrL控制方式

07H

M5保持参数

08H

P速率参数

09H

t滞后参数

0AH

CtI控制周期

0BH

Sn输入规格

0CH

dIP小数点位置

0DH

dIL下限显示值

0EH

dIH上限显示值

0FH

ALP报警输出选择

10H

Sc传感器修正

11H

Op1输出方式

12H

oPL输出下限

13H

oPH输出上限

14H

CF功能选择

15H

运行状态控制字

运行:

0暂停:

4停止:

12(4001)

16H

ADDR通讯地址

17H

dL数字滤波

18H

run运行参数

19H

Loc参数封锁

1AH-55H

C01-t30程序数据(4001)

56H

运行时间(4001)

3、XMT4001另有60个参数(30个时间及30个温度),其参数代号从1AH-55H,第1段温度为1AH,第一段时间为1BH,第二段温度为1CH,依此排列,程序段号参数SteP为00H,无SV参数。

代号56H为当前段已运行时间,只许读,不能写。

 

脉冲仪表

参数

代号

流量积算仪

3001/T

00H

批累积目标值

01H

FHIA

02H

FIoA

03H

SPE

04H

Act

05H

Esn

06H

FSc

07H

PdIH

08H

CSc

09H

CdIH

0AH

Cut

0BH

FdIH

0CH

FdIP

0DH

PA

0EH

Po

0FH

Co

10H

Frd

11H

CF

12H

bc

13H

IoL

14H

FoH

15H

仪表的型号特征

16H

通讯地址(Addr)

17H

IoH

18H

dL

19H

Loc

读:

地址代号+52H(82)+要读参数的代号+0+0+CRC校验码

读指令的CRC校验码,要读参数的代号*256+82+ADDR

byte[]readComm=newbyte[]{(byte)(128+addr),(byte)(128+addr),82,ParmaterId(参数代号),00,00,CRC,CRC};

仪表返回数据:

瞬时值,批累积实时值(红数码管值),批累积目标值(红数码管值),累积值前四位,所读/写参数值+CRC校验码。

其中瞬时值,批累积实时值,累积值前四位,所读参数值以及CRC校验码个占两个字节。

共十各字节。

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

默认

默认

CRC

CRC

1为地址

00为参数代号

读指令

0X80+1

0X80+1

0X52

0X00

0X00

0X00

Low

High

仪表返回

字节数

瞬时值

批累积实时值

累积值前四位

所读/写参数值

CRC效验码

10

Low

High

Low

High

Low

High

Low

High

Low

High

 

写:

地址代号+43H(67)+要写参数的代号+写入数低字节+写入数高字节+CRC校验码。

byte[]writeComm=newbyte[]{(byte)(128+addr),(byte)(128+addr),67,ParmaterId(参数代号),00,00,CRC,CRC};

写指令的CRC校验码:

要写的参数代号*256+67+要写的参数值+ADDR

地址(基础值+仪表地址)

地址(基础值+仪表地址)

固定格式

参数代号

要写的参数值

CRC

CRC

1为地址

00为参数代号

写指令

0X80+1

0X80+1

0X43

0X00

Low

High

Low

High

注:

每2各8位数据代表一个16位整形数,低字节在前,高字节在后

 

参数代号:

仪表的参数用1个8位二进制数(一个字节,写为16进制数)的参数代号来表示。

它在指令中表示要读/写的参数名。

仪表可读/写的参数代号表:

说明:

1、如果向仪表读取参数代号在表格中参数以外,则仪表不会返回任何数据。

 

XMD2000系列通讯协议

发指令:

[04addr0X520X05],其中addr为仪表的地址,其余为固定格式

仪表返回:

[02addrn****03],其中addr为仪表的地址,n表示返回的总字节数**表示返回的测量数据串,3是固定不变的。

高字节在前,底字节在后。

If(array[i]>127)i=3

{

((array[i]-128)*256+array[++i])/(-10.0);

}

Else

{

(array[i]*256+array[++i])/10.0;

}

设成32路返回情况情况总长68数据位64

2164171617171617191818181819181818181919181819191101718181918181818173

返回数据串(字节数组)的长度为:

路数*2+4(固定格式,前面3位,结尾1位)。

 

固定值

地址

固定值

固定值

发指令共四个字节,1为地址

读指令

0X04

0X01

0X52

0X05

仪表返回

固定值

地址

字节数组长度

有效数据串

固定值

返回

0X02

0X01

N

High

Low

******

High

Low

0X03

第一路数据

最后一路数据

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 材料科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1