吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 566|回复: 14
上一主题 下一主题
收起左侧

[经验求助] 关于昆仑通态脚本的问题

[复制链接]
跳转到指定楼层
楼主
jsxzst 发表于 2024-7-5 09:37 回帖奖励
200吾爱币
各位大佬,我问一个问题,就是昆仑通态获取到的变量值如何让它保存到显示框内后续还不变化,就是我加到13的时候,等待十秒钟,保存一次数值到第一个显示框,保存后不变化,然后十五秒后这个值保存到第二个显示框内,不变化,实际上变量是一直变化的,我只是想保存那一瞬间的值,主要是现在!DataGetFloat(Data1,Float),获取到的值一直在变化,我不是用的PLC,如果用PLC的话 这个问题我就可以略过了,因为成本问题,所以就一个压力变送器,所以不用PLC,与昆仑通态直连的
下面是我写的脚本,大家帮看一下



IF 压力总>=13.34 THEN
!TimerRun(1)
计时=!TimerValue(1)
ENDIF
IF 计时>10 THEN
!DataGetFloat("压力总",稳定压力)
!TimerStop(1)
ENDIF
IF 稳定压力>0 THEN
!TimerRun(2)
计时=!TimerValue(2)        
ENDIF
IF 计时>15 THEN
!DataGetFloat("压力总",最终压力)
!TimerStop(1)
ENDIF
IF 最终压力>0 THEN
压差=稳定压力-最终压力        
ENDIF
IF 压差=0 THEN
检测结果=""
ELSE
IF 0<压差 AND 压差<0.08 THEN
检测结果="合格"        
ELSE
检测结果="不合格"
ENDIF
ENDIF

最佳答案

查看完整内容

// 定义标志位控制何时更新显示框 Bool 需要更新显示框1 = False; Bool 需要更新显示框2 = False; // 定义变量存储显示框的值 Float 显示框1; Float 显示框2; // 获取实时变量的值 压力总 = !DataGetFloat("实时变量"); // 检查是否需要更新显示框1 IF 压力总 >= 13.34 AND 不再更新显示框1 THEN 需要更新显示框1 = True; !TimerRun(1); // 启动计时器1,用于10秒延时 E ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
shuisanyue 发表于 2024-7-5 09:37
本帖最后由 shuisanyue 于 2024-7-5 16:14 编辑


// 定义标志位控制何时更新显示框
Bool 需要更新显示框1 = False;
Bool 需要更新显示框2 = False;
// 定义变量存储显示框的值
Float 显示框1;
Float 显示框2;


    // 获取实时变量的值
    压力总 = !DataGetFloat("实时变量");

    // 检查是否需要更新显示框1
    IF 压力总 >= 13.34 AND 不再更新显示框1 THEN
        需要更新显示框1 = True;
        !TimerRun(1);  // 启动计时器1,用于10秒延时
    ENDIF;

    // 如果计时器1运行完毕,且需要更新显示框1,则保存值并锁定
    IF 需要更新显示框1 AND !TimerValue(1) >= 10 THEN
        显示框1 = 压力总;  // 保存值到显示框1
        不再更新显示框1 = True;  // 锁定显示框1
        需要更新显示框1 = False;
        !TimerStop(1);  // 停止计时器1
    ENDIF;

    // 检查是否需要更新显示框2
    IF 不再更新显示框1 AND 需要更新显示框2 = False THEN
        需要更新显示框2 = True;
        !TimerRun(2);  // 启动计时器2,用于15秒延时
    ENDIF;

    // 如果计时器2运行完毕,且需要更新显示框2,则保存值并锁定
    IF 需要更新显示框2 AND !TimerValue(2) >= 15 THEN
        显示框2 = 压力总;  // 保存值到显示框2
        不再更新显示框2 = True;  // 锁定显示框2
        需要更新显示框2 = False;
        !TimerStop(2);  // 停止计时器2
    ENDIF;


3#
boy666 发表于 2024-7-5 10:51
4#
 楼主| jsxzst 发表于 2024-7-5 11:21 |楼主
5#
shuisanyue 发表于 2024-7-5 11:23
本帖最后由 shuisanyue 于 2024-7-5 11:25 编辑

不知道能不能解决楼主的问题,我试一试……供参考

在昆仑通态这样的工业自动化软件中,通常可以通过脚本编程来实现特定逻辑,包括数据的读取、处理和显示。根据您的描述,您想要在变量值达到一定条件后,将这个瞬时值保存到显示框中,并确保这个值不再变化。以下是一个简化的示例,展示如何实现这一功能:

定义变量:定义一些变量来存储瞬时值和显示框的值。
Float 瞬时值;  // 用于存储瞬时获取的变量值
Float 显示框1; // 第一个显示框的值
Float 显示框2; // 第二个显示框的值


读取变量值:用昆仑通态的函数来读取实时的变量值。
!DataGetFloat("实时变量", 瞬时值);
条件判断和保存值:当变量值达到特定条件时,执行保存操作。
IF 瞬时值 >= 13 THEN
    // 等待10秒后保存到显示框1
    !TimerDelay(10000); // 延迟10秒,单位为毫秒
    显示框1 = 瞬时值;  // 将瞬时值保存到显示框1
    // 显示框1的值不再变化
ENDIF;


再次判断和保存值:在另一个时间点,将值保存到第二个显示框。
IF 显示框1 > 0 THEN
    // 等待15秒后保存到显示框2
    !TimerDelay(15000); // 延迟15秒,单位为毫秒
    显示框2 = 瞬时值;  // 将瞬时值保存到显示框2
    // 显示框2的值不再变化
ENDIF;


更新显示:昆仑通态中通常会有显示组件来显示这些变量的值,您需要在界面上设置这些显示组件,并将它们与显示框1和显示框2变量关联起来。
6#
 楼主| jsxzst 发表于 2024-7-5 11:28 |楼主
shuisanyue 发表于 2024-7-5 11:23
不知道能不能解决楼主的问题,我试一试……供参考:

在昆仑通态这样的工业自动化软件中,通常可以通过脚 ...

我试着写一下
7#
 楼主| jsxzst 发表于 2024-7-5 11:39 |楼主
shuisanyue 发表于 2024-7-5 11:23
不知道能不能解决楼主的问题,我试一试……供参考:

在昆仑通态这样的工业自动化软件中,通常可以通过脚 ...

试过了 还是不行 显示框的值还是在变化
8#
shuisanyue 发表于 2024-7-5 11:49
jsxzst 发表于 2024-7-5 11:39
试过了 还是不行 显示框的值还是在变化

不知道这个思路行不行

定义标志位:定两个标志位控制何时更新显示框。
Bool 标志位1 = False;  // 控制是否更新显示框1
Bool 标志位2 = False;  // 控制是否更新显示框2

定义显示框变量:定两个变量存储显示框的值。
Float 显示框1;
Float 显示框2;

编写获取数据的逻辑:主循环或定时任务中,获取实时变量的值。
!DataGetFloat("实时变量", 瞬时值);
设置触发条件:当条件满足时,设置标志位,并更新显示框。
IF 瞬时值 >= 13 THEN
    // 触发事件A,等待10秒后保存到显示框1
    标志位1 = True;
    !TimerStart(Timer1, 10000);  // 启动计时器,10秒后触发
ENDIF;




编写计时器到期的逻辑:当计时器到期时,检查标志位,并更新显示框。
IF 标志位1 AND !TimerExpired(Timer1) THEN
    显示框1 = 瞬时值;  // 更新显示框1的值
    标志位1 = False;    // 重置标志位,防止再次更新
ENDIF;

设置第二个触发条件:当第一个显示框的值已经设置后,检查是否可以设置第二个显示框。
IF 显示框1 > 0 THEN
    // 触发事件B,等待15秒后保存到显示框2
    标志位2 = True;
    !TimerStart(Timer2, 15000);  // 启动另一个计时器,15秒后触发
ENDIF;


更新第二个显示框:当第二个计时器到期时,检查标志位,并更新显示框2。
IF 标志位2 AND !TimerExpired(Timer2) THEN
    显示框2 = 瞬时值;  // 更新显示框2的值
    标志位2 = False;    // 重置标志位,防止再次更新
ENDIF;




在界面上设置显示框:在昆仑通态的界面上,将显示框1和显示框2分别与显示框1和显示框2变量绑定。
9#
 楼主| jsxzst 发表于 2024-7-5 13:26 |楼主
shuisanyue 发表于 2024-7-5 11:49
jsxzst 发表于 2024-7-5 11:39
试过了 还是不行 显示框的值还是在变化
不知道这个思路行不行

还是不行  而且脚本里面你这个函数好多都没有
10#
shuisanyue 发表于 2024-7-5 14:08
jsxzst 发表于 2024-7-5 13:26
还是不行  而且脚本里面你这个函数好多都没有

是哪个函数没有啊?发出啦看看
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 17:26

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表