西门子S7-300/400块调用指令UC/CC在S7-1500中无法使用

前段时间朋友在移值s7-400程序到s7-1500时,遇到uc指令报错,不能使用。微信发来图片,根据portal中的提示,找不到相关设置,如下图:
图1
因为以前在用step 7编程时,也很少使用uc/cc指令,基本都是call指令,于时,找了一些资料看了一下,如下图:
step 7中的uc/cc指令说明
图2
portal中的uc/cc指令说明
图3
使用uc/cc指令时,fc/fb不能有任命接口参数,fb也不能有背景数据块。在step7中,使用uc/cc调用fc/fb是不区分的,一视同仁。在portal中,还要激活“通过寄存器传递参数“并且要取消使用块优化访问方式。
于是,分别在step 7和portal中进行了测试。
在step 7中测试,fc/fb都能使用uc指令正常调用 ,如下图
图4
在portal中测试,uc指令调用fc时,portal会自动转换成call指令,但是fb就会报错,并且在fb的属性中也找不到“通过寄存器传递参数“这个选项。如下图:
图5
图5.1
这就奇怪了,资料上明明写了激活“通过寄存器传递参数“并且要取消使用块优化访问,难道还有哪里设置不对。在无意间,打开了fc5的属性,奇迹发生了,这个功能居然有参数选项,别的块为什么会没有呢?于是仔细的对比了一翻,发现了端倪。原来有参数选项的块,编程语言是用的stl,其它没有参数选项的块,用的是lad编程语言。
为了证实这一点,于是做了如下测试:
1. fc/fb编程语言都是lad,结果
-fc/fb的属性中没有参数选项
-uc调用fc会自动转换为call指令调用
-uc调用fb会出错
-cc调用指令同上
图6
2. fc/fb编程语言都是stl,结果
-fc/fb的属性中有参数选项,取消块优化访问方式后,才能激活“通过寄存器传递参数“
-uc正常调用fc
-uc正常调用fb
-cc指令同上
图7
其它编程语言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指令。


NVIDIA 助力研究人员将学术AI研究成果转化为业务创新
聚合物锂电池的优点和缺点分别是什么
良胜保险丝相关知识分享,赶紧来看看!
新能源汽车电机绝缘漆的解决方案
电加热蒸汽发生器安全保护说明
西门子S7-300/400块调用指令UC/CC在S7-1500中无法使用
安捷伦近场电磁干扰源探测定位解决方案
从互联网进化角度分析区块链的技术简史与未来前景
lora网关怎么样?为什么LoRa现在饱受欢迎?
18650电池盒制作 单只专用
三极管共射极放大电路
无人机“智能飞场”亮相2019美国无人系统展
海康威视机器视觉发布1.5亿超高分辨率相机等重磅新品
WhatsApp正在开发一项新功能
珠海镇东:积极配合5G PCB研发
三星电子获得向华为出口智能手机显示屏的许可
集成氮化镓电机驱动器分析
土壤养分检测仪的功能特点都有哪些
在FPGA上优化实现复数浮点计算
锐驰智光荣登2022年度北京“专精特新”企业