单片机与工业触摸屏人机界面最简单的连接通讯方法,含资料下载
2011年10月20日 点击:
编辑: wq2011
很多时候,工业控制或者产品设计方面受到PLC这种功能确定,扩展麻烦,成本昂贵等方面的制约因素,需要独立开发一种特殊功能,但是又需要连接触摸屏通讯,工程师在这个方面往往需要花费很大功夫,现在我要帮大家解决的问题就是 单片机与人机界面触摸屏通讯的最简单,最有效的 2种方法,其实就是分为2种通讯协议,即工业标准的 Modbus RTU协议和 工程师自己定义的 自由协议。
此主题相关图片如下,点击图片看大图:
本实例采用广州市微嵌计算机科技有限公司的人机界面作为参考,因为公司提供一系列的技术支持和公布单片机源代码,加上公司的人机界面支持自由协议等等先天优势,开发工程方便有效。
方案比较:
方案一 modbus—rtu协议:
优点:工业标准通讯协议,具有通用性,,传输数据量大
缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(我们提供MODBUS-RTU源代码,客户直接移植就可以,不必费心)
方案二 自由协议:
优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议
缺点:传输数据量不大,通用性不强,移植不方便
工程师可以根据以上两种通讯协议的优缺点来选择理想的方案;
实现方法:首先下载公司的人机界面组态软件方案一:
1. 工程属性选用MODBUS-RTU协议;
2. 先了解MODBUS-RTU协议,基本的01 03 05 06 16 的功能码需要了解,其他可以不去深究;提供相关的资料
3. 使用我们提供的MODBUS-RTU协议(C语言)开发源代码,把主要的01 03 05 06 16 函数移植到单片机通讯上,大大节省了开发时间;
方案二:
1. 工程属性选用FreeProtocol协议;
3. 打开控制令编辑器(设定—>宏指令—>宏指令编辑器)或者直接按F8;
4. 新增宏指令,在宏指令里面使用到Output()、Input()、SetWordData()、GetWordData()这四个函数;注:可以参考附一
5. Output()函数,把设定好的字符串发送到相应的串口输出;Input()函数,从设定好的串口读取需要的字符串;
6. 采集显示:
SetWordData()函数,把Input()函数接收回来的数据,发送给HIM用户自定义寄存器里,然后在显示控件里填上已经有数据的HIM寄存器,即可显示单片机采集上来的数据;
7. 改写发送:
在显示控件了把需要改写的数据绑定HIM寄存器,使用GetWordData()获得修改后的数据,通过output()发送把数据发送到单片机;
Output();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示从通道输出的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Output(channel,pString,count,result);
【举例】
char srt[9];
int result;
Output(1,str[0],9,result);
Input();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示写入通道的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Input(channel,pString,count,result);
【举例】
char srt[9];
int result;
Input(1,str[0],9,result);
GetWordData();
【描述】
函数功能:从通道中读取Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数count表示要读出的字的个数,数据类型为unsigned short。
第五个参数表示命令号,数据类型为unsigned char。
第六个参数pvalue用来保存从系统通道读出的count个字,数据类型为unsigned short *。
【用法】
GetWordData(channel,slaveID,address,count,cmd,pvalue);
【举例】
unsigned short wordData[10];
GetWordData(0, 1,8000, 10, 0,wordData);
从系统通道 8000地址中读取10个数据到wordData
SetWordData();
【描述】
函数功能:从通道中写入一个Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数cmd表示命令号,数据类型为unsigned char。
第五个参数pvalue用来保存写入系统通道的字,数据类型为unsigned short。
【用法】
SetWordData(channel,slaveID,address,cmd,source);
【举例】
unsigned short wordData = 1;
SetWordData(0, 1,1000,0,wordData);
把wordData中的Word数据写到系统通道 1000地址处
此主题相关图片如下,点击图片看大图:
本实例采用广州市微嵌计算机科技有限公司的人机界面作为参考,因为公司提供一系列的技术支持和公布单片机源代码,加上公司的人机界面支持自由协议等等先天优势,开发工程方便有效。
方案比较:
方案一 modbus—rtu协议:
优点:工业标准通讯协议,具有通用性,,传输数据量大
缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(我们提供MODBUS-RTU源代码,客户直接移植就可以,不必费心)
方案二 自由协议:
优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议
缺点:传输数据量不大,通用性不强,移植不方便
工程师可以根据以上两种通讯协议的优缺点来选择理想的方案;
实现方法:首先下载公司的人机界面组态软件方案一:
1. 工程属性选用MODBUS-RTU协议;
2. 先了解MODBUS-RTU协议,基本的01 03 05 06 16 的功能码需要了解,其他可以不去深究;提供相关的资料
3. 使用我们提供的MODBUS-RTU协议(C语言)开发源代码,把主要的01 03 05 06 16 函数移植到单片机通讯上,大大节省了开发时间;
方案二:
1. 工程属性选用FreeProtocol协议;
3. 打开控制令编辑器(设定—>宏指令—>宏指令编辑器)或者直接按F8;
4. 新增宏指令,在宏指令里面使用到Output()、Input()、SetWordData()、GetWordData()这四个函数;注:可以参考附一
5. Output()函数,把设定好的字符串发送到相应的串口输出;Input()函数,从设定好的串口读取需要的字符串;
6. 采集显示:
SetWordData()函数,把Input()函数接收回来的数据,发送给HIM用户自定义寄存器里,然后在显示控件里填上已经有数据的HIM寄存器,即可显示单片机采集上来的数据;
7. 改写发送:
在显示控件了把需要改写的数据绑定HIM寄存器,使用GetWordData()获得修改后的数据,通过output()发送把数据发送到单片机;
Output();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示从通道输出的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Output(channel,pString,count,result);
【举例】
char srt[9];
int result;
Output(1,str[0],9,result);
Input();
【描述】
第一个参数channel表示通道,如果通道为com1,则channel=1;如果通道为com2,则channel=2,数据类型为int。
第二个参数pString表示写入通道的字符串的地址,数据类型为unsigned char *。
第三个参数count表示字符串中的字符个数,数据类型为int。
第四个参数result表示Output函数运行后返回的结果,如果result大于0,则表示读写有效,数据类型为int。
注意:此函数只能用在freeprotocol(自由协议通道)中。
【用法】
Input(channel,pString,count,result);
【举例】
char srt[9];
int result;
Input(1,str[0],9,result);
GetWordData();
【描述】
函数功能:从通道中读取Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数count表示要读出的字的个数,数据类型为unsigned short。
第五个参数表示命令号,数据类型为unsigned char。
第六个参数pvalue用来保存从系统通道读出的count个字,数据类型为unsigned short *。
【用法】
GetWordData(channel,slaveID,address,count,cmd,pvalue);
【举例】
unsigned short wordData[10];
GetWordData(0, 1,8000, 10, 0,wordData);
从系统通道 8000地址中读取10个数据到wordData
SetWordData();
【描述】
函数功能:从通道中写入一个Word数据。
第一个参数channel表示通道,数据类型为unsigned char。
第二个参数slaveID表示从机号,数据类型为unsigned char。
第三个参数address表示系统通道地址,数据类型为unsigned short。
第四个参数cmd表示命令号,数据类型为unsigned char。
第五个参数pvalue用来保存写入系统通道的字,数据类型为unsigned short。
【用法】
SetWordData(channel,slaveID,address,cmd,source);
【举例】
unsigned short wordData = 1;
SetWordData(0, 1,1000,0,wordData);
把wordData中的Word数据写到系统通道 1000地址处
相关文章
- · 歪理邪说话单片机入门 2012-06-28
- · STC单片机程序用什么软件可以读出来 2012-04-05
- · 红外线学习型无线遥控器,可控制8路家用电器,懒人的好帮手,电路图己上传 2013-02-21
- · 89c2051遥控测码程序及原理图 2012-12-21
- · 用STC15F104E制作学习型1路红外遥控开关 2012-03-04
- · MCU解密全攻略 2012-09-03
- · 分享电磁炉单片机HMS87C1202A程序 2012-10-06
- · 三羐仿真编程软件pLC 2012-04-19
- · PL2303在WIN8上的驱动[已更新下载地址] 2012-07-13
- · STC89C516RD+制作多功能闹钟遥控测码 2012-06-04