




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、modbus协议下单片机与eview触摸屏的通信2008-08-22 14:22:30 作者:未知 来源:电子产品世界关键字:modbus通信规约 功能码eview crc校验 系列单片机 触摸屏 复位电路 上位机51单片机摘要modbus协议由于其具有开放性、透明性、成木低、易于开发等特点,l1 成为当今工业领域通信协议的首选。本文介绍了一种基于modbus通信协议的 eview触摸屏与常用的51单片机的通信方法。该方法通过c51编程实现modbus 通信,在51系列单片机上具有通用性,有一定的借鉴作用。工业控制中经常需耍观察系统的运行状态或者修改运行参数。触摸屏能够直观、 生动地显示运行参
2、数和运行状态,而且通过触摸屏画面可以克接修改系统运行参数, 人机交互性好。单片机广泛应用于工控领域屮,与触摸屏配合,可组成良好的人机 交互环境。触摸屏与单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通 信程序。modbus协议是美国modicon公司推出的,一种冇效支持控制器z间以 及控制器经由网络(如以太网)与其他设备之间进行通佶的亦议。本文以stc89c51 单片机和人机电子有限公司的eview触摸屏为例,介绍其通信程序的开发过程。1系统结构实现触摸屏与单片机的通信,主要是解决通信协议的问题。本文使用开放的 modbus通信协议,以触摸屏作主站,单片机作从站。eview触摸屏木
3、身支持 modbus通信协议,如果单片机也支持modbus协议,就可以进行通信了。eview 触摸屏支持rs-232和rs485两种通信接口。在丁业控制领域,由于rs-485 具冇可靠性高、传输距离远、抗干扰能力强等优点,所以在本系统中触摸屏与单片 机通信采用rs-485连接,传输速率设置为9600 kbps。rs-485信号传输是一 种半双工的传输方式,单片机通过一个rs-232/rs-485无源转换器把232信号 转换成485信号,连接到eview触摸屏上。图丨为该系统的原理图。2 4 68n 3 5vcc20pfxj t 3jil05q2miunotp00pliitp01p12pu2p1
4、3p03pmkmpj5p05p16p06pitp07mipiointop21tlp2jtop24exapp26xi x2reset rxd txdkp ale/p wk psenmax232ffi 1系统原理圏cap2- capi-rtout) t-inirm)ut: tin2rr ini r4xjtirr-in2 r-oundigndoebafaroverl(xw4临gnd vcccap cap -cap 2- cap1*ftvccrs4a5$ rx23289c5i单片机控制系统采用stc89c51系列单片机,其内部集成max810/stc810 专用复位电路(原有外部复位可继续保留,与in
5、tel 8051引脚兼容),具有抗干扰 能力强、加密性强、高抗静电(esd)、超低功耗等特点,而且价格低廉。在本系统 屮,触摸屏是上位机,单片机是下位机。2 modbus 协议2.1 modbus协议简介modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相 互之间、控制器经由网络(如以太网)与其他设备之间可以通信。它已经成为一种通 用工业标准。不同厂商生产的控制设备可以通过它连成工业网络,集中监控。modbus协议定义了一个控制器能认识使用的消息结构,而不管它们是经过何 种网络进行通信的。它描述了一控制器请求访问其他设备的过程如何冋应来口其他 设备的请求,以及怎样侦测错误并
6、记录;制定了消息域格局和内容的公共格式。当在某一 modbus网络上通信时,此协议决定了每个控制器需要知道它们的设 备地址,识别按地址发来的消息,以及决定要产生何种行动。如果需要回应,则控 制器将生成反馈信息并用modbus协议发出。在其他网络上,包含了 modhus协 议的消息转换为在此网络上使用的帧或包结构。2.2 modbus rtu通信数据传输模式当控制器设备基于modbus协议以rtu模式通信时,消息屮的每个字节包含 2个4位的十六进制字符。这种方式的主要优点是:在同样的波特率下,可比ascii 方式传送更多的数据。编码采用8位二进制,十六进制数09和af;消息中每个8位域都是由2
7、个十六进制字符组成。组织结构如下:地址位数据位奇偶校絵位停1e位错误检测1位8位1位或无校验1ftcrc2.3 modbus rtu消息帧结构modbus rtu消息帧结构如下:地址码功能代码数据区错误校验码8位8位nx8位16位(1) 地址码地址码为通信传送的第一个字节。这个宁节表明,由用户设定地址码的从机将 接收由主机发送来的信息。每个从机都有具有唯一的地址码,只有符合地址码的从 机才能响应冋送,且响应冋送均以各自的地址码开始。主机发送的地址码则表明将 发送到的从机地址,而从机发送的地址码表明冋送的从机地址。地址0用作广播地 址,以使所有的从设备都能认识。(2) 功能代码功能代码为通信传送
8、的第二个字节。modbus通信规约定义可能的代码范围是 十进制的1255。当然,冇些代码适用于所冇控制器,冇些仅适用于某种控制器, 还有些保昭以备后用。主机发送请求,通过功能码告诉从机执行什么动作;从机响应 请求,从机发送的功能码与从主机发送来的功能码一样,表明从机已响应主机进行 操作。如果从机发送的功能码的最高位为1,则表明从机没冇响应操作或发送出错, 主设备应用程序得到异议的回应后,典型的处理是重发消息。表i列出了常用 modbus支持的部分功能码。功能码名称作用01读取线删状态取得-组逻辑线删的当前状态 (on/off)02读取输入状态取得一组开艾输入的半肪状态 (on/ofk)03读取
9、保持寄存器在一个或多个保持寄存誥中取 得当前的二进制值04读取输人寄存器在一个或多个输入寄存雅中取 得当前的二进制fll表1常用modbus支持的部分功能码以读取线圈状态为例说明。主站发送命令:设备地址命令号01起始寄存 器地址高8位低8位读取的寄存器数高8位低8位crc校验的低8位高 8位。从站响应:设备地址命令号01返回的字节个数数据1 数据2.(数 据n crc校验的低8位高8位。(3) 数据区数据区根据功能码的不同而不同。数据区包含需要从机执行什么动作,或由从 机采集的返送信息。这些信息可以是实际数值、设置点、主机发送给从机或从机发 送给主机的地址等。例如,功能码告诉从机读取寄存器的值
10、,则数据区必须包含耍 读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。(4) 错误校验码主机或从机可用校验码判别接收信息是否出错。错谋检测域包含一个16位的 值(用2个8位的字符来实现)。错误检测域的内容是通过对消息内容进行“循环兀 余检测”得出的。crc域附加在消息的最后,添加时先是低字节然后是高字节,故 crc的高位字节是发送消息的最后一个宁节。错误校验采用crc-1 6校验方法。3软件编程下面是采用c5i编写的软件,主耍包括crc校验和终端接收及波特率设置等。 由于篇幅冇限,其他程序略。(1)波特率设置/功能:串口初始化波特率为9 600 bps方式1 void
11、init_com( void) tmod = 0x20;pcon = 0x00;scox = 0x50:th1 = oxfd;ti=oxfd;tri = hea = 1:es-1;(2) crc校验函数uinl crc16( uchar * pushmsg iinsigmd short usdataken)(uchar uchcrchi = 0xffjuchar uchcrclo oxf'f: uint ulndex:while (usdatalen ) ! ulndcx= uchcrt'iii * */ crc字廿初始化/低crc字节初始化/crc循环中的索引/传输消息缓冲区
12、 pushmsg/计算 crcuchcrchi = uchcrclo * auchcrchiulndexj;uchcrcix> = auchcrclof ulndcx_ ;return (uchcrl'hi<< 8 i uchcrclo);(3)发送函数和判断函数void send( uchar rrbufr int sendcount) uchar icrohiwcrcloej<k=0;uchar sendbuf 32 ;usdaialcn= wen dcount 2 ;sendbufl.oj = reccbufo ; sendbuf 1 = rcccbuf
13、l 1 . s send- buf_2=sendcount 5 ;for(j = 3;j<;sendcount 2;j+ -r ) sendbufejl = rrbuf k :k+ + ;k = 0:crcdata = crc16( sendbuf usdatalen):crchi = crcdata 256:crclo=crcl)ata % 256:scndbuflsendcount 2 = crchi;sendbufu sondconnt 1 丨-crclo; for(i=(hivs<?ndcouni;i+) sbuf = sendbuflij : while(tl =0) ;
14、t1 0;void rcad() switch( start .adrcss) case 0x0002 : send( &-writcbufl tsend(ount): break;startadrcss= startadress rccebu(l3 ;if (recebuf ()2= =0x00)scn<lcount = 52 * 256 ( recebuf5l);rea(l();else sbuf = 0x0a; whilc( ti= =0) ;ti = o; >(5)串口中断函数/.实现crc数据信息的分析处理void com ml ntproco interrupt
15、 i if(rl) ri 0; recebuflrecccount = sbuf:rccocouiit 4 -* ; usdatalcn= rcccc'ount 2:switch ( recebu1 )cae 0x01 : if(rccc(?ount> = 8)recefouni 0 ; rcadbit( ) : y break ;case 0x02 : if(rececount> = 8)rccccounl = 0; rcacibir(): i break;case 0x03 if< rececount?> = 8) rece('ount = ():crc-.data() ; break;case 0x04 : if(rccc()unt?> = 8):recccount = 0 ;crc_data( ) ; ; break;case 0x05 : if( rececouni> 8) rccc<?ount = 0: wrirbit() ; / break:case 0x06 : if( recccount> = 8)'recefounr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桂林师范高等专科学校《高等量子力学》2023-2024学年第一学期期末试卷
- 潞安职业技术学院《现代汉语专业》2023-2024学年第一学期期末试卷
- 江苏城乡建设职业学院《工程概预算课程设计》2023-2024学年第一学期期末试卷
- 人口死亡登记培训课件
- 三峡大学《中医养生与食疗》2023-2024学年第一学期期末试卷
- 福建华南女子职业学院《田径与户外运动(三)》2023-2024学年第一学期期末试卷
- 湖北第二师范学院《西方思想经典》2023-2024学年第一学期期末试卷
- 铁岭卫生职业学院《科技档案管理》2023-2024学年第一学期期末试卷
- 教育信息化推动国际教育均衡发展
- 武汉航海职业技术学院《大学数学》2023-2024学年第一学期期末试卷
- GB/T 12769-2015钛铜复合棒
- 借阅档案联系函(借阅其本人档案原件)
- 国家开放大学电大《商法》期末题库及答案
- 图形的旋转说课课件
- 爆破安全生产奖惩管理制度
- 【精编美术课】《仕女簪花》课件
- 半导体设备零部件公司质量检验
- Q∕SY 1302-2010 强制电流阴极保护电源设备应用技术
- 2022年《基础会计》第八版ppt课件(完整版)
- KTV工程预算表模板
- (完整版)钢筋加工棚验算
评论
0/150
提交评论