0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

对于FC或FB中的临时变量使用

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-11-07 16:50 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

很多初学者容易将 FC 及FB 相混淆,认为 FB 仅仅是比 FC 多了一个背景数据块,这种认识是非常危险的。在 STEP7 的关于 FC 的描述是这样的:

FC 是一个没有存储空间的逻辑块。FC 的临时变量存储在本地数据堆栈中,这些数据在 FC 执行完毕后将会丢失。为了永久的保存数据,FC 可以使用共享数据块。

由于 FC 没有自己的存储空间,所以必须指定实参给它的参数(这就是为什么 FC 的输入输出管脚必须填写参数的原因)。FC 的临时变量(位于本地数据堆栈中)是无法指定初始值的(由于本地数据堆栈是由系统自动动态使用的)。为了更形象的说明这一点,我们来看下面的例子,此例子对 L 堆栈在程序调用时的分配进行了详细的讲解:

L 堆栈永远以地址“0”开始。在 L 堆栈中,会为每个 FC 提供一定地址空间,作为存放每个块所拥有的固有数据或局部数据。当某个块终止时,那么它的空间随之也被重新释放出来。指针总是指向当前打开块的第一个字节。

运行等级 L 堆栈中的字节数 指针
调用OB1(带有 20 个字节的系统固有数据和局部数据的 10 个附加字节) 30 0
调用 FC1(带有 30 个字节的局部数据)
30 个字节 (OB1) + 30 个字节 (FC1)
60 30
调用 FC20(带有 20 个字节的局部数据)
60 个字节 (OB1 + FC1) +20 个字节 FC10
80 60
调用 FC21(带有 20 个字节的局部数据)
60 个字节 (OB1 + FC1) +20 个字节 FC11
80 60
调用 FC2(带有 50 个字节的局部数据)
30 个字节 (OB1) +50 个字节 (FC2)
80 30
调用 FC30(带有 10 个字节的局部数据)
80 个字节 (OB1 + FC2) +10 个字节 FC20
90 80

由上面的例子可以看出:对于FC20 曾经使用过的系统中 L 堆栈 60-80 区间(FC20 中地址范围为 LB0-LB19)在 FC20 调用结束后,被提供给 FC21 使用(FC21 中地址范围同样为 LB0-LB19)。 对于 FC 的临时变量认识不清晰,用户在对临时变量的使用当中,也经常会出现一些错误,下面将使用一个例子非常直观地说明上面的问题

程序原目的:

在 OB1 在程序中调用FC20 后立即调用 FC21

FC20 中将 20 赋值给临时变量 FC20_TEMP1,将 21 赋值给临时变量 FC20_TEMP2FC21 中将 FC21_TEMP1,FC21_TEMP2 相加

程序分析:我们发现 FC20 中的临时变量曾经出现的数值(20,21)被 FC21 中的临时变量FC21_TEMP1, FC21_TEMP2 得到了,如果直接使用这两个临时变量进行加法操作,可以得到结果 41。对于编程人员来说,临时变量必须要在所在程序段中赋值,而后使用。用户对此例中的 FC21_TEMP1, FC21_TEMP2 必须先做清零处理,否则其在使用前即可能拥有数值。

016556ba-5e77-11ed-a3b6-dac502259ad0.png

结论:对于 FC 或 FB 中的临时变量,不要希望将本次调用的数值可以存储在里面以供下次程序调用使用,因为这些临时变量所使用的 L 堆栈空间在 FC 或 FB 调用结束就释放给系统了,其它后续程序可以任意使用。所以下列用法都是错误的:

将临时变量用于上升/下降沿指令

将临时变量用于自保持逻辑

临时变量未在所在程序段中赋值,直接使用

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4881

    浏览量

    90251
  • 堆栈
    +关注

    关注

    0

    文章

    183

    浏览量

    20571

原文标题:FC 中临时变量的使用:

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何为 S32DS 的特定变量(RAM、闪存、数据闪存)强制使用特定内存区域?

    我正在使用S32K358并使用S32 设计工作室 (S32DS)作为我的 IDE。我想预留特定内存区域对于某些变量,并确保这些分配是在构建期间不受编译器链接器的影响——尤其是当项目后期引入新
    发表于 04-16 06:52

    飞凌嵌入式ElfBoard-环境变量之添加修改环境变量putenv

    被当作环境变量的一部分了。这就是需要注意的点,putenv() 函数直接使用传入的字符串,并不会复制它。传入的内容在函数退出时失效被修改,则环境变量的值也会变得不确定。对于本例而言,
    发表于 03-26 09:22

    用户对变量寄存器进行位操作的方法

    嵌入式系统总是要用户对变量寄存器进行位操作。给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作,要保持其它位不变。 考察点:
    发表于 12-23 08:16

    WTK6900FC鼾声识别芯片在四种助眠场景的应用

    WTK6900FC鼾声识别芯片在四种助眠场景的应用 “跟你说个搞笑的事情,我刚才午睡的时候被我自己的呼噜声吵醒了...”这是真实发生在身边的事情。 ​ 过去对于打呼噜这件事情,大家的态度就是“累了
    的头像 发表于 12-02 16:40 836次阅读
    WTK6900<b class='flag-5'>FC</b>鼾声识别芯片在四种助眠场景<b class='flag-5'>中</b>的应用

    常用变量的介绍

    ,延长了变量生存空间;用在函数上表示仅限当前文件使用 register:将频繁使用的变量放到通用寄存器,避免频繁访问内存,直接从寄存器取值,提高cpu的工作效率;注:只能将局部
    发表于 11-21 07:05

    变量控件实验

    目录1、实验目的2、实验设备3、实验步骤3.1新建工程3.2新建画面3.3添加控件3.4模拟工程3.5硬件验证1、实验目的单片机PLC的串口与智能显示卡相连驱动大尺寸VGA显示器电视机进行
    的头像 发表于 11-20 15:04 2224次阅读
    <b class='flag-5'>变量</b>控件实验

    lc-fc光纤跳线什么意思

    LC-FC光纤跳线是一种两端分别采用LC和FC连接器的光纤跳线光缆,以下是对其的详细介绍: 一、连接器类型及特点 LC连接器: 体积小巧:LC连接器采用模块化插孔(RJ)闩锁机理制成,插针和套筒
    的头像 发表于 10-09 11:03 2605次阅读

    fc跳线是圆口还是方口

    FC跳线在连接时需要通过旋转拧紧的方式进行固定,确保连接的稳固性。 应用场景:FC跳线因其连接稳固、抗震动强的特点,广泛应用于需要高稳定性的通信场景,如通信机房、数据中心和光纤配线架等。在这些环境
    的头像 发表于 09-24 18:37 1139次阅读

    PLCStatic和Temp变量的区别

    大家好,收到粉丝投稿,让博主讲下Static变量和Temp变量的区别,新入行的兄弟可能会对这两个概念不太能理解。
    的头像 发表于 09-24 14:51 1607次阅读
    PLC<b class='flag-5'>中</b>Static和Temp<b class='flag-5'>变量</b>的区别

    在MG51FB9AE MCU,如何使用LDROM的IAP加载程序MCU在APROM中上传程序?

    在MG51FB9AE MCU,如何使用LDROM的IAP加载程序MCU在APROM中上传程序。
    发表于 08-22 06:29

    SC、LC、FC和ST四种类型哪类价格最贵

    在SC、LC、FC和ST四种类型的光纤跳线FC类型的光纤跳线通常价格相对较高,具体分析如下: FC类型的光纤跳线: 特点:采用金属螺纹套筒连接,具有较高的稳定性和抗拉强度,适用于高
    的头像 发表于 07-25 10:16 1324次阅读

    FC光纤头有什么作用

    FC光纤头在光纤通信系统扮演着至关重要的角色,其核心作用主要体现在以下几个方面: 一、实现光纤的物理连接 FC光纤头通过其圆形设计和螺纹紧固方式,能够与对应的FC耦合器
    的头像 发表于 06-16 10:14 1358次阅读

    FC光纤头和SC光纤头有什么区别

    FC光纤头和SC光纤头在多个方面存在显著区别,以下是对两者的详细比较: 一、外形与结构 FC光纤头: 外形为圆形。 接头内部带有螺纹,通过旋转与FC耦合器相连接,紧固方式为螺丝扣。 通常配有金属
    的头像 发表于 06-16 10:06 3561次阅读

    sc光纤接口和fc光纤口对比

    SC光纤接口和FC光纤接口在形状、连接方式、应用场景等方面存在明显差异,以下是对两者的详细比较: 审核编辑 黄宇
    的头像 发表于 05-23 10:47 3321次阅读
    sc光纤接口和<b class='flag-5'>fc</b>光纤口对比

    fc/lc/sc光纤分别是什么头

    ,但却能确保连接的稳定性和可靠性。 应用范围:FC接头常用于光纤配线架,特别是在电信网络,特别是在需要较高连接稳定性的场合,如航空航天等。其外部加强件采用金属套,坚固耐用,可插拔次数比塑料材质的接头多。 SC接头 外观形状:SC接头外壳
    的头像 发表于 05-14 10:20 3636次阅读