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

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

3天内不再提示

西门子博途之SCL常量的运算运用

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2024-01-24 11:21 次阅读

有类型和无类型常量的解释

常量是具有固定值的数据,其值在程序运行期间不能更改。常量在程序执行期间可由各种程序元素读取,但不能被覆盖。常量值有指定的表示法,具体取决于数据类型和数据格式。分为有类型和无类型的表示法。

建议在数学函数中不要混用有类型和无类型常量,否则可能会发生不需要的隐式转换,从而导致生成不正确的值。

编程示例

在以下编程示例中,可以看到使用有类型和无类型常量的运算。

创建一个 SCL 函数块并将其命名为“FB_MathsFunctions”。

在块接口的“Temp”部分声明“Variable_DINT”变量。

编写以下程序代码

Variable_DINT := INT#1 +50000;

在此数学运算中,将有类型常量 INT#1 与无类型常量 50000 相加。无类型常量 50000 在软件中将带黄色下划线,指示常量值超出了 INT 数据类型允许的范围。

要查看结果,请转至在线。

通过右键单击“编译 》 软件(仅更改)”(Compile 》 Software (only changes) 命令执行此命令来编译 SCL 函数块“FB_MathsFunctions”。

使用“下载到设备 》 软件(仅更改)”(Download to device 》 Software (only changes)) 命令下载块。

转至在线并监视块。

有类型常量的数据类型定义加法的数据类型。这意味着加法是在 INT 数据类型区域中执行。在第一步中,无类型常量 50000 将隐式转换为 INT 数据类型。但这种转换会导致生成负值 (-15536)。然后该值将添加到有类型常量 (INT#1)。结果是 -15535。由于将写入加法运算结果的变量被声明为 DINT 数据类型,因此数字 -15535 将隐式转换为 DINT 数据类型,并写入到变量“Variable_DINT”。但结果仍为负数。

1. 可能的解决方案

避免得到错误结果的一种方法是两个常量都采用有类型常量。如果两个常量都采用有类型常量,较长的数据类型将确定计算结果。

在“FB_MathsFunctions”SCL 函数块中编写以下程序代码:

在此计算操作中,将有类型常量 INT#1 与有类型常量 DINT#50000 相加。

要查看结果,请转至在线。

通过右键单击“编译 》 软件(仅更改)”(Compile 》 Software (only changes) 命令执行此命令来编译 SCL 函数块“FB_MathsFunctions”。

使用“下载到设备 》 软件(仅更改)”(Download to device 》 Software (only changes)) 命令下载块。

转至在线并监视块。

常量 INT#1 将转换为 DINT 数据类型,并且两个常量的相加将在 DINT 数据类型区域中执行。

2. 可能的解决方案

避免得到错误结果的另一种方法是两个常量都采用无类型常量。如果两个常量都采用无类型常量,它们在当前 CPU 上将被解释为最宽的可能数据类型。这意味着在 S7-1500 系列 CPU上,这两个常量都解释为 LINT 数据类型。

在“FB_MathsFunctions”SCL 函数块中编写以下程序代码:

在此计算操作中,将无类型常量 1 与无类型常量 50000 相加。

要查看结果,请转至在线。

通过右键单击“编译 》 软件(仅更改)”(Compile 》 Software (only changes) 命令执行此命令来编译 SCL 函数块“FB_MathsFunctions”。

使用“下载到设备 》 软件(仅更改)”(Download to device 》 Software (only changes)) 命令下载块。

转至在线并监视块。

常量 1 和 50000 将解释为 LINT 数据类型,相加的结果将再次转换为 DINT 数据类型。

审核编辑:黄飞

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

    关注

    94

    文章

    3035

    浏览量

    115798
  • 函数
    +关注

    关注

    3

    文章

    4329

    浏览量

    62576
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13618
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17059

原文标题:西门子博途:使用 SCL 中的常量进行计算

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

收藏 人收藏

    评论

    相关推荐

    北京回收西门子组态软件

    回收西门子变频器SINAMICS V10系列变频器回收西门子触摸屏回收西门子组态软件回收西门子
    发表于 05-27 12:16

    浅谈西门子PLC的“SCL语言”编程

    介绍西门子PLC的“SCL语言”编程,相关编程代码
    发表于 01-22 17:25 0次下载

    西门子大赛1200电梯参考程序

    西门子大赛1200电梯参考程序,V13文件.有需要的加油!
    发表于 06-22 15:56 183次下载

    西门子SCL编程:滚动数据记录

    责任编辑:xj 原文标题:SCL编程实例:滚动数据记录 文章出处:【微信公众号:PLC技术圈】欢迎添加关注!文章转载请注明出处。  
    的头像 发表于 12-28 09:16 4110次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b><b class='flag-5'>SCL</b>编程:滚动数据记录

    西门子PLC中使用SCL语言编程的技巧

    西门子PLC中使用SCL语言编程的技巧说明。
    发表于 04-22 11:15 65次下载

    浅谈西门子PLC的SCL语言编程

    西门子PLC的SCL语言编程说明。
    发表于 04-22 14:39 47次下载

    浅谈西门子SCL编程

    浅谈西门子SCL编程资料免费下载。
    发表于 04-23 10:44 27次下载

    西门子PLC编程软件下载

    西门子PLC编程软件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控论坛有下载密码www.jx-gongkong.com
    发表于 03-01 11:04 68次下载

    如何在平台调试西门子G120变频器

      随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    的头像 发表于 04-25 10:17 2.9w次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器

    西门子1200/1500PLC单按钮启停控制10种设计方法

    西门子1200/1500PLC单按钮启停控制10种设计方法
    的头像 发表于 08-31 09:14 8056次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC单按钮启停控制10种设计方法

    西门子plc单按钮启停的十种方法(1200/1500PLC)

    西门子1200/1500PLC单按钮启停控制10种设计方法
    发表于 08-31 09:15 6609次阅读
    <b class='flag-5'>西门子</b>plc单按钮启停的十种方法(<b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC)

    如何在平台调试西门子G120变频器

    随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    发表于 09-07 12:50 4942次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器

    西门子使用常量的示例

    常量是具有固定值的数据,其值在程序运行期间不能更改。常量在程序执行期间可由各种程序元素读取,但不能被覆盖。不同的常量值通常会指定相应的表示方式,具体取决于数据类型和数据格式。类型与非类型表示方式不同。
    的头像 发表于 09-11 10:24 2623次阅读

    西门子SCL练习1:使用FC计算平均值

    西门子SCL练习1:使用FC计算平均值
    的头像 发表于 01-02 10:25 2771次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b>图<b class='flag-5'>SCL</b>练习1:使用FC计算平均值

    西门子:全局用户常量的规则

    常量值可以通过用户常量的帮助保存。通常,控制器中有 OB、FC 和 FB 的局部常量和整个用户程序的全局常量
    发表于 01-16 09:28 2043次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>:全局用户<b class='flag-5'>常量</b>的规则