基于MODBUS协议的单片机与触摸屏通信_金杰

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在工业控制中经常需要观察系统的运行状态或者修改运行参数。

触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。

单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。

触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。

Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。

本文以AT89S51单片机和威纶通科技有限公司的MT6070iH型触摸屏为例,介绍其通信程序的开发过程。

一、系统结构
实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。

本文使用开放的Modbus通讯协议,以触摸屏作主机(M aster),单片机作从机(Slaver)。

MT6070iH触摸屏本身支持Modbus通讯协议,只要单片机按照Modbus协议进行收发数据,就可以进行通信了。

触摸屏与单片机之间采用RS-485标准接口直接连接,传输速率设置为9600bps。

图1为该系统的电路图。

图1系统电路图
将AT89S51单片机的TXD、RXD口设置为异步串行通信模式,经过MAX485芯片将TTL电平转换为RS485电平,再与MT6070iH触摸屏RS-4852W接口相连,即完成了硬件连接,其中P3.2作为收发控制信号。

MT6070iH触摸屏RS-4852W接口的管脚2为485A,管脚1为485B,管脚5为公共地。

二、如何将MT6070iH设定成Modbus装置
图2将MT6070iH设定成M odbus装置
将MT6070iH触摸屏设定成Modbus装置(以称为M odbus Server),单片机或其它装置只需使用M odbus协议,透过RS232/485接口,即可读写M T6070iH上的数据。

将MT6070iH设定成Modbus装置的方法如下:
首先需在MT6070iH使用的MTP程序的设备清单(device table)中增加一个新的设备,此时PLC种类需选择“MODBUS Server”,PLC接口可以选择RS232、RS4852W、RS4854W或Ethernet,这里选择RS4852W。

如图2所示。

当接口选择使用RS485时,需选择使用的连接端口(COM1~COM3),并设定正确的通讯参数及站号。

这里选择COM1(9600,N,8,1),站号设定为1。

按下“确定”键后可以在设备清单中发现一个新的装置:MODBUS Server,此时即完成了Modbus装置的设定,在完成MTP档案的编译并将获得的XOB档案下载到触摸屏后,即可透过Modbus协议读写MT6070iH上的数据。

三、Modbus通信协议介绍
Modbus通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。

协议定义了主机查询及从机应答的信息帧格式。

通信时,主机首先向从机发出请求信息,符合相应地址码的从机接收通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务,然后把执行结果返给主机。

若从机接收到的校验码与本机计算的不同,则说明数据在通信过程中出现错误,从机把这次请求视为无效,功能代码将被修改以用于指出回应消息是错误的,同时数据段包含了描述此错误信息的代码。

当主机收到这一信息时,会重新发送请求信息。

校验方式分为LCR(传送数据为ACSII时)校验或CRC(传送数据为二进制时)校验,这里采用CRC校验方式。

信息传输为异步方式,并以字节为单位。

主从站之间通讯的字格式如下:
字格式(串行数据)10位二进制
起始位1位
数据位8位
奇偶校验位无
停止位1位
Modbus协议可支持ASCII码或二进制格式的数据传输。

ACSII码方式下每一个字节数据分两个字节传送,二进制方式下用一个字节传送,为了减少数据传输量,一般选二进制数据方式。

各个区允许发送的字节均为16进制的0~9,A~F。

二进制信息帧标准结构为:初始结构≥4字节的时间
地址码1字节
功能码1字节
数据区N字节
错误校验16位CRC码
结束结构≥4字节的时间
二进制模式中,信息开始至少需要3.5个字符的静止时间,依据使用的波特率,很容易计算这个静止时间。

发送完最后一个字符后,也有一个至少3.5个字符的静止时间,然后才能发送一个新的信息。

网络上的设备连续监测网络上的信息,包括静止时间。

四、通信程序的开发
MT6070iH触摸屏只支持Bit和Word地址类型,而实际的单片机或其它控制器还有Byte、Double Word等表示方法,因此在进行通信时,需要把单片机和触摸屏的数据进行变换。

触摸屏画面元件读取地址的设备类型有LW、0x、1x、3x、4x、RWI、RW等选项。

其中,LW表示该元件读取的是触摸屏内部的地址,如其它元件的地址;0x表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;RWI、RW都是触
基于MODBUS协议的单片机与触摸屏通信
郑州市电子信息工程学校金杰
[摘要]本文介绍一种在MCS-51单片机与触摸屏之间采用Modbus协议实现异步串行通信的方法。

简单介绍了Modbus通信协
议,给出了硬件电路连接图、程序流程图以及用MCS-51单片机C语言编写的通信程序。

实际使用证明该方法数据传输稳定可靠,
并提供了良好的人机交互环境。

[关键词]触摸屏MCS-51单片机Modbus协议
通信
235
——
农业论坛以及农业人才服务。

(5)/农信通农村信息网,涉农生活服务移动互联网平台,提供最新农业信息,化肥、饲料、农机等价格行情,农民工招聘、就业信息;食品、水果、蔬菜等农产品交易信息,是城乡互动、乡村旅游、农家乐的综合展示窗口。

(6)/中国饲料行业信息网,为饲料生产加工、饲料原料贸易、饲料添加剂及畜牧养殖企业提供全面的新闻、行情、价格和分析预测等信息资讯服务。

(7)/
中国园林网,提供园林绿化苗木资讯、园林绿化景观、园林绿化苗木工程、
园林绿化设计等方面信息,为相关园林绿化苗圃企业提供商铺,是园林绿化,苗木园艺的专业园林绿化门户。

(8)/中国三农论坛,博览天下农事,关注农村、关心农业、关爱农民。

除以上信息资源外,专题讨论组、电子论坛等也可以方便地为相同科学领域的农业专家提供交流空间,这也是当前网络获取农业信息资源的重要方式之一。

参考文献[1]刘艳华,徐勇.《不同搜索引擎在农业领域的应用效果对比》.《农业网络信息》,2009年08期.
[2]严方.《互联网上农业信息资源的整合、利用与管理研究》.《华中
农业大学》
,硕士论文.[3]陈林官.《浅谈国内网上农业信息资源》.《农业图书情报学刊》,2001年02期.
(上接第234页)
摸屏的内部地址,起辅助作用。

这里仅以读写LW 的0地址的数据为例说明读写过程。

MT6070iH 触摸屏与单片机以M odbus 协议通信,用到的M odbus 功能码如下:
功能码名称作用01读取线圈状态取得一组逻辑线圈的当前状态(ON/OFF)
02
读取输入状态取得一组开关输入的当前状态(ON/OFF)03
读取保持寄存器在一个或多个保持寄存器中取得当前的二进制值
04读取输入寄存器在一个或多个输入寄存器中取得当前的
二进制值
05强置单线圈强置一个逻辑线圈的通断状态06预置单寄存器把具体二进值装入一个保持寄存器1.串口程序的初始化
使用定时器1作为波特率发生器,
对串口的初始化程序如下:void Initial(void){
SCON=0x50;//串口方式1,允许接收TMOD=0x20;//定时器1方式2TL1=0xFd;//波特率设为9600TH1=0xFd;//存储定时器初始值EA =1;//全局中断允许TR1=1;/启动定时器
}
2.向MT6070iH 触摸屏LW 的0地址写入数据
向MT6070iH 触摸屏LW 的0地址写入数据0x3A4B ,
功能码为6,程序如下:
void DateWrite(void){
ES=0;//关中断unsigned int a;unsigned int crc;inData[0]=1;//站号inData[1]=6;//功能码inData[2]=0;//起始地址高位inData[3]=0;//起始地址低位inData[4]=0;//寄存器个数高位inData[5]=1;//寄存器个数低位inData[6]=2;//字节数inData[7]=0x3A;//要写入数据高位inData[8]=0x4B;//要写入数据低位crc=0xffff;
crc=calccrc(9,&inData[0]);//根据前9个字节计算CRC 值inData[9]=crc&0xff;//CRC 值低8位inData[10]=crc>>8;//CRC 值高8位for(a=0;a<11;a++)//共发送11个字节{
SBUF=inData[a];//发送数据while(!TI);TI=0;}ES=1;
//开串行口中断
}
3.从M T6070iH 触摸屏LW 的0地址读取数据从MT6070iH 触摸屏LW 的0地址读取数据,功能码为3,程序如下:
void DateWrite(void){
ES=0;//关中断unsigned int a;unsigned int crc;inData[0]=1;//站号inData[1]=3;//功能码inData[2]=0;//起始地址高位inData[3]=0;//起始地址低位inData[4]=0;//寄存器个数高位inData[5]=1;//寄存器个数低位crc=0xffff;
crc=calccrc(6,&inData[0]);//根据前6个字节计算CRC 值inData[6]=crc&0xff;//CRC 值低8位inData[7]=crc>>8;//CRC 值高8位for(a=0;a<8;a++)//共发送8个字节{
SBUF=inData[a];//发送数据while(!TI);TI=0;}ES=1;//开串行口中断}
发送完读取数据的信息,一旦MT6070iH 触摸屏接收到该信息,经过CRC 校验,如果没有错误,就会把LW 的0地址数据发送给单片机,共7个字节,数据格式如下:
字节数据段名称1站号2功能码3读取字节数4寄存器数据高位5寄存器数据低位6CRC 校验码低位7CRC 校验码高位单片机接收完这7个字节,根据站号、功能码及CRC 校验判断是否正确,如果接收正确,则第4个字节和第5个字节的值就是所需要的MT6070iH 触摸屏LW 的0地址的数据。

本系统具有连接电路简单、组态灵活、通信可靠性高等特点。

由于Modbus 通信协议的开放性的特点,国外进口控制器串行通信大都支持该协议,因此本文所实现的采用Modbus 协议的串行通信具有广泛的应用价值。

236——。

相关文档
最新文档