您的位置:控制工程论坛网论坛 » 人机界面 » 单片机与人机界面HMI通信组网实例分享,顶!!!

wqlcd911

wqlcd911   |   当前状态:离线

总积分:0  2024年可用积分:0

注册时间: 0001-01-01

最后登录时间: 0001-01-01

空间 发短消息加为好友

单片机与人机界面HMI通信组网实例分享,顶!!!

wqlcd911  发表于 2011/8/11 16:44:02      1555 查看 1 回复  [上一主题]  [下一主题]

手机阅读

单片机与触摸屏通讯有两个方案:一是用modbus—rtu协议,二是自由通讯协议;
本实例用广州市微嵌计算机科技有限公司(单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技http://www.wqlcd.com)的人机界面作为参考,因为公司提供一系列的技术支持和公布单片机源代码,开发工程方便有效。
单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技

 方案比较:
方案一  modbus—rtu协议:
     优点:工业标准通讯协议,具有通用性,,传输数据量大
     缺点:需要时间去了解协议的格式和以及按照规定编写通讯程序(我们提供MODBUS-RTU源代码,客户直接移植就可以,不必费心)
方案二   自由协议:
     优点:数据格式客户自己定义,灵活多变,定制性强,可以模拟任何已知报文的通讯协议
     缺点:传输数据量不大,通用性不强,移植不方便
客户可以根据以上两种通讯协议的优缺点来选择理想的方案;
实现方法:首先下载公司的人机界面组态软件,下载地址是:

单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技http://www.wqlcd.com/new/league.asp?keyno=34  组态软件WQTDesigner
方案一:
1. 工程属性选用MODBUS-RTU协议;
2. 先了解MODBUS-RTU协议,基本的01 03 05 06 16 的功能码需要了解,其他可以不去深究;提供相关的资料
3. 使用我们提供的MODBUS-RTU协议(C语言)开发源代码,把主要的01 03 05 06 16 函数移植到单片机通讯上,大大节省了开发时间;
单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技

 方案二:
1. 工程属性选用FreeProtocol协议;
2.

单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技

 3. 打开控制令编辑器(设定—>宏指令—>宏指令编辑器)或者直接按F8;
4. 新增宏指令,在宏指令里面使用到Output()、Input()、SetWordData()、GetWordData()这四个函数;注:可以参考附一
5. Output()函数,把设定好的字符串发送到相应的串口输出;Input()函数,从设定好的串口读取需要的字符串;
6. 采集显示:
SetWordData()函数,把Input()函数接收回来的数据,发送给HIM用户自定义寄存器里,然后在显示控件里填上已经有数据的HIM寄存器,即可显示单片机采集上来的数据;
7. 改写发送:
在显示控件了把需要改写的数据绑定HIM寄存器,使用GetWordData()获得修改后的数据,通过output()发送把数据发送到单片机;
附录:

单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技
 
单片机与人机界面HMI通信组网实例分享,顶!!! - 广州微嵌计算机科技 - 广州微嵌科技

 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);
技术支持:林工  QQ:800005447   电话:020-32206882

1楼 0 0 回复
  • tlh1212

    tlh1212   |   当前状态:在线

    总积分:637  2024年可用积分:0

    注册时间: 2011-03-19

    最后登录时间: 2012-06-16

    空间 发短消息加为好友

    tlh1212   发表于 2011/8/22 14:28:44

    很不错的一个案例,谢谢分享!~

    2楼 回复本楼

    引用 tlh1212 2011/8/22 14:28:44 发表于2楼的内容

总共 , 当前 /