您现在所在的是:

西门子SIEMENS

回帖:5个,阅读:127 [上一页] [1] [下一页]
12683
346953791
文章数:3096
年度积分:125
历史总积分:12683
注册时间:2011/5/4
发站内信
发表于:2026/1/29 22:58:53
#0楼
就是一个内部变量关联外部浮点数变量,做一个声音报警。结果运行测试没有反应。。这段代码中我都是用内部变量做的。
C脚本:#include "apdefap.h"
void OnPropertyChanged(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,  double  value)
{
// 定义变量:外部浮点数(PLC连接)、内部二进制(WinCC内部)
 float datVal = GetTagFloat("测试1"); // 替换为实际浮点数变量名
 BOOL nbVal = GetTagBit("测试4");     // 替换为实际二进制变量名

 // 阈值判断:浮点数≥3.5置位,≤1.5置位, 否则复位(可修改判断条件:> / < / ≤ / 区间)&&
if(  datVal<= 1.5  &&  datVal>= 3.5  )

 {
   if(nbVal == 0) SetTagBit("测试4", 1); // 置位
 }
 else
 {
   if(nbVal == 1) SetTagBit("测试4", 0); // 复位
 }
}
[此贴子已经被作者于2026/1/29 22:59:28编辑过]
12683
346953791
文章数:3096
年度积分:125
历史总积分:12683
注册时间:2011/5/4
发站内信
发表于:2026/1/29 23:01:24
#1楼
就是要求数值大于3.5时和小于1.5时触发一个内部变量,这个二进制变量做声音报警。在这两个数值中间时不报警。
[此贴子已经被作者于2026/1/29 23:02:09编辑过]
38921
cvlsam 版主
文章数:12619
年度积分:168
历史总积分:38921
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2026/1/30 9:01:55
#2楼
以下是引用3469537912026/1/29 23:01:24的发言:
就是要求数值大于3.5时和小于1.5时触发一个内部变量,这个二进制变量做声音报警。在这两个数值中间时不报警。
[此贴子已经被作者于2026/1/29 23:02:09编辑过]
if(  datVal<= 1.5  &&  datVal>= 3.5  )

{
  if(nbVal == 0) SetTagBit("测试4", 1); // 置位
}
else
{
  if(nbVal == 1) SetTagBit("测试4", 0); // 复位
}
}

您的这段程序的意义是:
datVal在区间内且nbVal=False,那么 测试4:=TRUE
datVal在区间外且nbVal=True,那么  测试4:=False

看来您需要整理一下思路重新理一下if语句的逻辑判断了。

Good Luck~
132
Brainy_fa
文章数:105
年度积分:132
历史总积分:132
注册时间:2023/1/6
发站内信
发表于:2026/1/30 9:53:54
#3楼
以下是引用3469537912026/1/29 23:01:24的发言:
要求数值大于3.5时和小于1.5时触发一个内部变量
[此贴子已经被作者于2026/1/29 23:02:09编辑过]
应该表述为:要求数值大于3.5时小于1.5时触发一个内部变量
所以  把if(  datVal<= 1.5  &&  datVal>= 3.5  )
改为    if(  datVal<= 1.5  ||  datVal>= 3.5  )
958
小猫鱼MAWheF
文章数:154
年度积分:246
历史总积分:958
注册时间:2016/8/6
发站内信
发表于:2026/1/31 8:39:22
#4楼
表达式错了
12683
346953791
文章数:3096
年度积分:125
历史总积分:12683
注册时间:2011/5/4
发站内信
发表于:2026/1/31 14:24:16
#5楼
以下是引用Brainy_fa2026/1/30 9:53:54的发言:
以下是引用3469537912026/1/29 23:01:24的发言:
要求数值大于3.5时和小于1.5时触发一个内部变量
[此贴子已经被作者于2026/1/29 23:02:09编辑过]
应该表述为:要求数值大于3.5时小于1.5时触发一个内部变量
所以  把if(  datVal<= 1.5  &&  datVal>= 3.5  )
改为    if(  datVal<= 1.5  ||  datVal>= 3.5  )
好的,感谢指点。。
此帖发自手机工控论坛

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2026 Gkong.com, All Rights Reserved

62.4004