仪表通信协议Word下载.docx

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

仪表通信协议Word下载.docx

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

仪表通信协议Word下载.docx

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

dL

17H

Run

18H

Loc

19H

PV

每次都返回

SV

输出值(outValue)

报警值

C01

1AH

表示第一段温度

T01

1BH

表示第一段时间

C02

1CH

T02

1DH

C30

54H

表示第三十段温度

T30

55H

表示第三十段时间

Time

56H

运行的时间

特别备注:

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

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

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

XMT3000数据格式

读指令

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

固定格式

参数代号

1为地址

02为参数代号

0X80+1

0X52

0X02

返回数据

含义

测量值PV

设定值SV

输出值MV

报警状态

参数返回值

字节8位

Low

High

(1)读指令

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

返回格式:

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

举例如下:

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

80H+180H+152H0CH 

也就是81H 

81H 

52H 

0CH 

共四个字节

总结如下:

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

80H+N 

52H 

其中52H是不变的OCH为参数代号.

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

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

写指令

写入值低字节

写入值

低字节

写指令

0X43

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]>

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

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

//out

Out=bytereceive[4];

//alarm

Alarm=bytereceive[5];

//returndata参数返回值

if(bytereceive[7]>

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

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

00为参数代号

仪表返回

字节数

输出值

所读/写参数值

CRC效验码

10

写:

地址代号+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位整形数,低字节在前,高字节在后

要写的参数值

参数代号:

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

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

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

说明:

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

XMT3001参数列表

参数

代号

SV(3001)给定值

HIAL上限报警

LoAL下限报警

dHAL正偏差报警

dLAL负偏差报警

dF回差

CtrL控制方式

M5保持参数

P速率参数

t滞后参数

CtI控制周期

Sn输入规格

dIP小数点位置

dIL下限显示值

dIH上限显示值

ALP报警输出选择

Sc传感器修正

Op1输出方式

oPL输出下限

oPH输出上限

CF功能选择

波特率(3001)

ADDR通讯地址

dL数字滤波

run运行参数

Loc参数封锁

XMT4001参数列表

STEP(4001)程序段

运行状态控制字

运行:

0暂停:

4停止:

12(4001)

1AH-55H

C01-t30程序数据(4001)

运行时间(4001)

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

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

脉冲仪表

流量积算仪

3001/T

批累积目标值

FHIA

FIoA

SPE

Act

Esn

FSc

PdIH

CSc

CdIH

Cut

FdIH

FdIP

PA

Po

Co

Frd

bc

IoL

FoH

仪表的型号特征

通讯地址(Addr)

IoH

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

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

瞬时值

批累积实时值

累积值前四位

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

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

0X05

字节数组长度

有效数据串

返回

N

******

0X03

第一路数据

最后一路数据

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

当前位置:首页 > 工作范文

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

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