首页 485通讯协议标准

485通讯协议标准

举报
开通vip

485通讯协议标准编号:          密级:  内  部  页数:__________ 基于RS485接口的DGL通信协议(修改) 编写:____________________ 校对:____________________ 审核:____________________ 批准:____________________ 北京华美特科贸有限公司 二○○二年十二月六日 1. 前言 在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485标准仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS48...

485通讯协议标准
编号:          密级:  内  部  页数:__________ 基于RS485接口的DGL通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 (修改) 编写:____________________ 校对:____________________ 审核:____________________ 批准:____________________ 北京华美特科贸有限公司 二○○二年十二月六日 1. 前言 在常见的数字式磁致伸缩液位计中,多采用RS485通信方式。但RS485 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 仅对物理层接口进行了明确定义,并没有制定通信协议标准。因此,在RS485的基础上,派生出很多不同的协议,不同公司均可根据自身需要设计符合实际情况的通信协议。并且,RS485允许单总线多机通信,如果通信协议设计不好,就会造成相互干扰和总线闭锁等现象。如果在一条总线上挂接不同类型的产品,由于协议不一样,很容易造成误触发,造成总线阻塞,使得不同产品对总线的兼容性很差。 随着RS485的发展,Modicon公司提出的MODBUS协议逐步得到广泛认可,已在工业领域得到广泛应用。而MODBUS的协议规范比较烦琐,并且每字节数据仅用低4位(范围:0~15),在信息量相同时,对总线占用时间较长。 DGL协议是根据以上问题提出的一种通信协议。在制定该协议时已充分考虑以下几点要求: a. 兼容于MODBUS 。也就是说,符合该协议的从机均可挂接到同一总线上。 b. 要适应大数据量的通信。如:满足产品在线程序更新的需要(未来功能)。 c. 数据传输需稳定可靠。对不确定因素应加入必要的冗错措施。 d. 降低总线的占用率,保证数据传输的通畅。 2. 协议描述 为了兼容其它协议,现做以下定义: 通信数据均用1字节的16进制数表示。从机的地址范围为:0x80~0xFD,即:MSB=1;命令和数据的数值范围均应控制在0~0x7F之间。即:MSB=0,以区别地址和其它数据。 液位计的编码地址为:0x82~0x9F。其初始地址(出厂默认值)为:0x81。 罐旁表的编织地址为:0xA2~0xBF。其初始地址(出厂默认值)为:0xA1。 其它地址用于连接其它类型的设备,也可用于液位计、罐区表地址不够时的扩充。 液位计的命令范围为:0x01~0x2F,共47条,将分别用于参数设定、实时测量、诊断测试、在线编程等。 通信的基本参数为:4800波特率,1个起始位,1个结束位。字节校验为奇校验。 本协议的数据包是参照MODBUS RTU 通信格式编写,并对其进行了部分修改,以提高数据传输的速度。另外,还部分参照了HART协议。其具体格式如下: ADDRESS COMMAND Byte Count DATA Check SUM 地址 命令 字节数 数据 校验和 1 Byte 1 Byte =n, 1 Byte n Byte 1 Byte 80~9F 01~2F 00~10 0~7F 0~7F           表中,数据的最大字节数为16个。也就是说,整个数据包最长为20个字节。 “校验和”是其前面所有数据异或得到的数值,然后将该数值MSB位清零,使其满足0~7F的要求。在验证接收数据包的“校验和”是否正确时,可将所有接收数据(包括“校验和”)进行异或操作,得到的数据应=0x80。这是因为,只有“地址”的MSB=1,所以异或结果的MSB也必然等于1。 本协议不支持MODBUS中所规定的广播模式。 3. 时序安排 在上电后,液位计将先延迟10秒,等待电源稳定。然后,用5秒的时间进行自检和测试数据。接着产品进入待机状态并打开RS485通信接口,等待主机的请求。因此,主机应在液位计上电20秒后,再将液位计置为工作状态,进行测量操作。 液位控制器(HMT-900或H-1000)主要用于液位计的供电和防爆安全隔离。主机可通过RTS信号控制(HMT-900或H-1000)供给液位计的电源。当RTS有效时,电源将被打开。因此,液位计的电源是可以通过主机软件控制的。 在现场应用中,主机软件的工作时序一般应遵循以下几个步骤。 1) 在开主机前,并认真检查各相关设备的电源和电缆连接情况。 2) 在启动主机软件时,打开相应串行端口。使能RTS信号,给液位计上电。 3) 软件初始化操作,延迟20秒。 4) 读液位计的相应参数,然后将液位计置为工作状态。 5) 此时,主机可进入正常的轮训、记录、显示、报警等工作。 主机软件的主要工作是通过RS485总线和各个液位计进行DGL格式的数据包通信。因此,通信时序安排的好坏显得很重要。在本协议中,主机只能有1个,并完全控制总线,任何从机在没有主机请求时,必需保持接收状态。在设计从机电路时,应保证从机在上电时不能出现对总线的占用(发送状态),哪怕是很短的时间。以免增加系统功耗,影响其“本质安全”性能。 虽然主机控制着总线,但在总线空闲状态,主机也应处于接收状态。只有在向指定的从机发送请求数据包时,才进入发送状态。主机的发送接收状态切换由其串口的DTR信号控制,可称为MDTR。同样,从机也有一个控制信号,称为SDTR。当主机DTR无效(转换成TTL电平,MDTR为高电平)时,端口处于发送状态。当DTR有效(MDTR为低电平)时,端口处于接收状态。据此,可绘制出数据包传输的时序图如下: 在T1时刻,主机将MDTR置为高电平(DTR无效),准备发送数据。T2时刻,主机发送“请求数据包”。当数据包发送完成(T3时刻)后,随即要将MDTR变为低电平(T4时刻),释放总线,等待接收“应答数据包”。 在相应从机(液位计)接收到正确的“请求数据包”后,就开始准备“应答数据包”。经延时,在T5时刻,从机将SDTR置为高电平,控制总线。然后,在T6时刻发送数据包。发送完成(T7时刻)后,随即将SDTR置为低电平,释放总线。这样一次数据包通信就完成了。 对以上各时刻的时序要求可以描述为:T2-T1=1.9~3.5ms, T3-T2=10~60ms, T4-T3=1~3.5ms, T5-T3=8~18ms, T6-T5=1.9~3.5ms, T7-T6=10~60ms, T8-T7=1~3.5ms。一次通信的最长时间将控制在160ms以内。两次数据包通信的间隔应≥20ms。 根据以上描述和规定,我们就可以精确地进行主机和从机的通信控制。并根据可能出现的各种通信错误和故障,进行冗错设计。 4. 命令定义 命令0x01  通信协议识别码 请求数据: 0byte 应答数据: 3byte  字符串“DGL”  44,47,4C 命令0x02  地址更改 请求数据: 1byte  NewAdr-0x80 应答数据: 1byte  NewAdr-0x80 注:应答数据中仍保留为原来地址不变 命令0x03, 0x4  保留 命令0x05  读厂家名 请求数据: 0byte 应答数据: 10byte  字符串“ALMRT Ltd.” 命令0x06  读产品类型 请求数据: 0byte  无 应答数据: 8byte  DT0~7 浮子数 温度测点 外管类型  测杆材料 安装形式  防爆类型  x  x  命令0x07  读产品杆长 请求数据: 0byte  无 应答数据: 2byte  DT0,DT1 基数:2mm,范围:≤20m,GL= (DT1*128+DT0)*2mm 命令0x08  读温度测点位置 请求数据: 0byte 应答数据: 5byte  DT0~4  对应于VT1~5位置相对杆长的百分数(0~99)。 命令0x09  读产品序列号 请求数据: 0byte  无 应答数据: 4byte  具体待定,存于MCU EEPROM中。 命令0x0A  读电路和程序的版本号 请求数据: 0byte 应答数据: 2byte  DT0 电路版本 , DT1程序版本 命令0x0B  读零点校准参数数据 请求数据: 0byte 应答数据: 8byte  DT0~7 Level1Zero=((DT2*128+DT1)*128+DT0)*0.01mm  DT3<>0, 数据求反 Level2Zero=((DT6*128+DT5)*128+DT4)*0.01mm  DT7<>0, 数据求反 命令0x0F  设置产品工作状态 请求数据: 1byte  DT0=0,产品工作; DT0<>0,产品待机; 应答数据: 1byte  和请求数据相同。 命令0x10  读液位1(Level1,油面)数据 请求数据: 0byte 应答数据: 3byte  DT0, DT1, DT2 分辨率:0.01mm,范围:30mm~20m(0x1E8480, DT2=7A, DT1=09, DT0=0)。 当DT2=DT1=DT=0时,液位下溢出;当DT2=DT1=DT=7F时,液位上溢出; Level1=((DT2*128+DT1)*128+DT0)*0.01mm 命令0x11  读液位2(Level2,界面)数据 请求数据: 0byte 应答数据: 3byte  DT0, DT1, DT2 Level2=((DT2*128+DT1)*128+DT0)*0.01mm  命令0x12  读两个液位数据 请求数据: 0byte 应答数据: 6byte  DT0, DT1, DT2,  DT3, DT4, DT5 Level1=((DT2*128+DT1)*128+DT0)*0.01mm Level2=((DT5*128+DT4)*128+DT3)*0.01mm 建议:如需读液面2的数据时,应采用该命令。这样,可同时得到液位1的值,提高了通信速度。 命令0x13~0x14 保留 命令0x15  读各测杆测点温度(只有一个温度测点) 请求数据: 0byte 应答数据: 10byte  DT0~9 分辨率(刻度):KD=0.015625℃(2^-6), 范围:-56~130℃ VT1=(DT1*128+DT0)*KD-56,VT2=(DT3*128+DT2) *KD-56, …… 命令0x16  保留 从以上协议可知,每个通信数据都用1Byte的16进制数表示,数据包中的地址(ADDRESS)字段长度为1Byte,当HT-1000(主机)向uPSD3200(从机)发送数据时,数据包中的地址(ADDRESS)字段中MSB应为1,因为此时数据包要到达的地址是从机, 从机的地址范围为:0x80~0xFD,即:MSB=1。主机(HT-1000)没有地址(也许理论上应该有),主从机通信过程是这样的:主机不断发出4个字节的数据包(地址,命令,字节数,校验和)去查询从机的测量情况,其中字节数为0,则没有数据字节,只需4个字节就可构成一个数据包。如下:
本文档为【485通讯协议标准】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_995397
暂无简介~
格式:doc
大小:28KB
软件:Word
页数:9
分类:互联网
上传时间:2019-02-25
浏览量:214