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 数据类型。

审核编辑:黄飞

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

    关注

    92

    文章

    2850

    浏览量

    113778
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 数据类型
    +关注

    关注

    0

    文章

    228

    浏览量

    13499
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    16884

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

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

收藏 人收藏

    评论

    相关推荐

    北京回收西门子组态软件

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

    TIAS7-1200学习笔记

    西门子S7-1200数据类型总结笔记,来源于帮助文档。
    发表于 07-01 11:51

    西门子1200码垛机程序应用

    西门子1200码垛机、立体仓库程序(带注释),程序应用到变频器、触摸屏、步进电机、工业机器人、视觉相机。
    发表于 09-03 07:42

    畅销西门子助听器价格表_西门子助听器价格大全

    畅销西门子助听器价格表_西门子助听器价格大全 1、西门子盒式助听器 AMIGA 176AO Pocket AMIGA 176AO 西门子助听器价格:441元
    发表于 08-23 12:19 1.1w次阅读
    畅销<b class='flag-5'>西门子</b>助听器价格表_<b class='flag-5'>西门子</b>助听器价格大全

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

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

    西门子S7-200使用教程

    西门子S7-200 PLC仿真软件超详细使用教程西门子S7-200使用教程
    发表于 05-06 16:43 0次下载

    西门子是哪个国家的品牌_西门子发明了什么

    本文开始介绍了西门子是哪个国家的品牌以及西门子的发展历史,其次介绍了西门子的发明成果,最后对西门子的家电进行了分析。
    的头像 发表于 04-04 08:45 5.1w次阅读

    博世和西门子哪个好_博世和西门子的关系

    本文开始阐述了博世和西门子的关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的发展。
    的头像 发表于 04-04 09:30 15.2w次阅读

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

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

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

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

    浅谈西门子SCL编程

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

    西门子SCL语言编程系列-写立方根FB块

    由于西门子PLC本身并没有带求立方根的指令,我们用SCL来写一个求立方根的FB块
    的头像 发表于 02-06 15:17 1300次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>SCL</b>语言编程系列-写立方根FB块

    西门子S7 SCL编程知识

    本文可以作为 S7-SCL 编程语言的使用参考资料,希望读者通过对本章的阅读,能够更快更好 地学习 S7-SCL 编程语言。西门子ᨀ供了 S7-SCL 编程语言的详尽手册,在安装 S
    发表于 04-19 17:54 7次下载

    西门子SCL编程实例——周期性运行(更新版)

    我之前写的一篇文章《西门子SCL编程实例——(电机)周期性运行》收到小伙伴反馈。
    的头像 发表于 11-07 09:05 388次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>SCL</b>编程实例——周期性运行(更新版)

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

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