文档介绍:精品范文模板 可修改删除
免责声明:图文来源于网络搜集,版权归原作者所以
若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
撰写人:___________日 期:___________
式分为LCR(传送数据为ACSII时)校验或CRC(传送数据为二进制时)校验,这里采用CRC校验方式。信息传输为异步方式,并以字节为单位。主从站之间通讯的字格式如下:
精品范文模板 可修改删除
免责声明:图文来源于网络搜集,版权归原作者所以
若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
字格式(串行数据) 10位二进制
起始位 1位
数据位 8位
奇偶校验位 无
停止位 1位
Modbus协议可支持ASCII码或二进制格式的数据传输。ACSII码方式下每一个字节数据分两个字节传送,二进制方式下用一个字节传送,为了减少数据传输量,一般选二进制数据方式。各个区允许发送的字节均为16进制的0~9,A~F。二进制信息帧标准结构为:
初始结构 ≥4字节的时间
地址码 1字节
功能码 1字节
数据区 N字节
错误校验 16位CRC码
结束结构 ≥4字节的时间
二进制模式中,,依据使用的波特率,很容易计算这个静止时间。发送完最后一个字符后,,然后才能发送一个新的信息。网络上的设备连续监测网络上的信息,包括静止时间。
四、通信程序的开发
精品范文模板 可修改删除
免责声明:图文来源于网络搜集,版权归原作者所以
若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
MT6070iH触摸屏只支持Bit和Word地址类型,而实际的单片机或其它控制器还有Byte、Double Word等表示方法,因此在进行通信时,需要把单片机和触摸屏的数据进行变换。触摸屏画面元件读取地址的设备类型有LW、0x、1x、3x、4x、RWI、RW等选项。其中,LW表示该元件读取的是触摸屏内部的地址,如其它元件的地址;0x表示读取的是控制器的输出信号;1x表示读取的控制器的输入信号;3x和4x指控制器的寄存器地址类型,其中4x是可读可写的,3x是只读的;RWI、RW都是触摸屏的内部地址,起辅助作用。这里仅以读写LW的0地址的数据为例说明读写过程。
MT6070iH触摸屏与单片机以Modbus协议通信,用到的Modbus功能码如下:
功能码 名称 作用 01 读取线圈状态 取得一组逻辑线圈的当前状态(ON/OFF) 02 读取输入状态 取得一组开关输入的当前状态(ON/OFF) 03 读取保持寄存器 在一个或多个保持寄存器中取得当前的二进制值 04 读取输入寄存器 在一个或多个输入寄存器中取得当前的二进制值 05 强置单线圈 强置一个逻辑线圈的通断状态 06 预置单寄存器 把具体二进值装入一个保持寄存器 1. 串口程序的初始化
使用定时器1作为波特率发生器,对串口的初始化程序如下:
void Initial(void)
{
SCON=0x50; //串口方式1,允许接收
精品范文模板 可修改删除
免责声明:图文来源于网络搜集,版权归原作者所以
若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。
TMOD=0x20; //定时器1方式2
TL1=0xFd; //波特率设为9600
TH1=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; //要写入数据低位