ROBO PRO(慧鱼编程教程)

更新时间:2023-12-27 03:03:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第11章 ROBO PRO软件教程

11.1 概述

11.2 ROBO PRO软件的安装 11.3 ROBO PRO软件的界面介绍 11.4 硬件测试 11.5 程序模块 11.6 程序的编写 11.7 在线和下载操作

第11章:ROBO PRO软件教程

11.1 概述

你一定曾经问过自己,机器人是如何执行被分配的任务,看上去就像有一只无形的手在操纵它。但不仅仅是真正的机器人,在许多其他涉及到自动化控制技术的领域中同样如此,包括慧鱼机器人。在接触了众多的慧鱼模型后,你一定很惊讶于慧鱼模型的操纵程序。究竟是什么软件编出了这样的程序呢?在接下来的章节中,我们将一起来学习ROBO PRO软件。

11.2 ROBO PRO 软件的安装

安装方法如下:将安装光盘插入光驱,安装程序自动启动后,在安装程序第一个的欢迎窗口中,你只需按一下NEXT按扭,如图:

第二个窗口是重要提示,包括重要的程序安装和程序本身更新提示,这里也只要按NEXT按扭。这个窗口是许可协议,显示ROBO Pro的许可契约。你必须按YES接受协议并按NEXT进入下一个窗口中。

下一个窗口是用户详细资料,请输入你的名字等信息。

下一个窗口是安装类型,允许你在快速安装和自定义安装中选择。在自定义安装中,你可以选择单个组件来安装。如果你是在旧版本的ROBO Pro基础上安装新版本的ROBO Pro,而且你已经修改过了旧版本的范例程序,你可以选择不安装范例程序。如果你不这么做,你已经修改过的旧版本范例程序会在没有提示的情况下被自动覆盖。如果你选择自定义安装并按下NEXT,会出现一个新的选择组件窗口中。

在安装目标目录窗口,允许你选择将ROBO Pro安装到的目标文件夹或者目录。默认路劲是C:\\Programs\\ROBO Pro。当然,你可以选择其他的路劲。

当你在最后一个窗口,按下Finish按钮,安装就完成了。安装一旦结束,程序会提示安装成功。如果安装有问题,会有错误信息出现,帮助你解决安装问题。

在第一次用USB连接线将接口板与计算机连接时,会提示你安装USB驱动程序,根据提示安装完成后就可以将程序写入接口板了。

11.3 ROBO PRO软件的界面介绍

双击

图标启动ROBO Pro程序,会出现以下窗口:

菜单栏

工具栏

模块窗口

窗口中有一个菜单栏和工具栏,上面有各种操作按钮,左面的窗口里还有各种不同的变成模块。对于初学者,可以在菜单栏中选择级别中的级别一,以后根据自己对ROBO Pro知识的增长选择不同的级别。

为了更好的熟悉全新的界面,我们打开一个现成的范例程序。点击按钮,

范例程序可以在C:\\Promgrams\\ROBO Pro\\Sample programs中

打开文件Testt00 Motor start Stopp.rpp:

模块程序

程序窗口

11.4硬件测试

将接口板和计算机相连,给接口板接上电源通电。为了使接口板和计算机间的连接工作

正常,ROBO Pro必须对当前使用的接口板进行设置。具体来说,请点击按钮。出现如下窗口:

这里我们用的是ROBO 接口板,因此选择端口时,我们应该选择端口USB。一旦选择了适当的设置,点击”确认”,关闭窗口。然后,可以点击工具栏中的”Test”,打开接口板测试窗口。

其中显示了接口板有效的输入和输出。窗口下方的绿条显示了计算机和接口板的连接状态。

? Interface connection OK指示已与接口板准确连接。 \\

? No connection to Internet表明计算机和接口板还无法建立正确的连接。状态条显示为

红色。

一旦连接正确建立了,我们就可以通过接口板测试窗口来测试接口板和与它连接的模型。测试窗口显示了接口板的各种输入和输出:

? 数字量输入I1-I8

这里可以接各种传感器。数字量输入只有两种状态0和1,或者Y和N。开关,光电传感器或者干簧管可以作为数字量输入来连接。

? 马达输出M1-M4

这里可以连接所谓的执行器,可以是马达、电磁铁或者灯。这思路马达输出可以改变方向和8级调速。

? 灯输出O1-O8

每个马达输出也可以用作一对单个的输出这个输出不仅可以用作灯的控制,也可以用作单向马达的控制。

? 模拟量输入AX-AY

模拟量输入AX-AY测量所连接传感器的阻抗。

? 模拟量输入A1-A2 这两个可以测量10V电压输入。

? 距离传感器D1-D2

只有特殊的距离传感器可以接到距离传感器输入端D1-D2。数字信号和模拟信号对D1和D2都有效。

? 扩展板Em1-Em3 可以连接扩展接口板。

11.5程序模块

11.5.1插入、移动和修改程序模块

首先我们要创制一个新程序:方法一,在菜单栏中点击“文件”下拉一对话框,单击“新建”;

方法二,单击工具栏中的

插入程序模块

图标。

把鼠标移到想使用的程序模块的符号上,并单击左键。然后把鼠标移动到程序窗口内,再单击一次。你也可以通过按住鼠标键把程序模块拖入程序窗口。

移动程序模块和组

可以通过按住鼠标左键,将一个已插入的程序模块移动到理想的位置。如果你想将一些模块合并成一组同时移动,你可以首先按住鼠标,沿着这些模块的外围画出一个框。在这个矩形框中的模块将会显示为有红色的边框。用鼠标左键移动这些红色模块中的一个,所有被选中的模块会跟着移动。

复制程序模块和组

在移动程序模块前,按住“ctrl”键,将要复制的程序模块移到所需要的位置,即完成复制。

删除模块和撤销功能

可以通过按下键盘上的“delete”键,删除所有标记为红色的模块。也可以左键单击工

具栏中的按钮,然后点击要删除的单个模块。若想恢复被删除的模块,可以利

用“编辑”菜单中的“撤销”功能。

11.5.2编辑程序模块的性能

1. 数字量/模拟量判断模块

用鼠标右键单击程序窗口的程序模块,会出现一个对话窗口,这里可以改变模块的各种属性。“分支”模块的属性窗口如右图所示。

? I1至I8按钮的选项中,可以选择所要查询的接口板的输入

端。

? 在类型一栏中,可以为与输入端相连的传感器选择一个图

示。数字量输入端最常用的是按键式传感器,但也经常使用光电传感器或干簧管开关。

? 在交换1/0分支位置一栏中,可以交换分支出口1与分支

出口0的位置。

小贴士:如果使用迷你开关的一对常开触点,1端与3端,则一旦按下开关,程序将连入分支1,而非分支0。如果使用迷你开关的一对常闭触点,1端与2端,则一旦按下开关,程序将连入分支0,而非分支1。

2. 马达输出模块属性的编辑:

? 通过选择M1至M4,来选择所要控制的接口

板输出。

? 在类型一栏中,选择代表连接到输出端的慧鱼

元件的图示。

? 在动作状态一栏中,可以选择输出动作类型。

可以让电机左转(逆时针),右转(顺时针),或者停止电机。同样也可以控制一盏灯。 ? 在调速度一栏中,可以设定电机运转的速度或

灯的亮度。可能的数值为1到8。

小贴士:有时候马达只朝一个方向运行,比如输送带马达。这种情况下,可以把马达接到指示灯输出,这样可以少用一条线路。

3. 时间延时模块

用延时模块可以使流程执行延迟一个所设定的持续周期。单击右键,在一定范围内可以设定自己所需要的时间。延时时间范围可以从1毫秒到500小时。然而,延时时间越长,精度越低。 延迟 至30秒 至5分钟 至50分钟 至8.3小时 至83小时 至500小时 精度 1/1000秒 1/100秒 1/10秒 1秒 10秒 1分钟

4. 输入等待模块

出了时间延时模块,还有另外的两个模块,用来等待一些程序继续运行的东西。等待接口板的某个输入由一种特定的方式改变为一种特定的状态。这个模块共有五种不同的形式。

符号 等待 输入=1 (闭合) 输入=0 (打开) 跳变0-1 (打开到闭合) 跳变1-0 任一跳变 (闭合到打开) (1-0或0-1)

5. 脉冲计数器

很多fischertechnik机器人模型都是用脉冲轮。这些齿轮每旋转一圈会触动四次开关。有了这些脉冲轮,你可以以一个精确的轮数来驱动电机,而不是根据给定的时间。为了达到这一点,你需要计算接口板的某个输入处的脉冲数。脉冲计数模块就是用来等待用户定义的脉冲数。对于这种模块,同样地,设定所计脉冲为0-1,1-0或者两者皆可的。脉冲轮通常等待双向的变化,这样用一个四齿脉冲轮达到了每转8个脉冲的精度。

6. 循环计数器

有了循环计数模块,可以十分简单地将程序中的特定部分多次运行。只有当循环次数与先前设定的数值相等时,循环计数分支将会转到Yes出口;如果需要进一步的循环,循环计数分支将会转到No出口。

? 在“循环计数”一栏,可以输入在“Y”出口激

活前,“循环计数”从“N”出口执行的次数。输入值必须为正。

? 如果选中了“交换Y/N分支位置”,点击“确认”,

关闭窗口时,Y和N连线就会互换。根据Y和

N连线的位置,程序中被重复执行的部分将会在“循环计数”模块的右部或者下部。

7. 灯输出

用灯输出编程模块,可以开关接口板的任一个单极输出O1-O8.接口板的输出既可以成对地用作马达输出,也可以用作单个的灯输出O1-O8。与马达输出不同,灯输出只占用一个接线端。

小贴士:如果连接四组灯或者马达,也可以用马达输出来接灯。这样更实用,因为这样可以将灯的两个接线端直接接到接口板的输出,而不是必须将所有负极都连到接地插孔。

? 在“灯输出”一栏,可以设置O1-O8

中的任一个作为要使用的输出。 ? 在“接口板/扩展板”一栏,可以选

择所需要的是ROBO 接口板、扩展板还是其它接口板的输出。

? 在“类型”一栏,可以选择代表连接

到输出的慧鱼器件的图示。

? 在“动作状态”一栏,可以设置使输

出如何动作。可以打开或者关闭灯。

可以指定1-8之间的一个强度,其中8亮度最大,1最小。在灯关闭状态下,自然不用再定义强度了。

8. 全局变量

每个变量可以存储一个-32767到32767之间的数值。变量的值可由连接一个“=”模块

到指令模块的左边来设定。在属性窗口中,也可以赋予变量一个初始值,并保持到其收到第一个指令改变的值。

ROBO Pro只能为所有的变量模块建立一个同名而且变量类型为全局的变量。所有的同名全局变量都是一样的,而且有相同的值,即使它们出现在不同的子程序中。当其中一个变量模块通过指令改变了,所有其它的同名变量也被改变了。这一条对于局部变量并不适用。 除了“=”指令,变量也可以接受“+”和“-”指令。所以,比如说变量接到了一个指令“+5”,就将5加到了当前值上。对于“-”指令,指令传送的值就由当前值减去。 警告:

如果执行“+”或者“-”指令后,变量的值超出了所允许的范围,变量值就会加上或者减去65538,以使得变量值回到有效范围中。因此,要注意变量值的取值范围。

变量的属性窗口

? 在“名称”一栏,可以输入变量名。

? 在“初始值”一栏,可以输入变量的初始值。

变量保持这个值,直到通过=、+或者-指令得到一个新的值。

这个“变量类型”项只有在子程序中对变量才有意义。

9. 局部变量

局部变量与全局变量的作用几乎相同,只有一点区别:局部变量只是在它被定义的子程序中有效。即使在不同的子程序中两个局部变量同名,它们也是既然不同的独立的两个变量。即使同一个程序同时并行几个流程,每个流程中的子程序都有一套独立的局部变量。局部变量只在定义它们的子程序中发生作用,所以在程序开始时局部变量并不被赋予初始值,而是在每次启动相关的子程序之时。

10. 常量

和变量一样,常量也是一个值,但常量的值不能由程序来改变。如果子程序中总是使用一个相同的值,可以将一个常量和一个子程序符号的数据输入相关联。常量在运算器计算中也是非常实用的。

11. 定时器变量

定时器变量的运用根本上和变量相似。即使和定时器变量相比存在普通和静态变量的区别。唯一的区别在于定时器变量由存储的固定的时间间隔向下计时,直到其值为零。定时器的值一旦达到零,就保持在那边。如果定时器的值变为负的,比如通过减法指令,其值会在下一个时间节拍回到零。

定时器变量向下计时的速度可以在其属性窗口中设定,在每节拍1/1000秒和每节拍1分钟之间。定时器的精度取决于时间节拍的设置。在操作时,应该选择小的时间节拍,比如10x1秒或者100x0.1秒,而不是1x10秒。在程序需要等待至少一个小时的时候,才可以选择1分钟的时间节拍。

向下计时的节拍数通常是由赋值“=”指令来分配给定时器。在图示的例子中,要向下计时100个10ms的节拍。这对应于1000ms=1s的一个时间间隔。其精度为10ms。 如果要测量一个时间值,可以在开始时将定时器变量设置为尽可能大的正值。这样一来,在定时器到达零时还剩下很多时间。将初始值减去当前的定时器的值,就是已经得时间。

定时器变量的属性窗口:

? 在“延时”一栏,可以确定定时器变量的

初始值。作为惯例,可以在这里输入0,并在适当的时间用“=”指令来给定时器变量设定一个值。但是如果定时器假设的是在程序或者子程序开始的时候来投入运行,那么其相应值可以在这里输入。

? 在“时间单位”一栏,可以设定定时器变

量在向下计时的时候,所用的时间节拍的单位大小。

? 在“定时器变量类型”一栏,可以设定定

时器变量为全局变量还是局部变量。

12. 序列

序列模块相当于一个变量,其存储不止一个而是多个数值。变量中可以存储的数值的最大个数可以在其属性窗口中设定。

下列的序列功能可以用传递指令到W输入来运用: 指令 数值 到作用 添加指令可以将新的数值加到序列的末尾。整个序列就多了一个模块。如果序列已经达到了最大数值,则忽略此指令。 删除序列末尾已有的模块。与指令一起传递的数值是所需要删除的模块号。如果此号码大于序列的模块号,则所有的模块会被删除。如果号码为0或为负,则忽略此指令。 -32767 32767 0到32767 0到32767 序列属性窗口:

将已有的模块和序列的第一个模块交换。与指令一起传递的数值时所需要交换的模块的位置号。 ? 在“最大数量”一栏,可

以输入序列中元素的最大值。这个尺寸无法用Append指令超出。 ? 在“初始数量”一栏,输

入开始时用以初始化序列的元素数量。 ? 在“初始值列表”一栏,

可以输入预分配到序列的初始值。可以用用变的按钮对序列进行编辑。

? 在“从.CSV文件调用”

一栏,可以选择一个Excel兼容的.CSV文件,序列可以从此文件中提取数值。在所选择区域的中部,可以选择.CSV文

件栏用于此目的。文件直接装载并且显示在List of initial values下。开始执行程序或者执行下载操作,ROBO Pro会多次试图从文件装载当前值。如果不成功,则只能用存储在List of initial values下的数值。 ? 在“存入.CSV文件”一栏,可以指定一个文件,用来将程序结束后存储序列的内

容。这项功能只对在线模式和静态序列有效。 ? 在“列分隔符”一栏,可以选择序列的单个的列是否应该用逗号或者分号分开。 ? 在“序列变量类型”一栏,可以将序列设置为一个全局或局部变量。对于大序列建

议设置为全局变量,因为全局变量比局部变量有更多的存储区可用。

13. 指令

=(赋值)

赋值指令“=”将一个数值分配个接受者,其经常用来将数值分配给变量,定时器变量,序列模块或者面板输出。

+(加)

指令“+”可以传递到变量或者定时器变量来增加变量的值。指令“+”可以附带任何一个想要的值,并加到变量上。因为指令附带的值也可以为负,变量的值也可以用此指令来减少。

-(减)

指令“-”和上述的指令“+”比较相似。唯一的区别在,指令所附带的值会从变量的值里减去。

向右

“Right”指令传递到一个马达输出模块来切换马达到顺时针方向。

向左

“Left”指令传递到一个马达输出模块来切换马达到逆时针方向。

停止

“Stop”指令传递到一个马达输出模块来停止马达。没有值随“Stop”指令传递。

打开

“On”指令传递到一个灯输出模块来将灯打开。“On”指令也可以传递到马达输出模块,相当于“向右”指令。

关闭

“Off”指令传递到一个灯输出模块来将灯关闭。也可以传递到马达输出模块,相当于“停止”指令。

文本

“Test”指令是一条特殊的指令,由于它不是传递一条带数值的指令,而是选择的一个文本,到所连接的模块。然而,只有一个程序模块可以处理“文本”指令,它是面板中的文本显示指令。

添加数值

“Append”指令是针对序列的一条特殊的指令。这条指令附带着一个数值,用来添加到序列的末尾。如果序列已经满了,则会忽略这条指令。

删除数值

“Delete”指令是针对序列的一条特殊指令。用这条指令可以删除序列末尾的任何数值。想要的号码作为数值随指令附带。如果这个值大于序列中所有模块,序列中所有的数会被删除。

交换数值

“Exchange”指令是针对序列的一条特殊的指令。用这条指令,序列中所有的值都可以和第一个模块交换。要和第一个模块交换的模块号作为一个数值随指令附带。注意:序列第一个模块的编号为0.如果指令附带的值不是一个有效的模块号,序列模块会忽略此指令。

指令模块的属性窗口:

? 在“指令”一栏,可以在可能的指令列表中

选择想要的指令。 ? 在“值”一栏,可以输入随指令附带的数值。

如果没有附带值,这一栏为空。 ? 在“值的描述”一栏,可以输入一个简短的

表示文本,显示在有附带值的指令模块中。这段文字应该说明包含了哪种类型的值。这一部分只是作为现实内容,没有其他作用。

? 在“外部数据赋值”一栏,可以指定是否指令模块的左边带一个橙色的用来附带数

据的数据输入端。对于所有的指令模块,数值可以输入在指令模块内,也可以从指令模块左边的数据输入端读取。

14. 判断(带数据输入)

这个程序判断模块的左边有一个橙色的数据输入端“A”。通过这个端子,可以读入一个经常来自输入模块的数值。数据输入端“A”可以和变量,定时器变量或运算器的输出相关联。模块将来自数据输入端“A”的数值和一个固定但可自由定义的值比较。根据比较是否保持,决定模块的分支以“Y”或“N”为出口。

判断模块的属性窗口

? 在“条件”一栏,在右边的区域,可以输入用来和输

入值A作比较的数值。通常的比较运算器对于这一比较是有效的。 ? 如果选择了“交换Y/N分支位置”,“Y”和“N”两

个出口就会互换。

15. 与固定值作比较

该程序模块数据输入端A的数值可以和一个固定的,但可以自由定义的数值作比较。根据在数据输入端A出现的数值大于、小于或等于固定值,控制分支就以比较模块的右边,左边或者中间为出口。

比较模块属性窗口

? 在“比较值”一栏,可以输入一个和输入端A的

值进行比较的常数。

16. 比较

使用比较程序模块,数据输入端A和B的数值可以相互比较。根据A小于B,A大于B,或A等于B,模块分支以左边,右边或中间作为出口。这个模块最普通的应用是将一个名义上的值和一个实际的值作比较。根据名义上的值和实际值的相对关系,比如马达可以左转、右转或停止。

17.等待…

等待程序模块可以组织程序的执行,直到发生一个变化或在模块的数据输入端达到一个特定的状态。模块有五种变化状态。

“等待”模块的属性窗口

? 在“等待”一栏,可以在上述五种功能中作

选择。如果选择了“出发变化监测”,模块在其不应当执行的时候,也会检测信号变化的发生。在此情况下,模块保存了最近的值。当模块再次执行的时候,如果值在间歇期已经按正确的方式变化了,程序就可以立即继续执行了。这种方式下,丢失信号变化的可能性就较小了,因为程序去完成其它任务了。

在“文本显示”模块中,可以用来显示数字值,文本,或两者都有。

文本显示是在程序通过面板显示控制的。可以在“输入,输出”模块中找到“面板显示”模块。

一旦在面板输出的参数窗口中将它和文本显示相关联,这个符号改变了,且显示了面板的名字和文本。

可以同过两种方式,设置文本显示:

可以通过“=”指令将显示的内容传递到程序中相应的“面板显示”模块。如果要用它来显示变量或是其它程序模块,因为大部分的程序模块会在值改变时,自动通过他们的数据输出发出“=”指令。这条“=”指令仅仅改写到最后的6个字符。如果多行显示,可以在某一行上加上解释文字。在多行显示时,仅有最后一行的最后6个字符通过“=”指令被改写。

可以用文本指令设置所要显示的内容。文本指令是个特殊的指令模块,通过它的输出不仅可以传递数据,还可以是完整的文本。用此种方法可以随意组合数据和文本。

文本指令控制字符:

指令字符 ###### ##.## ##,## \\c 效果 将数据输入中数值以一个带“+”的5位数字符输出。 将数据输入中数值一个带两位小数的数值输出,且用句号分隔。 将数据输入中数值一个带两位小数的数值输出,且用逗号分隔。 清除显示,并将后来的文本插入显示的开头。

文本显示的属性窗口:

? 在“文本”一栏,可以输入所要显示

的内容。这些内容一直保留,直到从程序中传递一个指令来显示它们。如果传递一个“=”指令来显示,只有显示内容的最后6个字符被写出。正文的开头内容保留,所以在数值的前面可以显示一个注释来说明数值的种类。在图示的例子中,文本“Var=”保留。显示有10个字符,所以10-6=4个字符保留。

? 在“数字位数/列数”一栏和“行数”

一栏,可以设定显示空间的字符数。在一个多行显示中,可以显示一个注释。

3)指示灯

灯是用程序的面板输出来控制的。一旦在面板输出的参数窗口中将它和指示灯相关联,这个符号就改变了。

可以通过传递一个相应的面板输出指令“On”和“Off”来打开或关闭灯。也可以通过“=”指令来关闭灯。如果大于0,灯被打开。如果小于等于0,则灯被关闭。

指示灯的属性窗口:入选中“初始灯亮”选项,指示灯一直点亮,直到相应的程序模

块收到指令。否则指示灯初始时是关闭的。

28.控制模块

1)按钮

按钮模块在程序中通过“面板输入”模块可以查询。可以在输入输出模块组中找到“面板输入”模块。

还可以将按钮和面板输出关联,并输出到任何程序模块的数据输入端,比如判断模块,如果按下按钮,返回“1”值,否则返回“0”值。

如果选中按钮属性窗口中的“按钮开关”一项,按钮作开关用而不是传感器。如果按下按钮,那么它会保持压下状态直到第二次点击。否则,按钮就当传感器用,手松开压簧也直接打开了。

2)滑块

和按钮只能返回“0”和“1”值不同,滑块可以返回有许多不同的值。数值的范围可以通过属性窗口来设置。

滑块经常连接到一个带数据输入的指令模块。这样就可以用滑块来控制马达的速度了。 在属性窗口中,“最小值和最大值”可以输入滑块的值的范围。

11.6程序的编写

程序的编写都是按照一个流程一个流程编写的,程序流程都是由“开始”模块作为开头的。如果程序不是由此模块开头,流程就无法执行。假如一个程序由几个流程组成,每一个流程必须由“开始”模块开头。各个不同的流程就同时开始启动。“开始”模块没有属性编辑。 如果一个程序结束,最后一个模块的出口应该连到“结束”模块。流程也可以在各个不同的地方用此模块终结。也可以将各个不同模块的出口连接

到同一个“结束”模块。但是,也很有可能流程是个没有结束的循环,不含“结束”模块。“结束”模块同样也没有属性窗口。

11.6.3连接各程序模块

各个程序模块间是通过程序流程线来连接的,箭头的方向即程序流动方向。

小贴士:如果线没有被正确连接到一个接点或一条线,将会在箭头处出现绿色矩形。在此情况下,通过移动或删除及重画线来重新建立连接。否则,程序运行到这一点就不会再运行下去。 删除程序流程线

删除程序流程线和删除程序模块的方法一样。左击这条线,使得它显示为红色。然后按下键盘上的“del”键来删除这条线。如果同时按住shift键,然后连续点击那些线,可以选中多根线。除此之外,还可以通过框起这些线,来选中它们,然后再按下“del”键一下删除所有红色的线。 改变连接线

如果移动了某一模块,ROBO Pro会试图以一种合理的方式调整连接线。另外,还可以自行移动这些连接线。以下是不同鼠标的用法:

? 如果鼠标处于一根垂直线上,则可以通过按住左键来拖动整条垂直线。 ? 如果鼠标处于一根水平线上,则可以通过按住左键来拖动整条水平线。

? 如果鼠标处于一根斜线上,则当在线上左击时,会在线上插入一个新的点,然后

按住左键来拖动这条线来确定这个新点的位置。 如果鼠标处于线的端点附近或连接线的夹角处,通过按住左键来移动这一点。智能将此连接线的端点移到另一个合适的程序模块的接线端。这样,两个端点就连上了。否则,端点不能移动。 另一种连接的方法

通过移动程序模块来建立连接线。如果移动一个程序模块,使得它的入口位于另一个模块出口下方一到两个格子,就可以建立两个模块间的连接线。同样,也适合于将出口移动到入口之上。就可以将程序模块移动到最终位置。

11.6.4子程序

有时候,我们设计的程序相当的庞大,需要很多灵活的流程图。如果工作表里都是组件的话,到处都是连接线,弄得相当混乱。于是,我们想到用子程序来解决这个问题。

在“级别”菜单栏中选择“第二级”:子程序,模块窗口将一分为二。

模块窗口

子程序与之前的程序非常相似,首先,建立一个空的新程序。在工具栏中,点击图标,创建一个子程序。将会出现一个对话窗口,在窗口内输入子程序的名称和描述。

子程序的名称不宜太长(8到10个字节),不然子程序符号会很大。当然名称以后还可修改。

一旦点击了确认,关闭了新建子程序窗口,在子程序状态栏上面会显示新的子程序。

任何时候,都可以点击子程序栏上的程序名在主程序和子程序之间的切换。

通过点击属性,可以从功能栏切换到子程序的属性窗口。在这里可以修改子程序名。其他大多数区域只能在更高级甚至是专家级中才能改变。

点击功能栏上的功能,就可以对子程序的功能进行编程。程序窗口与主程序大致相同,但又有区别:主程序总是由一个“开始”模块开头;子程序由一个相似的模块“子程序入口”开头,模块有这样一个名字是因为控制流程是从主程序经由这个模块进入子程序的。

这里不能用“开始”模块,因为显然没有开始新的流程。

在子程序I/O中可以找到子程序入口和出口。 开始模块 子程序出口

在对慧鱼机器人进行程序编程时,可以先从主程序入手,将机器人的动作分解成若干个子程序,再对各个子程序进行编程。也可以先从子程序入手,把编好的子程序穿在主程序中完成一个完整的动作。下面是一个完整的主子程序实例:

程序控制从子程序交回到主程序 停止模块 停止一个独立流程的执行 子程序入口 开始一个新的独立的流程 程序控制由主程序交到子程序

在编写子程序时,要确信是在子程序栏中输入的子程序,而不是在主程序栏下。建立的子程序可以在“已加载的程序”栏下找到,如果还没有保存过文件,则其文件名为unnamed1。 在模块组“已加载的程序/unnamed1”一栏中,可以找到两个绿色的子程序符号。这样就可以将子程序符号和普通程序模块一样插入到主程序中。

11.6.5子程序库

把一个子程序从一个文件复制到另一个文件十分方便:同时加载两个文件,用已经加载的程序模块组,将子程序从一个文件插入到另一个文件。对于经常使用的子程序,使用库的话,操作会更简便。ROBO Pro包括了一个预置的子程序库,可以方便地重复使用。

1)使用库:

库初始化分为两个主要的组。在组合包组里,可以找到用于特定的组合包里的模型的子程序。在通用组里,可以找到能用于所有模型的子程序。

每一个机器人组合包,比如ROBO移动组,在组合包里都有自己的子程序,有时候,这些子组根据各个组合包的装配手册中模型,还进一步分组。当选择了组合包或者其中一个模型,在模块窗口会显示这个模型的现成的子程序。

如果用鼠标指向一个子程序符号,会显示一个简短的描述信息。如果将一个子程序插入程序,可以在子程序工具条上选择子程序,再单击功能工具栏的描述,就可以显示其详细的描述。

注意:如果从库里插入一个子程序,在一些情况下,比如某个子程序所用到的子程序会同时插入程序。可以选择编辑菜单上的撤消功能,删除这些子程序。

2)使用自己的库:

为避免每次使用子程序都要查找打开相关文件,可以建立自己的库,就像预置的库一样。自己的库存放在同一个文件夹下的ROBO Pro文件组。每个文件夹都归类到自己的组中去。

在文件菜单的用户自定义库文件路径选项里,定义在哪个文件夹里存放自己的库。 3)组建自己的库:

ROBO Pro没有特别的改变库的功能,不过操作起来也很方便。如果需要从一个库中添加或者删除子程序,必须调用相关的文件。可以在你自己的库文件目录下找到这个文件。打开第二个文件,把“已加载的程序”组只能够选择一个子程序,然后拖到库的主程序中。在库里,主程序本身并不显示在模块窗口。

注意:如果修改了一个库文件并保存,还必须在“文件”菜单里选择“更新我自己的库”。这样可以更新组窗口的文件列表。

11.6.6编辑子程序符号

除了ROBO Pro会自动生成子程序符号外,也可以自己定义符号,用来更好表达此子程

序的功能。首先,需要在子程序的属性窗口,从自动符号模式切换到手动符号模式。接下来,从“属性”栏切换到“符号”栏,来编辑子程序的符号。这个模块组窗口中的“绘制图表”模块组中可以找到绘图功能。

在画图/形状这个模块组里,可以找到常用的图形,如矩形,椭圆,圆形等等。在图画/文字下面,

可以找到各种字体和大小的文字对象。在图画的其它组里,可以找到更改颜色和其他属性等功能。

可以移动子程序的接线端,但是不可以添加或者删除。在子程序符号的环境下,一般每个子程序的入口和出口只有一个接线端。接线端是自动生成的,即使你切换到了手动符号模式。

一旦离开符号编辑窗口,所有主程序和其他的子程序下的该子程序都会相应地自动修改。请注意:如果已经移动了子程序的连接端,且连接已经建立的话,这会对子程序的调用发生一点影响。在某些环境下,会出现不正确的连接,而是在连接线的端点和符号端点都出现一个叉。作为惯例,一般简单地在连接线上单击鼠标左键,将自动重画,在子程序有许多连接的情况下,就必须以后编辑这些线。

11.6.7指令输入和子程序

通过子程序的指令输入,可以从外部向子程序发送一个指令。如果输入状态发生改变,数字量输入模块通过橙色连接线发送它的新值。在模块对话窗口中可以给输入定一个名称。

通过子程序指令输出,可以从子程序发送指令。例如,可以从子程序向马达发送向右、向左、停止指令。对于这个模块,也可以在对话框中输入一个名称。

下面举一个带子程序的多定时器模型: 主程序 (子程序)time 在开始和循环里的等待输入模块被等待模块替代,使用了分支,等待组中的用于数据连接的橙色连线。它们都链接到了子程序指令输入部分。在开始处和结尾处的两个马达控制模块被指令模块所替代。它们都向子程序指令输出点击发送它们的指令。

子程序time在主程序中被调用了四次。子程序指令输入部分自动生成绿色子程序符号的左边的橙色连接“按”。右边连接端“电”是用来连接子程序指令输出电机。子程序符号的连接“按”分别连接了每一个传感器I1到I4。M1到M4中每个马达分别连接了连接点M。通过这种方式,每次调用子程序time查询不同的传感器和控制不同的马达。

11.6.8变量组和多个进程

有时候是实际的需要,要用到多个带有开始模块的程序并行运行,这称之为并行进程。如下所示:

两个互不相关的进程分别用于I1和I2。如果传感器I1被按下,这对于I2的进程是没有影响的,并且可以继续监控传感器I2。另外还有一个独立的进程用于查询计数器的值和负责告警灯的打开和关闭。

可以从多个进程向变量发送指令而且可以在多个进程中使用这个变量。变量是非常适合在进程之间交换信息的。

11.7在线和下载操作

可以在屏幕上跟踪程序的进程,因为当前活动的模块在屏幕被表示成红色。可以用

在线方式来帮助理解程序或找出程序中的错误。

可以通过按暂停按钮来停止程序并继续执行程序。它可以在不停止程序的情况下,得到一些有关模型的数据和资料。如果正在理解程序运作原理,那么暂停按钮十分有用。

可以一个模块一个模块地分步执行程序。每次按下该按钮,程序就会自动转入下一个程序模块。如果执行时间延迟或等待模块,它还可以使程序向下一个模块转换的时间延长。

该按钮为下载操作按钮。在线模式下,电脑将控制指令。而下载模式下,程序是由接口板自己执行的。电脑将程序储存在接口板中。一旦完成,电脑与接口板之间的连接就可以断开了。现在接口板可以独立于电脑执行控制程序。

使用下载模式

ROBO接口板有好几个程序储存区域,包括一个随机存取存储器(Random Access Memony)和两个闪存(Flash memory)。一旦断开接口板与电源的连接或将电池组断电RAM中的程序就会丢失。然而,对于保存在闪存中的程序,即使断电,也仍然会在接口板中保存好多年。当然,可以随时修改闪存中的程序。然而程序下载到RAM速度快很多,因此主要在程序测试阶段用。

对于移动机器人,“由接口板上的按钮启动程序”选项更有用。因为,当没有无线通讯模块,在程序启动机器人活动之前,还必须先将连接电缆拔除。如此一来,必须首先用接口板上的Prog键选择想要的程序,然后再此按下此键来启动程序。

如果选中最后一个选项,“通电时自动启动”,则一旦接口板通电,在Flash 1中的程序将会自动启动。这样一来,就可以用一个带计时开关的电源适配器给

接口板供电,并在每天同一个时间启动程序。这样就不需要使接口板始终处于长久通电状态,也不需要每次需要启动程序时都按Prog键了。 注意:

当一个程序 被保存在闪存或调用闪存中程序执行时,以为同时也使用了随机存取存储器,所以随机存取存储器中的程序会丢失。

本文来源:https://www.bwwdw.com/article/2v0x.html

Top