组态王与arduino串口通讯的实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
arduino在国内大部分用来给中小学生做创客教育,虽然是创客教育本质上还是属于电气自动化领域,自动化工程师都知道想要做好一个完整的自动控制系统必须要了解传感器在使用环境下的电气参数。arduino没有集成显示功能,传统的做法是用1602显示屏或者点阵数码管来显示传感器读数,但是这样的话有几个问题,一是占用了输入输出点(IO端口),二是没有数据保存功能并且也不够直观。针对这两个问题linkboy的开发者王强老师已经想到在软件中集成波形图功能,但是功能还不够完善。我查找了互联网关于arduino数据观察的资料发现多数使用者都是自己用通用编程软件(VB\VC\C#\DELPHI等)自己开发的上位机软件,开发难度大要求之高已经不是业余爱好者能轻易设计出来,唯一能集成了arduino的只有S4A和LABVIEW的arduino库,但是这两款软件S4A太过于简单更倾向于scratch而LABVIEW软件太过庞大只是用来和arduino通讯就没有意义。所以我创新使用了工业控制系统中常见的组态软件组态王。如同先前所述组态王使用简单功能强大自身集成了大量的设备驱动不需要使用者开发困难的通讯程序并且软件也很小。
(3)组态王的设置、界面以及脚本
创建项目的步骤:
打开组态王
新建工程
新建完成后出现Baidu Nhomakorabea建的那个工程,双击打开
进入工程开发界面
注意下图标识部分
1)设置串口,我在实验时用的是COM1口,请查找自己arduino在电脑上的串口号,找到串口号后单击COM1或者COM2选择通讯协议,这里非常重要,一定要选智能模块-北京亚控-串口数据发送-串口(如果选择单片机-通用单片机ASCII-串口不保证通讯成功)。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash,Processing, MaxMSP)来实现。
4、组态王与arduino通讯具体实现过程
(1)设计准备
硬件:arduino pro mini
开发软件:linkboy 3.0
上位机软件:组态王 6.55
(2)arduino程序linkboy版
图中硬件串口接收数据段的程序是接受数据控制arduino主板上的小灯,接受的数据类型是字符串,内容是1时灯亮如果是其他数字灯灭。最后发送完清空字符串。
图中的灯按键用来控制arduino主板上的LED灯,内部有两个事件组成,一个是按键按下,还有一个是按键松开,分别对应发送字符串"1"和字符串"0",因为前面linkboy软件的程序中写到如果字符串内容等于"1"控制器指示灯点亮,否则控制器指示灯熄灭。
3、组态王与arduino通讯的意义
arduino可以外接各种传感器来做检测或者外接电机、灯光或者电磁阀来做各种控制。arduino最大的优点是价格便宜,电路连接简单相对51单片机来说不需要去设计电源电路和通讯电路并且编程软件相对容易掌握,而且在国内现在出现了很多图形化的模仿scratch的图形化编程软件,其中最优秀的是中科院计算技术研究所王强老师开发的linkboy,以及北师大创客学院傅骞团队开发的米思齐。
IO字符串变量“b”是发送变量,发送的是arduino端接收的数据,连接设备与数据类型和刚才创建接受变量是一样的,但是寄存器一定要选WDATA(写数据),读写属性也应该设置为只写。
最后我们再创建一个内部整数变量,这个变量的作用是把接受到的字符串数据转换成原本的数据,也就是说刚才用linkboy做的程序中是把一个整数1024加在字符串中发送出来的,而PC端接受到这个字符串必须要把它还原成整数。
IO字符串变量“a”是接受变量,接受的是arduino端发送的数据,连接设备就选刚才创建的新IO设备,寄存器一定要选RDATA(读数据),数据类型也只能选string,读写属性设置为只读,采集频率应当和arduino端的程序延时是一致的,刚才用linkboy做程序时发送数据为了防止串口资源全部被占用,所以我们设置了0.5秒的延时,所以这里设置500ms。
组态王与arduino的通讯控制设计
作者: 霍澍
1、组态王。。。。。。。。。。。。。。。。。。。。3
2、arduino。。。。。。。。。。。。。。。。。。。3
3、组态王与arduino通讯的意义。。。。。。。。。。4
4、组态王与arduino通讯具体实现过程。。。。。。。5
1、组态王
组态王,即组态王开发监控系统软件,是新型的工业自动控制系统,它以标准的工业计算机软、硬件平台构成的集成系统。它具有适应性强、开放性好、易于扩展、经济、开发周期短等优点。尤其考虑三方面问题:画面、数据、动画。通过对监控系统要求及实现功能的分析,采用组态王对监控系统进行设计。组态软件也为试验者提供了可视化监控画面,有利于试验者实时现场监控。而且,它能充分利用Windows的图形编辑功能,方便地构成监控画面,并以动画方式显示控制设备的状态,具有报警窗口、实时趋势曲线等,可便利的生成各种报表。它还具有丰富的设备驱动程序和灵活的组态方式、数据链接功能。
图中控制器反复执行的是串口发送数据段程序,为了防止串口同时收发有冲突我做了一个判断在串口有数据时不发送数据,其实linkboy软件的开发者应该考虑到了这种有冲突的事件,只是我自己再做一次。然后发送的也是字符串1024,在字符串后面必须要加换行符或者回车符,否则一连串的数字对于组态王来说是无法准确分辨的。然后清空字符串延时0.5秒再发送,也就是说我们把传感器读数加在字符串中就能够把传感器的读数发送出来。
3)点击左侧的画面,双击新建可以创建操作画面
输入画面名称,点击命令语言,在这里可以输入这个画面下的脚本程序命令,因为这个程序的数据都在这一个画面中,所以脚本程序可以在这里写入。这一段脚本的意思就是把输入的IO字符串变量“a”转换成内存整数变量“a1”,组态王脚本语言的编写遵循C语言的基本规范,一段语句结束了需要加上英文输入法下的;然后把脚本程序的执行时间也改为500ms尽量和前面一致。
2、arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。它主要包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。
最后就是画面的制作,我们平时使用的电脑软件画面是否精美,功能按键是否很容易找到,这些全都体现在画面的制作上。好的画面让使用的人看了很舒服长时间使用也不会有不适应的感觉,而糟糕的画面让使用的人却很反感就算有很好的创意也不能体现出来。
以下的画面中原始的字符串下面的四个#号里面存放的是IO字符串输出,变换后的整数下面的四个#号里面存放的是内存整数。趋势图是为了更好的观察内存整数的变化趋势。
选好通讯协议后下一步默认,再下一步就是选择电脑上与arduino连接的串口
然后继续下一步默认设置一直到完成
这里还有一个注意点是串口的设置尽量和arduino那端一致,尤其是波特率
2)设置变量,单击数据词典进入变量编辑窗口,双击新建可以创建新变量。变量分两种,一种是IO变量是用来和外部数据交换的,我们控制linkboy的信号和接受linkboy的数据都是在这种变量中传输的,也就是数据的通道。另一种是内部变量,用来在组态王内部做数据运算和实现脚本程序功能的变量。我们先新建两个IO变量,一个用来发送,一个用来接收。
相关文档
最新文档