《[管理信息化智能制造]用户手册纳英特机器人图形化编程系统.pdf》由会员分享,可在线阅读,更多相关《[管理信息化智能制造]用户手册纳英特机器人图形化编程系统.pdf(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 管理信息化智能制造管理信息化智能制造 用用户手册纳英特机器人图形户手册纳英特机器人图形化编程系统化编程系统目录1、概述 41.1.1.1.流程图流程图 51.2.1.2.积木式编程积木式编程 51.3.1.3.系统特点系统特点 52.2.系统的安装系统的安装 72.1.2.1.系统要求系统要求 72.2.2.2.安装安装 72.3.2.3.运行运行 72.4.2.4.如何下载操作系统如何下载操作系统 72.52.5如何给机器人赋予智力如何给机器人赋予智力(下载你编写的程序下载你编写的程序)93.3.软件界面软件界面 113.1.3.1.菜单栏菜单栏 113.2.3.2.工具栏工具栏 113.
2、3.3.3.模块库区模块库区 113.4.3.4.子程序库子程序库 123.5.3.5.资源中心资源中心 133.6.3.6.流程图程序生成区流程图程序生成区 133.7.C3.7.C 代码显示区代码显示区 133.8.3.8.代码编辑区代码编辑区 144.4.快速入门快速入门 164.1.4.1.走四边形走四边形 164.1.1.4.1.1.编程思路编程思路 164.1.2.4.1.2.程序编写程序编写 164.2.4.2.走迷宫走迷宫 194.2.1.4.2.1.编程思路编程思路 194.2.2.4.2.2.程序编写程序编写 194.3.4.3.程序的下载及运行程序的下载及运行 204.4
3、.4.4.调试程序调试程序 205.5.模块的基本操作模块的基本操作 215.1.5.1.添加模块添加模块 215.2.5.2.删除模块删除模块 215.3.5.3.设置参数设置参数 215.4.5.4.模块的拖放模块的拖放 216.6.模块说明模块说明 226.1.6.1.执行器模块库执行器模块库 226.1.1.6.1.1.移动模块移动模块 226.1.2.6.1.2.延时模块延时模块 226.1.3.6.1.3.停止模块停止模块 226.1.4.6.1.4.启动电机模块启动电机模块 236.1.5.6.1.5.显示模块显示模块 236.1.6.6.1.6.音乐模块音乐模块 246.1.7
4、.6.1.7.伺服电机模块伺服电机模块 246.2.6.2.控制模块库控制模块库 286.2.1.6.2.1.多次循环模块多次循环模块 286.2.2.6.2.2.条件循环模块条件循环模块 296.2.3.6.2.3.中断循环模块中断循环模块 296.2.4.6.2.4.条件判断模块条件判断模块 306.3.6.3.程序模块库程序模块库 346.3.1.6.3.1.调用系统函数调用系统函数 346.3.2.6.3.2.表达式定义模块表达式定义模块 346.3.3.6.3.3.进程模块进程模块 356.3.4.6.3.4.调用子程序调用子程序 386.3.5.6.3.5.子程序返回子程序返回 3
5、97.7.常见问题及解决办法常见问题及解决办法 407.1.7.1.程序启动失败程序启动失败 407.2.7.2.流程图显示不完全流程图显示不完全 407.3.7.3.无法将程序下载到机器人中无法将程序下载到机器人中408.LOGO8.LOGO 子系统子系统 418.1.8.1.系统特点系统特点 418.2.LOGO8.2.LOGO 子系统语言编程规范子系统语言编程规范418.3.LOGO8.3.LOGO 的关键字的关键字 418.4.LOGO8.4.LOGO 子系统的自定义符号子系统的自定义符号428.5.LOGO8.5.LOGO 子系统的函数子系统的函数(包括自定义函数包括自定义函数)42
6、9.IC9.IC 编程基础知识编程基础知识 439.1.9.1.基本数据类型基本数据类型 439.2.9.2.各数据类型的取值范围各数据类型的取值范围459.3.9.3.数组数据类型数组数据类型 459.4.9.4.指针指针 469.5.9.5.结构结构 489.6.9.6.语句与表达式语句与表达式 499.7.9.7.运算优先级和次序运算优先级和次序 519.8.9.8.控制语句控制语句 519.9.9.9.屏幕显示屏幕显示 529.10.9.10.格式化命令汇总格式化命令汇总 549.11.9.11.预处理预处理 549.12.9.12.库函数库函数 5610.10.通用库函数使用参考通用
7、库函数使用参考 5910.1.DIO10.1.DIO 类类 5910.2.10.2.数学类数学类 5910.3.10.3.电机类电机类 6010.4.10.4.显示类显示类 6010.5.10.5.进程类进程类 6010.6.10.6.传感器类传感器类 6110.7.10.7.音频类音频类 6210.8.10.8.定时类定时类 63纳英特机器人图形化编程系统纳英特机器人图形化编程系统(V1.0)(V1.0)1 1、概述、概述纳英特机器人图形化系统是一个为用户提供全面的机器人教育与竞赛解决方案的综合系统。系统集入门与高级应用于一体,实时提供最新的机器人解决方案与该领域的最新信息,丰富用户的机器人
8、知识储备,为钻研机器人技术、开展机器人教学、参加机器人竞赛提供有力的支持。适合不同年龄段用户的软件编译环境。简便的积木式编程和强大的交互式C 语言平台的机器人开发环境共同完成对机器人程序的编辑、编译和调试。不但适合中、小学校,同样也适合大学。C 代码显示区菜单栏1.1.1.1.流程图流程图流程图是用一些图框表示各种操作。用图形表示算法,直观形象,易于理解。流程图能够比较清楚的显示出各个框之间的逻辑关系,因此它是表示算法的较好工具。下面就通过一个具体的例子来认识流程图。“将 50 名学生中成绩在 80 分以上者的学号和成绩打印出来”用流程图该怎样来表示呢?模块库区图 1-1 流程图从图 1-1
9、中,我们也可以看出,一个流程图包括以下几个部分:资源中心表示相应操作的框;带箭头的流程线;框内外必要的文字说明。“表示相应操作的框”有以下三种,流程图由以下几种图形组成,就能将编程的思想很好的体现出来。1.2.1.2.积木式编程积木式编程积木式编程与常规的计算机编程有所不同,对于编程,处于低年级的同学对先作什么,后作什么已经有了初步的想法,但是他们对复杂的 C 代码没有很大的兴趣,纳英特机器人积木式编程平台正是为他们设计的,使用这个软件使得学生们不用关心语言实现的细节,同时也避免了编程中经常会出现的语法错误。纳英特机器人积木式编程平台采用的就是流程图模型。每一个积木模块都可以完成一定的功能,只
10、要按程序编写的逻辑连接这些模块就可以很快的完成一个程序的编写。1.3.1.3.系统特点系统特点-积木式编程积木式编程完全的积木式编程方法,简单直观,用鼠标就可以进行绝大部分操作。机器人控制用程序流程图实现。支持丰富的操作。-积木模块积木模块-包含绝大多数实用的纳英特机器人系统模块,特别是支持伺服电机的操作。支持多重循环嵌套,多重判断嵌套,支持多条件的生成。真正支持多进程处理。-C-C 程序代码程序代码-从流程图自动生成 C 程序代码C 程序代码符合标准 C 语言语法标准支持语法高亮可以直接保存 C 程序文件-多语言编程多语言编程-支持 C、LOGO、BASIC、ASM 等语言编程代码编辑系统提
11、示丰富,上手简单-集成高效编译下载系统集成高效编译下载系统-支持丰富的数据类型编译速度快-操作系统操作系统 NSTROBOT-NSTROBOT-实时多任务机器人操作系统支持伪代码,可跨硬件平台运行高性能虚拟机设计运行错误检测2.2.系统的安装系统的安装2.1.2.1.系统要求系统要求操作系统操作系统:纳英特机器人积木式编程平台可运行在中文Windows98XP 平台。硬件要求硬件要求:任何一台可以运行 Windows98XP 的个人电脑,有一个空余的串口,30M 的硬盘空间,以及配套的纳英特机器人。2.2.2.2.安装安装找到相应的自安装软件(在纳英特机器人配套光盘或从网站下载),双击可开始安
12、装,按安装向导可完成安装。(安装系统时需要系统管理员权限)2.3.2.3.运行运行安装完成后,在桌面上将出现纳英特机器人积木式编程平台图标,双击程序;也可从开始中的程序菜单中打开。(运行系统时需要系统管理员权限)可运行2.4.2.4.如何下载操作系统如何下载操作系统第一步:启动机器人操作平台第一步:启动机器人操作平台(NSTRobot)(NSTRobot)如图操作:第二步第二步:点击编译下载。点击编译下载。如图操作:第三步第三步:完成下载。完成下载。如图所示第一步:点击此处2.52.5 如何给机器人赋予智力如何给机器人赋予智力(下载你编写的程序下载你编写的程序)第一步第一步:点击编译下载点击编
13、译下载如图所示:第三步:点击下载操作系统第二步:下载(按图示操作)如图所示:第三步:下载完成第二步:连接通讯线选择 com 口第四步:如图把机器人三态开关拨在右侧3.3.软件界面软件界面3.1.3.1.菜单栏菜单栏文视件:新建、打开、保存等文档的基本的操作;图:隐藏/显示工具栏、状态栏、C 语言代码、消息栏,流程图放大/缩小等操作;子程序:子程序的建立,保存,调用;系统工具:机器人程序的仿真(正在完善中),编译下载,机器人测试;系统维护:进行系统参数的设定;帮助:打开帮助文件,检测软件更新,关于。3.2.3.2.工具栏工具栏新建文件:建立新的程序流程图文件,C 代码文件,Logo 文件等;打开
14、文件:打开流程图文件,C 代码文件,Logo 文件等;保存文件:保存当前处于编辑状态的文件;代码编辑:图形编程界面与代码编辑界面的变换;放大:放大流程图视图;缩小:缩小流程图视图;编译下载:下载机器人操作系统,下载用户程序;关闭系统:保存并关闭积木式系统;程序选择:进行主程序及其包含的子程序间的切换;消息栏:实时更新最新的信息。3.3.3.3.模块库区模块库区模块区采用树形结构,双击各个模块库名称即可打开所属模块。执行器模块库执行器模块库:包含机器人的各类动作操作。明细如下图:控制模块库控制模块库:包含各种程序流程图的流程图控制模块。明细如下图:程序模块库程序模块库:包含程序进程操作以及子程序
15、的调用模块。明细如下图:3.4.3.4.子程序库子程序库列出当前所有的厂家提供的函数库与用户自定义的函数,供用户随时调用。3.5.3.5.资源中心资源中心实时更新本地资源数据库,保持与服务器上的信息同步。下载完毕3.6.3.6.流程图程序生成区流程图程序生成区流程图显示、编辑界面。通过拖放方式,可以方便的将某个模块拖至流程图区。3.7.3.7.C C 代码显示区代码显示区显示通过流程图自动生成的机器人操作C 源程序,支持语法高亮显示。3.8.3.8.代码编辑区代码编辑区通过工具栏的“代码/图形界面”的转换按钮,可以对当前的文档进行代码编辑。确认消息提示中的“沿用当前程序”,则代码编辑的对象为该
16、流程图的代码。否则,进行新的代码编辑。所以,通常可以用流程图建立一个框架,然后再具体编辑代码,以提高开发速度。4.4.快速入门快速入门4.1.4.1.走四边形走四边形4.1.1.4.1.1.编程思路编程思路而要让机器人完成一个“前进转弯”首先就需要启动电机,使机器人能以一定的速度向前运行一段路程,然后停下,以左轮为中心旋转 90再停下,这样就走完了四边形的一边。机器人走四边形就让机器人完成“前进转弯前进转弯前进转弯前进转弯”,也就是说机器人需要完成四个“前进转弯”。要让机器人走四个边,这里有一个简便的方法,这就是循环,循环重复上述步骤(“前进转弯”)4 次,机器人就能够走完一个四边形了。4.1
17、.2.4.1.2.程序编写程序编写打开纳英特机器人积木式编程平台,新建流程;首先添加循环模块:用鼠标双击模块库区“控制模块库”,从中选择“多次循环模块”,拖放至流程图区。详细操作如下:对准“多次循环模块”按下鼠标左键不放,拖拉至流程图中,待方向线变成红色时,即可送开鼠标。其次添加两个移动模块,(通过后面的参数设置,将两个移动模块分别设置成直行和转弯。)添加操作同添加循环模块操作。模块添加完毕,接下来进行各个模块的参数设置。首先添加循环所需要的循环变量,双击打开函数设置窗口。选择“函数变量”页,单击“增加变量”按钮,在“变量明细”中输入名称,选择数据类型即可。由于用到的循环变量是整数类型,所以选
18、择“int”。单击“确认”保存操作,返回主界面。其次,设置循环参数。双击,打开循环参数设置窗口。选择循环变量,这里选择“i”,选择或者输入循环次数,这里选择4,然后单击“确定”,保存退出。接下来,开始设置移动的动作。双击第一个,打开移动模块的设置窗口。设定以100的功率向前直行。单击“确定”保存退出。双击第二个,打开移动设置窗口。参数的设定如图:最后,设定每个动作的执行时间。在第一个移动模块下面,放置一个延时模块;在第二个移动模块下面也放置一个延时模块。如图:双击延时模块,打开设置窗口,拖动滚动条设定向前直行的动作保持5 秒钟。,单击“确定”保存退出。向左转的动作保持时间同理。4.2.4.2.
19、走迷宫走迷宫迷宫如图所示:要求机器人能顺利的完成如图迷宫的周游任务。4.2.1.4.2.1.编程思路编程思路目前,机器人完成走迷宫的方法有两种:“右手法则”,“左手法则”。“右手法则”:沿着右边墙壁走,如果其右手边无障碍,则向右传;如果前面有障碍就向左转,一直重复这个操作,直至返回终点。“左手法则”:沿着左边的墙壁走,如果其左手边无障碍,则向左传;如果前面有障碍就向右转,直至左手边出现障碍物,一直重复操作,直至返回终点。这里选择左手法则进行举例说明。4.2.2.4.2.2.程序编写程序编写新建一个流程,拖放一个条件循环模块。双击“条件循环模块”进行设置,选中“永远循环”,确定退出。拖放一个条件
20、判断至循环内部,位置如图:程序编写完毕,先保存该文件。4.3.4.3.程序的下载及运行程序的下载及运行将随机配套的数据线一端接计算机上的串行通讯口,一端接纳英特机器人主电路板上的通讯口。连接好后,“编译下载”按软件提示即可下载到机器人。下载完成后可脱机运行。4.4.4.4.调试程序调试程序启动纳英特机器人,检查机器人是否按要求运行,如果与预定的情况不符,就要在原程序基础上调整对应的参数直至符合要求。比如偏转的角度不合要求,就需要对转向时的马达功率、转向时间等参数进行调整,直到符合要求为止。5.5.模块的基本操作模块的基本操作5.1.5.1.添加模块添加模块在模块库区选择模块,按下鼠标,拖放至目
21、的区域,待方向线变红色时,松开鼠标,完成操作。5.2.5.2.删除模块删除模块选择删除目标,单击鼠标右键,选择删除模块,确认即完成操作。如果删除的模块是条件旁断、循环模块,则应至模块起始处删除。在删除此类模块时,将删除该模块所包含的所有的模块。5.3.5.3.设置参数设置参数选择设置对象,双击打开设置窗口,或者通过右键快捷菜单,选择模块属性。5.4.5.4.模块的拖放模块的拖放选择目标模块(可按住”Ctrl”多选),拖放至目的区域即可(既可插入至流程图,也可以放置于空白区域)如果多个模块是非连续的,则无法直接插入至流程图!提示:空白区域的 IF,For,While,连续的两个普通模块间可以插入
22、模块.6.6.模块说明模块说明6.1.6.1.执行器模块库执行器模块库6.1.1.6.1.1.移动模块移动模块该模块主要完成机器人的直行、转向动作。0、1 号电机分别代表机器人的左、右电机。通过功率大小滚动条的拖拉或者功率数值输入框的输入可以设定电机的运行功率。“”表示电机反转。功率绝对数值越大,电机转速越快。6.1.2.6.1.2.延时模块延时模块该模块主要实现延续机器人的上一个动作状态。主要和移动模块或者扩展电机模块相搭配,实现机器人移动或者某个动作的延续性。如:让机器人以 100的功率向前直行5 秒钟,延时模块可如下设置:相应的程序代码为:6.1.3.6.1.3.停止模块停止模块该模块主
23、要实现停止电机运转。可实现所有电机停止运转,也可以设定停止一个或几个电机。停止所有电机,则给“停止所有电机”打上“”。停止一个或几个电机,去掉“停止所有电机”的“”,选择停止对象。6.1.4.6.1.4.启动电机模块启动电机模块该模块主要实现扩展电机的使用。使用时,可打开任意一个电机。操作同移动模块。6.1.5.6.1.5.显示模块显示模块该模块主要实现信息的打印输出。支持多参数输出。使用时,在显示信息输入框中输入要显示的内容,如:“helloworld!”。当需要显示端口值或者某个变量的值时,单击“引用”按钮打开“引用”窗口。如:要显示模拟端口5 的数值,则在工具栏中点击“模拟输入”,选择第
24、“5”端口,确定退出。显示多个参数,则多次点击“引用”,以增加显示参数。当需要手动编辑显示内容时,可以选择。6.1.6.6.1.6.音乐模块音乐模块该模块主要用于生成音乐。依据乐理,选择音符与节拍,单击“”按钮,增加至音符列表。其中,时间框显示的时间与节拍是相对应的。用户可以自行输入发音延续时间进行自定义。如果您的计算机有内置扬声器,还可以通过单击“试听”按钮视听当前的音乐。6.1.7.6.1.7.伺服电机模块伺服电机模块该模块包含八个子模块,主要完成伺服电机的初始化、定位与关闭。“开始伺服”模块用于所有伺服电机的初始化。该模块不需要设定任何参数。“关闭伺服”模块用于关闭所有伺服电机。该模块同
25、样不需要设定任何参数。“伺服电机 0”至“伺服电机5”主要用于05 号伺服电机的定位。在实际应用过程中,要对伺服电机进行操作,必须先初始化伺服电机。将某伺服电机进行连续的定位,可以使用 For循环来控制。如:只完成伺服电机 0 定位到 500 的位置这一目的可如下操作:定位参数可以用双击相应的伺服电机模块进行设置。例 2:让控制机器人左右手的伺服电机0,伺服电机 1 从 0 运动至 1000 的位置,多次循环的设置如下:循环变量为“i”,起始值为 0,循环次数 1000,步进量 100。如图:伺服电机 0 模块参数设置:打开设置窗口,点击“引用”按钮,选择“全局变量”,在下拉列表中选择刚才声明
26、的变量“i”。伺服电机 1 设置同理。6.2.6.2.控制模块库控制模块库该库主要实现流程图的流程控制。主要有:多次循环模块,条件循环模块,中断循环模块,条件判断模块。6.2.1.6.2.1.多次循环模块多次循环模块该模块将直行循环体内的操作x 次,x 的大小由用户自行设定,除非用户中断循环。参数设置界面如图:选中“高级设置”可以自定义一些高级选项。如下图:循环变量的设置:主函数双击;子程序双击(注:这里是“函数func”,函数名不同,则显示不同)打开函数属性管理窗口。选取目标函数,切换至“函数变量”页面,单击工具栏中的“增加变量”,输入变量名称、选择数据类型即可。默认的变量名称为“unkno
27、wn”,数据类型为“int”。起始值:循环开始时赋予循环变量的数值,通常为0。通过“引用”框的选择,可以将某个变量作为起始值。循环次数:循环结束值。通过“引用”框的选择,可以将某个变量作为循环次数。步进量:每次循环,循环变量的变化值,通常为1。其他步进量主要用于伺服电机的控制。6.2.2.6.2.2.条件循环模块条件循环模块该模块主要实现永远循环,以及符合某个条件才执行循环的功能。永远循环:为条件循环的默认循环。打开设置窗口,直接确定退出即可。条件循环:不选择“永远循环”,出现条件的设置窗口。同条件判断模块的条件设置。6.2.3.6.2.3.中断循环模块中断循环模块主要用于循环的退出。如果有多
28、重循环嵌套,则只是退出当前循环。如:6.2.4.6.2.4.条件判断模块条件判断模块该模块完成 if.else 功能。既如果条件成立执行某个操作,否则(不成立)执行另一个操作。如:条件如果成立,则“移动”,否则“停止”。条件的设置:双击打开设置窗口。条件分为“旁断类条件”,“表达式条件”,“常用操作”三大类。一个条件可以包含这三类条件。分别设置条件,点击“增加条件”,可以实现多条件的判断。判断类条件:实现某个变量大小的旁断或者某个变量是什么的旁断。如:设置条件旁断“3 号模拟口的模拟量是否大于127”,可如下进行:在“变量”下拉框中选择“模拟输入”,在“端口”下拉框中选择端口“3”然后选择判断
29、符“大于”,输入目标数值大小,这里是 127。单击“增加条件”按钮,完成条件添加。“确定”退出。表达式条件:实现运算式的大小判断。如:设置条件判断“模拟3 号口与模拟 4 号口的差值是否大于 10”,设置如下:单击“引用”打开引用变量窗口。这里选择“模拟输入”,端口“3”。选择预算符“减去”模拟 4 号口操作同模拟 3 号口。单击“增加表达式”按钮,系统将打开引用界面,这里选择“常量”页,“比较”输入框选择“大于”,数值为“3”:最后增加条件完成条件设置。“确定”退出。常用操作主要实现“START”,“STOP”按钮的操作判断。条件间的逻辑关系如果已经设置一个条件,再增加一个条件,会自动弹出条
30、件间关系的设置窗口。依据需要,选择相应的逻辑关系既可。“和”关系:“条件 1”和“条件 2”,“和”关系表示两个条件都成立,则条件成立。“或者”关系:“条件 1”或者“条件 2”,表示两个条件中有一个成立,则条件成立。“非”关系:“条件 1”非“条件 2”,表示条件 1 成立条件 2 不成立,则条件成立。6.3.6.3.程序模块库程序模块库该库包含的模块主要完成系统函数的调用,表达式的赋值,进程开启关闭以及子程序调用等高级功能。6.3.1.6.3.1.调用系统函数调用系统函数系统内部集成了丰富的函数,很多函数并没有定义到模块中去。通过此模块可以调用这些函数,如下图:其中:无返回值类函数起到“过
31、程”的作用,只完成任务,不返回任何值。返回值为数值类型的函数将返回一个结果。6.3.2.6.3.2.表达式定义模块表达式定义模块主要实现变量的赋值(初始化)。一个表达式定义模块可以包含多个表达式定义。参数的设置首先需要添加变量。单击“引用”打开变量引用窗口。“增加”可以增加一个表达式定义。如:往模块里增加“iananlog(3)”,操作如下:如果还未设置变量则先打开函数属性定义变量。在下拉框中选择对应的变量“i”单击“引用”打开引用窗口。选择“模拟输入”,端口选择“3”,确定退出。单击“增加”完成表达式的添加。6.3.3.6.3.3.进程模块进程模块6.3.3.1.6.3.3.1.关于进程关于
32、进程所谓的进程就是一个并发执行的子程序,在机器人平台中来讲,开启一个进程意味着系统会给这个进程分配 50ms 的执行时间.进程的实体就是某个函数.如下面这段程序:()voidmain()start_process(music();while(1)tone(1000.0,1.0);voidmusic()while(1)beep();再看这个:(由于 music 里面是个死循环,程序将不会再往下,我们只能听到连续不断的 beep声,tone(1000.0,1.0)将不会发生.)voidmain()music();while(1)tone(1000.0,1.0);voidmusic()while(1
33、)beep();进程函数的定义和普通函数的定义没有任何区别(函数管理)。一个程序可以包含多个进程,这些进程将同时被执行。进程的操作依靠进程标志进行。进程标志实际是一个int 型变量,同建立普通变量没有区别。下面用具体的例子说明进程的开启与关闭。准备工作:声明进程标志变量名为ret,数据类型为 int。增加函数 func。6.3.3.2.6.3.3.2.开启进程模块开启进程模块选择一个函数,单击“增加”,将此函数增加为进程。如果误操作,可以“删除”。如果该函数有参数,则自动在“参数”一栏中列出,用户可单击“修改”进行函数参数的设置。如果以后不对该进程进行操作,可以忽略进程标志的设置。如果以后需要
34、关闭该进程,则必须给该线程设置一个进程标志返回值,这里我们选择ret。确定退出。6.3.3.3.6.3.3.3.关闭进程模块关闭进程模块选择当前关闭目标进程,单击“”按钮,完成退出。注意:一个开启线程模块可以拥有多个线程的开启,一个关闭线程模块也可以拥有多个线程的关闭。6.3.4.6.3.4.调用子程序调用子程序子程序的调用操作类似与线程开启。下面以实际例子进行说明。准备工作:增加函数 migong。选择 migong 函数,增加为“子程序条用模块”拥有的函数,如果该函数有参数,通过“修改”按钮可以修改参数的值。如果该函数有返回值,而且需要使用这个返回值,则可以通过“选择返回值变量”下拉框给该
35、函数设定。6.3.5.6.3.5.子程序返回子程序返回该模块主要用于子程序的返回值定义。如:定义 fire 函数,fire 函数的返回值定义为 int 类型。1 表示灭火成功,0 表示灭火失败。7.7.常见问题及解决办法常见问题及解决办法7.1.7.1.程序启动失败程序启动失败如果您的系统是 win98,请安装随机光盘里的 win98 数据库驱动升级文件.如果您的系统是 win98 并且已经安装了数据库驱动升级文件、win2000,winXP,重新启动后还是出现此类问题,请与soft联系。7.2.7.2.流程图显示不完全流程图显示不完全在视图菜单中选择“自动适应窗口”点击“程序选择”下拉框即可
36、!7.3.7.3.无法将程序下载到机器人中无法将程序下载到机器人中(1)、检查当前选择的串口是否为机器人实际连接的串口。请“取消”下载,然后“刷新串口”,选择串口,重新下载。(2)、检查是否已经打开机器人的电源。下载操作系统,将电源开关拨往左边的“系统”档位;下载用户程序,将电源开关拨往右边的“下载程序“档位。(3)、如果提示框中出现编译错误的提示,则请依据提示,修改源程序的错误。8.8.LOGOLOGO 子系统子系统8.1.8.1.系统特点系统特点支持单个电机速度的设置及停止支持 4 个电机支持模拟及数字传感器用户通过自定义,可支持传感器的无限扩展支持多进程真正的遵循 LOGO语言规范.支持
37、函数格式、使用方法的动态提示,方便编程.生成相应的 C 代码,无 C 经验的 LOGO用户可提高 C 的入门速度.支持有限的换行,提高代码可读性.支持代码注释8.2.8.2.LOGOLOGO 子系统语言编程规范子系统语言编程规范所有关键字要求大写同 一 个 语 句 须 在 同 一 行,中 间 不 得 换 行;不 同 的 语 句 可 以 在 同 一行.FOR,REPEAT,WHILE的循环体(“”“”)内支持换行.被调用的函数必须位于调用者之前.例:TOABCENDTOMAINABCEND变量在声明时前面需加引号(“),使用时,前面需加”:”(不包括双引号).如:MAKE“VAR1IF:VAR=
38、1THENMAKE“VAR:VAR+1本系统的主函数名必须为MAIN.注释符号为“/”,/注释内容8.3.8.3.LOGOLOGO 的关键字的关键字目前,图形化编程系统的 Logo 子系统支持的关键字如下:(附其格式)关键字TOENDMAKE意义声明一个函数/过程函数/过程结束变量进行赋值,如果变量还未声明,则首先声明变量IFTHENELSEWHILEFOR条件语句条件循环多次循环IF(条件表达式)THENELSEWHILE条件表达式循环体FOR“变量名初始值结束值循环体REPEAT次数循环体格式TO 函数名MAKE“变量名表达式REPEAT多次循环BREAK中断循环8.4.8.4.LOGOL
39、OGO 子系统的自定义符号子系统的自定义符号为了补充 Logo 语言的先天不足,增加了一些自定义符号,A*系列用于模拟传感器“*”为对应的传感器端口例子:D*系列用于数字传感器“*”为对应的传感器端口IF:D3=0100THENRT90上述语句的指的是:如果 7 号数字端口的传感器值为0 则向右转 90 度.8.5.8.5.LOGOLOGO 子系统的函数子系统的函数(包括自定义函数包括自定义函数)目前,图形化编程系统的 Logo 子系统支持的函数如下:(附其格式)函数FDBKLTRTTONE自定义意义前进若干个单位后退若干个单位左传若干角度右转若干角度以某种频率发音若干时间格式FDint1BK
40、int1LTint1RTint1TONE频 率(float)时 间(float)WAITLAUNCHHALTM0M1M2M3STOPOFF延时若干秒开启进程中止进程(目前不支持)电机 0 以一定的功率运行电机 1 以一定的功率运行电机 2 以一定的功率运行电机 3 以一定的功率运行停止所有电机停止某个电机WAITfloat1LANUCH 函数名HALT函数名MOint1(功率)M1int1M2int1M3int1STOPOFFint1PR显示信息PR:变量名9.9.ICIC 编程基础知识编程基础知识从本章开始,我们要逐步迈进C 语言的世界,在编写功能更强大的程序之前,需要了解下面的知识。它们不
41、是每个程序必需的,但对于编写程序是非常有帮助的。9.1.9.1.基本数据类型基本数据类型在 C 语言中变量和常量是基本的数据对象。编写程序总是要与各种数据打交道,如马达的速度、等待的时间等,理解C 语言是如何来处理各种数据,对编程和理解程序是非常有宜的。9.1.1.9.1.1.变量变量在程序中用来代表数据的字符。如:可以在程序中用v 代表马达的速度,看下面的例子:voidmain()intv;v=80;motor(0,v);motor(1,v);试试看,将这段程序在 IC 中编写好,下载到机器人里,观看其动作如何?机器人走了直线。程序中没有使用“motor(0,80);”这样的语句,它怎么会直
42、线呢?这就是变量起的作用。试着将程序中的 80,改成其它数值(马达功率适用的数值),看看机器人马达的功率是否与修改后的数值吻合。更改变量的值后,后面使用变量时它代表的值也会改变成此数值,除非再次改变它。变量在程序中可以替代一些数值,这段程序中使用变量 v 代替马达的功率80 这个数值。程序中只出现了一次 80,而两个马达却都可以转动,说明变量可以重复使用。拼写变量拼写变量可由字母“A-Z、a-z”、数字“0-9”和下划线“_”组成,但不能以数字开头,且区分大小写。C 语言的关键字,如 if,while 等,不能用于变量名。全局变量名和函数名不能相同。此外,若局部变量名与全局变量名或函数名相同,
43、则在该局部变量作用范围内不能使用同名的全局变量或函数。定义变量定义变量在 C 语言中,可以在程序的最顶层(在任何一对花括号之外)或块(用“”括起的函数代码)的起始处定义变量。通常,变量以如下形式定义:;inti;或=;intj=0;在机器人操作平台中,可为整型(int),长整型(long),浮点型(float),字符型(char)或结构(struct),它决定所定义变量的初始类型。这是定义变量的一般形式。在定义指针和数组时,形式会有所改变,这将在后面说明。局部和全局作用范围局部和全局作用范围如果变量在函数内定义或作为函数的参数,它的作用范围是局部的,即该变量只在函数定义范围内有效。如果一个变量
44、在函数外定义,则它是一全局变量。该定义对所有函数有效,包括没有定义该变量的文件中的其它函数(即其它文件中的函数)。变量初始化变量初始化变量可在定义时初始化。若不给出初始值,变量初始化为零。所有的全局变量必须初始化为常量。局部变量可被初始化为任意表达式的值,包括任意的全局变量,函数调用,函数参数,或已初始化的局部变量。此处给出初始化的简单例子:inti=50;/定义 i 为整型全局变量,初始值为50longj=100L;/定义 j 为长整型全局变量,初始值为100intfoo()intx;/定义 x 为整型局部变量,初始值为0longy=j;/定义 y 为整型局部变量,初始值为j任何时候只要运行
45、函数,该函数中包含的局部变量将被初始化。任何时候只要复位情况出现,全局变量将会被初始化。复位情况包括:代码下载主程序 main()运行系统硬件复位持久全局变量 IC 中已实现了一种特殊的全局变量的持久形式。一个持久的全局变量可像任何其它全局变量一样初始化,但其值只在代码下载的情况下会初始化,而在其它复位情况下保持不变。如不给出初始值,在代码下载时持久全局变量的值将会初始化为零。为定义持久全局变量,需在类型说明前加上关键字“persistent”。例如:persistentinti=500;创建了一个持久全局变量i,其初始值为 500。当打开主板电源时,或运行主函数时,或系统复位时,持久全局变量
46、保持其状态。只有当装入或卸载文件而导致代码下载时,持久全局变量才失去其状态。而且在 IC 中,如果下载代码仍然处于运行状态,持久全局变量的值可以被读取。例如,通过该方式可读取最终的测定值,或修改赋给该持久全局变量的初始值。注意:创建的持久全局变量主要用于两种应用场合:9.1.2.9.1.2.每次复位后,原来的校正值和配置值均不需重新计算关掉机器人电源后,其学习算法可以保持下来常量常量常量就是在程序中使用的各种显示为其数值的量,如:motor(0,80);其中的 0 和 80 就是常量;常量与变量一样,也有许多类型,根据不同的需要使用不同类型的常量。整型常量整型常量在 IC 中整型常量可定义为十
47、进制形式(如:4503 或-1),可定义为使用“0 x”为前缀的十六进制形式(如:0 x1fff),还可定义为一种非标准但常用的使用“0b”为前缀的二进制形式(如:0b),但不支持使用零前缀的八进制常量。长整型常量长整型常量通过在十进制整数后加上后缀“L”或“l”(字母 L 的大小写)可创建长整型常量。例如,0L 是长整型的零。虽然“L”的大小写均可使用,但大写形式更具有可读性。浮点数型常量浮点数型常量浮点数可使用小数点或科学计数法(例:“10e3”或“10E3”)分段。例如,浮点数零可以“0.”,“0.0”或“0E1”的形式给出,而不是仅仅0。字符型与字符串型常量字符型与字符串型常量单引号括
48、起的字符型常量的值是其ASCII 码值,例:x。字符串型常量用成对的双引号定义,如:Thisisacharacterstring.。NULLNULL 特殊常量 NULL 具有零值,可对指针或数组变量赋值或进行比较(将在后面说明)。通常,其它常量是不能转成指针类型,所以很多情况下要用到NULL。例如,为检查指针是否已初始化,需要将其与NULL 进行比较,避免试图对空指针读写。又如,在一个链表结构中,每个元素包含一个数值和指向下一个元素的指针,为了找到链表的结尾就需将指向下一个元素的指针与NULL 进行比较。9.2.9.2.各数据类型的取值范围各数据类型的取值范围IC 中的任何数据类型都有其相应的
49、取值范围,在使用变量和常量时要注意,不要超出其取值范围,否则会出现错误。IC 支持的数据类型的取值范围见下表:数据类型定义变量使用常量整型Inti;取值范围有效位数-2、0、80-32,768+32,767-2,147,483,648长整型LongjL;50L、-20L+2,147,483,647浮点型字符型Floatf;0.0110-38103802557 位Charch;“A”9.3.9.3.数组数据类型数组数据类型数组用于储存同类型的数据序列(所有的数组元素有相同的数据类型)。定义数组时需指定其长度(如,inta10)。数组中的元素可像其它变量一样进行赋值和读取。数组的定义和初始化数组的
50、定义和初始化数组使用“N”进行定义。如:下面的语句定义了一个有10 个整型变量的数组inta10;在数组中,元素(数组中的每个值)计数从0 开始,以数给的个数N-1 结束。在该数组中,元素计数从 0 到 9。通过在“”中括号中加入下标存取数组元素。a4表示数组 a 中的第 5个元素(以零为基数)。数组初始化为全零。数组亦可在定义时初始化,方法为在“”内用逗号隔开各数组元素初始值。若在定义数组时给出初始化信息而未在方括号内指定数组大小,则数组长度由给出的数组元素的个数而定。例如,inta=0,4,5,-8,17,301;创建一个有 6 个整数的数组,a0为 0,a1为 4,以此类推。如果定义了数