PIC单片机与触摸屏串行通信MODBUS协议

本文介绍了使用MODBUS协议实现PIC16F877单片机与eView MT510T触摸屏的串行通信。通过设置RS-232C接口和CRC校验,实现主从站通信。详细讨论了协议细节、单片机与触摸屏地址对应关系及通信程序开发,展示了通信数据格式和实际应用案例。
摘要由CSDN通过智能技术生成

PIC单片机与触摸屏串行通信MODBUS协议


    关键词:触摸屏 PIC单片机 Modbus协议 通信

工控中经常需要观察系统的运行状态或者修改运行参数。触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。单片机广泛应用于工控领域中,与触摸屏配合,可组成良好的人机交互环境。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编写相应的通信程序。Modbus协议是美国Modicon公司推出的一种有效支持控制器之间以及控制器经由网络(例如以太网)和其它设备之间进行通信的协议。本文以PIC16F877单片机和人机电子有限公司的eView MT510T型触摸屏为例,介绍其通信程序的开发过程。

1 系统结构

实现触摸屏与单片机的通讯,主要是解决通讯协议的问题。本文使用开放的Modbus通讯协议,以触摸屏作主站,单片机作从站。eView触摸屏本身支持Modbus通讯协议,如果单片机也支持Modbus协议,就可以进行通信了。触摸屏与单片机之间采用的RS-232C兼容接口直接连接,传输速率设置为9600kb/s。图1为该系统的电路图。

将PIC16F877单片机RC6、RC7口设置为异步串行通信模式,经过MAX232芯片将TTL电平转换为RS232电平,再与eView触摸屏PLC[RS-232]接口相连,即完成了硬件连接。eView触摸屏PLC[RS-232]接口的管脚2为TXD,管脚3为RXD。

2 Modbus通信协议介绍

Modbus通信协议是一种串行的主从通信协议,网络里仅有一台设置可作为主机(称Master),其它设备作为从机(称Slaver),主机不需编号,从机必须编号。协议定义了主机查询及从机应答的信息帧格式。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
pic与维纶触摸屏MODBUS程序 c语言这边描述是modbus.h文件 //extern uchar ACC; extern uchar sendBuf[40],receBuf[16]; extern uchar checkoutError; // ==2 偶校验错 extern uchar receTimeOut; extern ulint dwTickCount; uint crc_16(uchar *Array, uint Len); void beginSend(void); //开始发送 void checkComm0Modbus(void); //检查uart0数据 void readCoil(void); //读线圈状态 void readRegisters(void); //03读保持寄存器 void readInputRegisters(void); //04读取输入寄存器 void forceSingleCoil(void); //05强制单个线圈 void presetSingleRegister(void); //06设置单个寄存器 void presetMultipleRegisters(void);//16设置多个寄存器 void forceMultipleCoils(void); //强制多个线圈 void LightChang(uchar code); uint getRegisterVal(uint addr,uint *tempData); //取寄存器值 返回0表示成功 void getInputRegisterVal(uint addr,uint *tempData);//读取输入寄存器值 返回0表示成功 uint setRegisterVal(uint addr,uint tempData); //设置寄存器值 返回0表示成功 uint getCoilVal(uint addr,uint *tempData); //取线圈状态 返回0表示成功 uint setCoilVal(uint addr,uint tempData); //设定线圈状态 返回0表示成功 extern uchar sendCount; //发送字节个数 extern uchar receCount; //接收到的字节个数 extern uchar sendPosi; //发送位置 uchar testCoil; //用于测试 位地址1 uint testRegister; //用于测试 字址址16 uchar localAddr = 1; //单片机控制板的地址 uint Logocount=0; //LOgo显示时间计数 uint SysData[16]={0,1,2,3,4,5,6,7,8,9,0X0A,0X0B,0X0C,0X0D,0X0E,0X0F};//系统保持寄存器数据存储寄存器 uint AreaPara1_Disp[10]={2000,2000,2000,2000,2000,2000,2000,2000,2000,2000};//区域1-10光量寄存器 uchar Group_View[10]={65,65,65,65,65,65,65,65,65,65}; //查看分组寄存器 uchar Group_Set[10]={65,65,65,65,65,65,65,65,65,65}; //设置分组寄存器65,66,67,68,69,70,71,72,77,78 uint GroupBit_Enable=0x0001; //分组使能位 uchar Group_Now=65; //当前设置分组 uchar Group_Save=65; //当前确认设置分组 uchar Mode_Now; //当前设置模式 uchar Mode_Save; //当前确认设置模式 uchar ModeChange; //PLC控制器件,地址4x-58,控制自动模式和手动模式的设置画面切换 uchar ModeLight_Now; //光量调节模式,0X26,1专家模式或0普通模式 uchar ModeLight_Save; //保存光量调节模式,0X26,1专家模式或0普通模式 uint Switch_Set=0x3ff; //开关设置 uint Switch_View=0x3ff; //开关查看 uint Contrl_Mode; //区域控制模式查看 uint Light_Mode; //区域调光模式查看 //uint ONFF_STATUS=0x3ff; //开关状态 uint Status_Sure=0x00; //状态确认标志寄存器 uint Status1_Sure=0x00; //状态确认标志寄存器 uint LightQul_Now=2000; //光量设置值 uint LightQul_Save; //光量设置保存值 uchar RedPercent_Now=100,BluePercent_Now=100; //红光蓝光百分比设置值0 uchar RedPercent_Save,BluePercent_Save; //红光蓝光百分比保存值 uchar StartHour_Now,StartMin_Now,OverHour_Now,OverMin_Now;//开启时间 时,开启时间 分 关闭时间 时,关闭时间 分 uchar StartHour_Save,StartMin_Save,OverHour_Save,OverMin_Save;//开启时间 时,开启时间 分 关闭时间 时,关闭时间 分 uint LightQulitity_Now=2000,LightQulitity_Save=2000; //在专家模式下,光量值。 //extern struct string Group[10]; //extern struct string Area[10]; extern uchar AreaNumber; //区域个数 uint SySecret; //系统设置密码 uchar SecretStauts=24; //系统密码输入状态 extern uint Rtc_SetHr ,Rtc_SetMin; //在设置实时时钟时操作的时间寄存器 extern uint Rtc_SetDay ,Rtc_SetSec; //在设置实时时钟时操作日寄存器和秒寄存器 extern uint Rtc_SetYear ,Rtc_SeMon; //在设置实时时钟时操作年寄存器和月寄存器 extern uint ONFF_STATUS; //开关状态 extern uchar Control_St; uchar PLC_Page; //触摸屏页码控制 extern uchar Zigbe_Cnt; extern uchar Zigbee_Send; //extern uchar PLC_Page; extern uchar Zigbe_Cnt;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值