产品推荐:水表|流量计|压力变送器|热电偶|液位计|冷热冲击试验箱|水质分析|光谱仪|试验机|试验箱


仪表网>技术中心>应用设计>正文

欢迎联系我

有什么可以帮您? 在线咨询

一种基于MODBUS嵌入式人机界面的设计与实现

   2012年02月01日 16:20  
  一、设计概要
  
  现场总线是一种用于底层工业控制和测量仪表之间的总线,人机界面设备就是作为现场总线中,控制器和操作者之间的“通信员”它可以完成现场控制器与操作者之间数据的接收和发送。本设计使用Atmel单片机89C52作为主要控制芯片,用以东芝丁6963C为控制芯片的128*64液晶比O作为显示界面,采用工业标准通信协议MOOBUS作为数据信息交互的介质,主要功能是完成对工业网络中现场控制器数据的采集显示,根据需要设定数据并发送到现场控制器完成控制任务,实现人机之间控制信息的交互传送。文章分别介绍了硬件设计电路和软件的设计过程,并介绍了一种好用和简单的MOOBUS从设备调试工具——Modbusslave。
  
  设计中使用128*64LCD实现显示界面如图1所示,其中“实际值”显示从现场取要的数据,“设定值”是由操作者设定并已传入现场设备的参数,“操作值”显示操作者可以修改但还未发送到现场设备的数值。zui后一行用来指示4个按键。
  
  二、硬件部分设计
  
  系统硬件电路框图如图2。
  
  电路部分十分简单,包括看门狗电路、4个按键的直接连接、程序扩展电路、RS232电平转换部分、液晶点阵连接部分。
  
  MAX7OS的功能是:上电复位程序监视。89C52正常工作,执行喂狗程序时,不断从P17输出脉冲信号至MAX705的WDI脚,当单片机程序“跑飞”后,Pl.7不再输出脉冲信号MAX705的WDI脚在1.6S内收不到脉冲信号,将在MAX70S的RESTE端产生高电平,产生复位信号,将单片机复位,迫使程序复位到入口处。
  
  针对AT89C52硬件资源比较丰富,考虑采用直接方式设计键盘电路,而且可以简化电路。键盘采用4个开关直接控制。开关的一段通过电阻连接电源和AT89C52的P10~P13管脚,而另一端接地。由于P10~P13是低电平工作,当不同的开关接通时,根据采集到不同端口是高还是低电平,来执行相应的按键子程序。
  
  考虑到使用LCD具有较强的表现能力和丰富的表现方式,所以扩展了32K的EPROM27256。是为实现产品升级,完成丰富菜单,强大功能,表现动画准备的。
  
  128*64液晶显示器LCO采用直接访问方式,直接访问方式是把内置T6963C控制器的液晶显示模块作为存储器或I/O设备直接挂在单片机的总线上。模块的数据线接单片机的数据总线上,片选及寄存器选择信号线由单片机的地址总线提供,读和写操作由单片机的读写操作信号控制。按口电路如图2所示,在图中使用了地址线AS作为模块的寄存器选择线C/D,使用地址线A15作为模块操作的片选线;模块的VO端所接的电位器是作为液晶驱动电源的调节器,调节显示的对比度。使用该种连接方式,不用考虑T6963C的时序图,不用对LCD的管脚进行单独的操作来满足时序,就像读写外部RAM一样,笔者认为比采用要在程序中实现时序的间接访问连接方式方便。
  
  考虑到在常温下,LCD的额定电流为0。4ma所需的功率很小,再加上RS232串口集成电路MAX232有两路发送器、两路转换器,使用其中一套完成电平转换用来通信,另一套正好用来产生-10V,该电压由MAX232的14端供LCD显示画面使用。
  
  三、软件设计部分
  
  下面介绍软件部分,主要完成一下功能按键的查询和响应、画面的显示和刷新通过MOOBUS协议完成数据的接收和传输通信。
  
  软件结构清晰,按模块分为三大块主程序部分、T0定时中断、串口中断部分。
  
  (1)主程序部分
  
  主程序流程图如图3所示,主要完成一些初始参数的设定,其中LCD的初始化包括:液晶屏的尺寸光标的位置和形状等这部分程序在购买LCD时厂家会附带的,根据需要修改一下即可满足要求;还有就是将需要显示的汉字进行编码。定时器使用的是T0选择方式1,采用50ms中断查询按键,考虑到还有串口中断,使用了默认的中断优先级,即T0中断高于串口中断。这种安排已通过试验调试。在等待中断部分安排了循环执行喂狗程序目的是在程序正常执行时起到“看门狗”的作用,在等待中断过程中系统又不认为是“死机”。
  
  main:
  
  Icallclearmemory;清内存
  
  Icallinitlcd;初始化Icd
  
  movsp,#stackpointer;堆栈为65h
  
  movtmod.#21h:t0方式1,t1方式2
  
  movradixcursor.#10h
  
  movcurrentpagenumber,#01h;初始
  
  页号为1
  
  movpagenumber,currehtpagenumber
  
  setbes
  
  setbea
  
  movth1,#Ofdh;设定波特率9600bps
  
  movtl1.#Ofdh
  
  setbtr1;启动定时器t1
  
  movscoh.#Od0h
  
  mov2ch,用来辅助发送
  
  mov2bh.#10h
  
  Icallsetuptimer0;初始化定时器t0,并启动t0
  
  setbren
  
  Icallchaxuhsj;发送查询命令
  
  Icallshowpage;显示页面
  
  dieloop:
  
  nop
  
  Icallfeeddog;执行喂狗程序
  
  jmpdieloop;循环等待中断
  
  (2)T0定时中断部分
  
  流程图如图4所示,这部分主要功能是完成按键的查询,并转去执行相应的子程序本系统中一共有四个编程键,依次可实现修改数据、增加值、减少值和翻页功能。当我们按下修改键后(即光标被激活)修改键可以用来移动光标位置此时按增加键和减少键可以分别增加和减少数值。其中翻页键是一个复用键如果直接按翻页键(不激活光标),那么它的功能就是在不同的页面之间切换,并从现场收集各页数据并显示到LCD上:而当光标处在被激活状态下时,按下翻页键就可以向现场控制器(如DSP)发送数据达到控制目的这种“一键复用”的设计,在电子商品中特别常见通过软件的设计减少了按键的数量,是一个比较有实际价值的设计已被广泛使用。键盘采用50ms定时中断设计,一般人手按键的起落时差远大于50ms所以可以满足设计要求而且在后面软件部分进行了去抖动,等待按键抬起功能的设计。timer0int:
  
  pushdph
  
  pushdpl
  
  pushacc
  
  pushpsw
  
  movthi0。#4bh
  
  movtl0。#Dfdh
  
  clrtr0;关定时器
  
  movp1,#Offh;置p1口为输入状态
  
  mova,p1;读按键
  
  epla
  
  anda,#00001111b;屏蔽高4位
  
  jzgoret00;无键按下
  
  movpgbkey,a
  
  Icalldelay;有键按下delay10ms去抖动
  
  Icallwait;等待按键抬起
  
  Icallseankey;转去执行相应的按键子程序
  
  goret00:
  
  setbtr0;开定时器
  
  poppsw
  
  popacc
  
  popdpl
  
  popdph
  
  ren
  
  (3)串口中断部分
  
  这部分的主要功能是通过MODBUS协议完成数据的查询和发送。先对MODBUS做个简单的介绍该协议通信使用主从技术,即仅主设备能初始化传输(查询)其它设备(从设备),根据主设备查询提供的数据作出相应反应。按传输模式分为ASCII和RTU方式。本设计采用RTU方式。这种方式的主要优点是:在同样的波特率下,可比ASCII方式传送更多的数据。每个消息必须以连续流的方式传输。
  
  MODBUS协议建立了主设备查询的格式设备地址、功能代码、所有要发送的数据、错误检测域从设备回应消息也由MODBUS协议构成,包括确认要行动的域、任何要返回的数据和错误检测域。如果在消息接收过程中发生错误或从设备不能执行其命令,从设备将建立错误消息并把它作为回应发送出去。
  
  查询查询消息中的功能代码告之被选中的从设备要执行何种功能数据段包含了从设备要执行功能的任何附加信息例如功能代码03是要求从设备读保持寄存器并返回它们的内容。数据段必须包含要告之从设备的信息:从何寄存器开始读及要读的寄存器数量错误检测域为从设备提供了一种验证消息内容是否正确的方法。
  
  回应:如果从设备产生正常的回应,在回应消息中的功能代码是在查询消息中的功能代码的回应数据段包括了从设备收集的数据:像寄存器值或状态。如果有错误发生功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。
  
  举一个关于功能码03H的例子。
  
  主站询问报文格式:
  
  从站应答格式:
  
  serialportint:
  
  pushdph
  
  pushdpl
  
  pushacc
  
  pushpsw
  
  jbcri,receive
  
  Icallchaxunsj;发送查询命令
  
  sjmpreturn
  
  receive:
  
  movr0,2bh;用来存接收数据的地址指针
  
  mova,sbufall
  
  clrriall
  
  mov@r0,a
  
  inc2bh
  
  mova,2bh
  
  Icallcrc;进行crc校验
  
  Icallshowpage
  
  return:
  
  poppsw
  
  popacc
  
  popdpl
  
  popdph
  
  reti

        结束语
  
  我们使用了Modbusslave软件仿真下位机,模拟MOD-BUS的从设备。通过该软件,用所设计人机界面可以读取具体设备的具体各类寄存器的数据,同样可以写数据到设备中的各类寄存器中,这样就完成了数据的接收和传送。

免责声明

  • 凡本网注明“来源:仪表网”的所有作品,均为浙江兴旺宝明通网络有限公司-仪表网合法拥有版权或有权使用的作品,未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:仪表网”。违反上述声明者,本网将追究其相关法律责任。
  • 本网转载并注明自其它来源(非仪表网)的作品,目的在于传递更多信息,并不代表本网赞同其观点或和对其真实性负责,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品第一来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
联系我们

客服热线: 15267989561

加盟热线: 15267989561

媒体合作: 0571-87759945

投诉热线: 0571-87759942

关注我们
  • 下载仪表站APP

  • Ybzhan手机版

  • Ybzhan公众号

  • Ybzhan小程序

企业未开通此功能
详询客服 : 0571-87759942