在块调用中,可以用复杂数据类型作为块的实参,用它将一组数据传送到被调用块,或者用复杂数据类型将一组数据返回给调用它的块。通过这种方式,可以高效而简洁地在主调块和被调用块之间传递数据。
下面的例子用数组作为函数的输入参数。将数组作为参数传递时,作为形参和实参的两个数组应有相同的结构,例如两个一维数组的元素数据类型和数组下标的上、下限值都相同。
新建一个名为“数组做输入”的项目(见随书光盘中的同名例程),CPU为CPU 1214C。生成名为“求累加值”的函数FC1,在FC1的接口区生成一个输入参数“输入数组”,它是有3个Int元素的数组(见图4-14),再生成一个数据类型为Int的输出参数“电流和”。数组用于保存电动机的三相电流,图中的ADD指令将数组的3个Int元素相加,得到三相电流之和。
生成名为“机组电流”的共享数据块DB1,在DB1中生成有3个Int元素的数组“1号机电流”和“2号机电流”,其数据类型均为Array[0..2] of Int。还生成了数据类型为Int的“1号机总电流”和“2号机总电流”。在OB1中两次调用FC1(见图4-16),用数组“1号机电流”和“2号机电流”做输入参数,运行结果用变量“1号机总电流”和“2号机总电流”保存。
双击指令树的“监控与强制”文件夹中的“添加新监控表”,生成“监控表_1”(见图4-15)。在监控表中设置1号机和2号机的三相电流值。下载到CPU后,可以看到OB1的程序状态中FC1计算出的1号机和2号机的总电流(见图4-16)。
(www.xing528.com)
图4-14 FC1的块接口和程序
图4-15 监控表
图4-16 在OB1中调用FC1
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。