- {{item.name}}
在 STEP 7 (TIA Portal) 软件中,为什么在 SCL 编程时 DInt 格式的加法运算结果不能够正确显示?
- 0
- 675
- 695
描述
在数学运算中,不建议将已定义数据类型和未定义数据类型的常数进行混合运算。这可能导致不必要的隐性转换,从而导致不正确的值。
下 面的例子给出了一条指令运算来解释这种错误的发生。在这里,将已定义数据类型的常数 ("int#1") 和未定义数据类型的常数 ("50000") 相加。在这种情况下,已定义数据类型的常数决定了这个加法的执行方式。数值 50000 首先被转换成 Int 数据类型,这将产生一个负的十进制数值 ("-15536")。然后运算结果 ("-15535") 被转化成 DInt 数据类型,再被分配给变量 "dint_var"。
- dint_var := int#1 + 50000;
使用菜单命令 "Software (rebuild all blocks)" 编译之后,这个加法结果会得到信息 “常数值超出允许范围”。
解决
在指令中改变常数的数据类型,要么都是未定义数据类型,要么都是定义数据类型。在未定义 数据类型的条件下,这些常数会被定义成当前 CPU 最常用的数据类型 (例如 S7-1500 中常用"LInt" ) 。随后执行加法,如果必要就转换为 DInt 类型。如果都定义了数据类型,最常用的数据格式决定了运算结果。所以在这个例子中,Int#1 首先被转换成 DInt#1,然后按照 DInt 进行运算。
举例
- dint_var := 1 + 50000;
- dint_var := Int#1 + dint#50000;
图 01 显示了三个加法的结果。
图 01
上述运算结果也可以使用一个整数变量和一个未定义数据类型的常数。数值 50000 转换成一个整数 (结果是 -15535),以 "int_var" 格式相加再转化为 "dint_var"。
图 02
创建环境
本问题中所涉及的图片建于 STEP 7 (TIA Portal) V13+Upd 2.
关键字
消息 619:247
https://support.industry.siemens.com/cs/cn/zh/view/98278626
剩余80%未阅读,请登录后下载/查看文档
- 评论
-
分享
扫码分享
- 收藏 收藏
- 点赞 点赞
- 纠错 纠错
- 如何确保 SQL 服务在 Windows 10 进行功能更新后能够正确安装?
- 为什么在下载STEP 7 (TIA Portal) V13项目到CPU后仍然无法在S7-1500CPU的display中看到变量监控表?
- 为什么在能够在线访问 S7-1500 CPU 的情况下却不能下载项目?
- 在 STEP 7 (TIA Portal) 软件中,当多个用户在相同时间内执行一个任务时,如何同步 S7-1500 的项目?
- 为什么OPC UA客户端不能按照STEP 7 (TIA Portal)中定义的顺序接收数据?
- 在 STEP 7 (TIA Portal) 中,如何创建(使用 SCL 编程)独立于硬件的时钟?
- 为什么在打开 STEP 7 时不能识别到授权?
- 在WinCC(TIA Portal)项目中,如何正确的使用面板,模板,弹出窗口和滑入窗口?
- Siemens AG提供了哪些支持使得WinCC (TIA Portal)组态的WinCC Runtime Advanced, WinCC Runtime Professional 和面板能够符合 FDA规则?
- 在 STEP 7 (TIA 博途) 中,如何格式化 MMC 或 MC 卡并且为什么会出现 SDB 7 没有装载的提示信息?
{{item.nickName}}