仪表通信协议文档格式.docx
- 文档编号:19260049
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:16
- 大小:21.72KB
仪表通信协议文档格式.docx
《仪表通信协议文档格式.docx》由会员分享,可在线阅读,更多相关《仪表通信协议文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
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
第一路数据
最后一路数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 仪表 通信协议