欢迎来到天天文库
浏览记录
ID:42677685
大小:166.02 KB
页数:28页
时间:2019-09-20
《HART协议通用命令用法实例(C#)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;//***************HART协议说明***********************************//////HART命令查询帧格式:0xFF+0xFF+定界符+地址+数据字节数+数据+校验和/
2、/1、前导符:2-20字节,用于与接收器之间的同步//首次开始通信或数据帧重发时,使用20字节前导码,前导码都是0xFF。//2、定界符:1字节,短帧:01,02,06对应成组、主从、从主三种模式,长帧时将短帧最高位置1即可//3、长帧和短帧区别在于地址的字节数不同,短帧地址为1字节,用于初始化时命令0查询设备标志、ID等信息//长帧地址:5字节(40位),建立在设备唯一标识符的基础上//唯一标识符分为三个部分://第一字节最高位,1表示基本主设备,0表示副主设备//第一字节第六位(次高位),1表示处于成组模式,0表示没有成组模式//长地址的其它部分是设备的唯一
3、标识符,共38位,均为0表示广播地址//二.二短帧地址:1字节//最高位1表示主设备,0表示副主设备//第6位1表示处于成组模式,0表示没有处于成组模式//第4、5位必须置0//最低四位表示巡检地址,对应设备巡检地址0-15//4、命令字节:1字节,表明该帧所封装的HART命令,命令字节值在从设备响应中原值返回//5、字节奇数:1字节,表明此字节与最后帧校验字节之间的数据字节个数,用于识别帧的结束,范围0-27//6、数据域:由整数字节的用户数据组成,长度为0-25字节//在主-从帧中,数据域存放用户对设备的请求数据//在从-主帧中,数据用于存放设备对用户的响应
4、数据//7、校验字节:1字节,对不包括前导符和该字节的帧中所有字节进行水平校验(异或)的结果//垂直校验时通信过程中硬件自动对每个字节所有位进行奇偶校验后产生的结果//水平校验时所有字节依次按位进行异或运算后的结果//8、响应码:只在从帧中出现//响应码第一字节指明通信状态,第二字节表示现场设备工作状态//该帧数据只有在响应码第一字节最高位为0时有效,1表示通信错误namespaceHart{publicpartialclassfrom1:Form{//HART对应串口初始化PrivateSerialPortserial_hart=newSerialPort()
5、;PrivatevoidportInit(){serial_hart.PortName=hart[0]["port"].ToString();serial_hart.BaudRate=Convert.ToInt32(hart[0]["baudrate"]);serial_hart.ReceivedBytesThreshold=1;serial_hart.Parity=Parity.Odd;try{serial_hart.Open();intn=serial_hart.BytesToRead;//串口缓存区待读取数据个数byte[]buffirstclear=ne
6、wbyte[n];serial_hart.Read(buffirstclear,0,n);//将串口缓存区之前的数据清理掉,防止过量非预期数据进入解析环节buffirstclear=newbyte[1];//释放变量空间}catch(Exceptionex){if(ex.ToString()!=ex1){ex1=ex.ToString();MessageBox.Show(ex.Message);}}}#region设备信息privateintmanufacID=18;//制造商IDprivateintdevType=8;//制造商设备类型privateintsf
7、Version=1;//软件版本号privateinthwVersion=0;//硬件版本号privateint[]devID=newint[3];//设备IDprivateintcmdVersion=5;//通用命令文档版本号privateintdevIDResult=0;//设备ID计算结果#endregion#region主变量(PV)privateintPVUnitCd=0;//主变量代码privatefloatPVValue=0;//主变量privatefloatPVCurrent=0;//主变量电流privatefloatPVPercentRange
8、=0;//主变量量程百分
此文档下载收益归作者所有