西门子S7-300400块调用指令UCCC在S7-1500中无法使用

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,第1张

前段时间朋友在移值S7-400程序到S7-1500时,遇到UC指令报错,不能使用。微信发来图片,根据PORTAL中的提示,找不到相关设置,如下图:

图1

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,o4YBAGAP5JuAE9OkAAPSTqmG418928.png,第2张

因为以前在用STEP 7编程时,也很少使用UC/CC指令,基本都是CALL指令,于时,找了一些资料看了一下,如下图:

STEP 7中的UC/CC指令说明

图2

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,pIYBAGAP5KSAchB8AAFB-JCLueQ065.png,第3张

PORTAL中的UC/CC指令说明

图3

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,pIYBAGAP5K2AJx0XAAEoMdOZM-g830.png,第4张

使用UC/CC指令时,FC/FB不能有任命接口参数,FB也不能有背景数据块。在STEP7中,使用UC/CC调用FC/FB是不区分的,一视同仁。在PORTAL中,还要激活“通过寄存器传递参数“并且要取消使用块优化访问方式。

于是,分别在STEP 7和PORTAL中进行了测试

在STEP 7中测试,FC/FB都能使用UC指令正常调用 ,如下图

图4

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,o4YBAGAP5LiASnRWAACvTjPt_NU537.png,第5张

在PORTAL中测试,UC指令调用FC时,PORTAL会自动转换成CALL指令,但是FB就会报错,并且在FB的属性中也找不到“通过寄存器传递参数“这个选项。如下图:

图5

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,pIYBAGAP5MKAZX7DAACR42LpbtQ084.png,第6张

图5.1

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,o4YBAGAP5MyABZg-AAC_cdHZr2k343.png,第7张

这就奇怪了,资料上明明写了激活“通过寄存器传递参数“并且要取消使用块优化访问,难道还有哪里设置不对。在无意间,打开了FC5的属性,奇迹发生了,这个功能居然有参数选项,别的块为什么会没有呢?于是仔细的对比了一翻,发现了端倪。原来有参数选项的块,编程语言是用的STL,其它没有参数选项的块,用的是LAD编程语言。

为了证实这一点,于是做了如下测试:

1. FC/FB编程语言都是LAD,结果

-FC/FB的属性中没有参数选项

-UC调用FC会自动转换为CALL指令调用

-UC调用FB会出错

-CC调用指令同上

图6

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,pIYBAGAP5NaATRD5AABdGvt8bdU011.png,第8张

2. FC/FB编程语言都是STL,结果

-FC/FB的属性中有参数选项,取消块优化访问方式后,才能激活“通过寄存器传递参数“

-UC正常调用FC

-UC正常调用FB

-CC指令同上

图7

西门子S7-300400块调用指令UCCC在S7-1500中无法使用,o4YBAGAP5OCAQKUUAAArXkc4r4Q342.png,第9张

其它编程语言SCL/FBD/GRAPH测试结果与LAD相同,这里不再描述。

最后结论:

在STEP7中,无论使用哪程序编程语言,只要不带有接口参数的FC/FB,都可以使用UC/CC指令调用

在PORTAL中,被调用的FC在不激活“通过寄存器传递参数“选项时,使用UC/CC指令,块会自动转换为CALL指令。FB块会出错。

PORTAL中用UC/CC指令调用 FC/FB块,编程语言必须是STL,且不能带用接口参数,在FC/FB的块属性中,要取消块优化访问方式,激活“通过寄存器传递参数“选项后,才能使用UC/CC指令。

责任编辑:lq

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2493044.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存