找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
在CFC中调用该FB时报错,“不支持参数类型S7_ARRAY";
然后我将输入输出中的变量重新定义一个UDT,然后UDT里面是数组,在调用的时候也不行;有没有好的方法;因为FB里面必须用到数组进行循环计算,有什么好的方式;该FB还要被多个CFC调用;
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
1、PCS 7的 CFC(连续功能图)编辑器不支持 S7_ARRAY类型以及指针类型变量作为功能块的输入/输出参数。PCS 7的 CFC 环境仅支持基本数据类型(如 BOOL, INT, REAL, DINT 等)和简单的 UDT(不含数组),遇到的“无法导入,不支持参数类型 S7_ARRAY"正是系统检测到参数中包含数组类型而拒绝编译。
2、不要将数组本身作为FB的参数传递,而是将数组定义在数据块中,FB的参数只传递该数据块的引用,或者在 FB 内部直接访问全局 DB。但在 PCS 7CFC 中,直接传递 DB 号给 FB 内部使用通常需要通过特定的系统功能块或 SCL 实现。
2.1移除 VAR_IN_OUT 中的 ARRAY 类型。
改为传递一个 ANY 类型的指针(如果 CFC 支持)或者传递 DB 块的编号(INT)和起始偏移量(INT)。
2.2使用 SCL 块或系统块。
步骤 1:将 FB2600 逻辑转换为 SCL代码块(FC 或 FB)。SCL 语言完全支持数组、循环和复杂逻辑。
步骤 2:在 CFC 中,使用 SCL 块来调用这段代码。
步骤 3:在 SCL 块中,定义数组变量。可以将数组定义在全局数据块中,或者在 SCL 块内部定义局部数组。
步骤 4:如果需要在 CFC 中连接多个实例,可以将数组数据放在一个全局 DB中,SCL 块通过参数接收 DB 号,然后在 SCL 代码中通过 DB[DB_Number].ArrayName 访问。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

官方商城-正品备件
DIOMIS