我没有在 KRC2 上设置程序,所以我在开发时试图理解意图
我想问的具体问题是,在 KRC2 程序中,一个名为 TTool 的 FRAME 数组被设置为等于系统变量 $Tool。这会在 KRC4 中引发错误。我假设这是因为 FRAME 数组设置为等于 FRAME 对象。在 KRC2 中,这是否只是将 TTool 的第一个索引项设置为等于 FRAME $Tool?
DECL FRAME TTool[6]
; TTool在system.dat中声明; TTool 值由加载的程序设置
;在 ToolChange 程序中 TTool = $Tool;这在 KRC2 中有效(不知何故),但在 KRC4 中有错误
; KRC4 假设 solutionTTool[toolIndex] = $Tool;这在 KRC4 中可行,但我想知道 KRC2 是否会假定 toolIndex 为 0。
您不能将某种类型的变量分配给 an 该类型的数组。我认为您需要更仔细地检查 KRC2 代码。必须有另一个与数组同名的变量(不是数组)。如果变量不具有相同的范围,KSS 不会抱怨,但 WorkVisual 可能会抱怨一个变量遮蔽另一个变量。
而且不......没有索引零......在以索引 1 开头的 KSS 数组中。
谢谢 Mode 先生!我会再次检查本地范围内是否有另一个同名变量。我认为控制器会抱怨双重声明,因为它已经在配置中声明.dat.
我搜索了KRC2控制器的多个备份中的所有文件,发现TTool声明在两个地方:config.dat和sps.sub。都将TTool声明为数组框架。这似乎无助于理解它在 KRC2 控制器上的工作方式。我也不确定如何知道 toolChange 程序正在使用哪个 TTool。代码
那些旧的机器人“创建”一个类型为 pos 的新变量使用未声明的变量。因此,如果您使用未声明的单个变量 TTool,它将在运行时创建,并且不会出现错误。如果您想将单个实数或布尔值分配给未声明的变量,则会出现错误,因为机器人总是创造一个 pos。并且可以将框架($tool)分配给 pos 而不会出错。只有当并发数组变量的声明不在使用未声明变量的程序的 dat 文件中时,这才有效。在较新的机器人上,没有自动创建 pos 类型的变量,所以你会得到一个错误,每个变量都必须声明在使用范围内。