设为首页收藏本站积分获取及使用技巧附件上传须知Intouch脚本函数之For循环语句使用说明

追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始


总共8061条微博

动态微博

站内全文搜索,由百度和追梦工控论坛合作提供
查看: 10904|回复: 12

Intouch脚本函数之For循环语句使用说明

  [复制链接]
  • TA的每日心情
    开心
    2022-10-11 10:52
  • 签到天数: 787 天

    [LV.10]国防部长

    发表于 2013-12-13 10:53:52 | 显示全部楼层 |阅读模式

    上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
    发帖回帖赚金币兑换下载积分。上传附件须知点击进入

    ×

    马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

    已有帐号?  点击登录   或者        

    支付宝扫一扫领红包
    本帖最后由 黑羽盗一 于 2013-12-13 10:58 编辑

    Intouch脚本函数之For循环语句使用说明

    For循环可以反复执行一段代码。InTouch HMI 仅支持 FOR 循环。FOR 循环按所监视的每次循环迭代产生的递增或递减的数值循环变量值来进行。循环一直执行到循环变量值达到设定值。

    For 语法如下:
    FOR    LoopTag = StartExpression    TO    EndExpression    [STEP ChangeExpression]
    ... 语句或另一个 FOR 循环 ...
    NEXT;

    • StartExpression, EndExpression 与ChangeExpression 共同定义迭代次数。
    • StartExpression 设置循环范围的开始值。EndExpression 设置循环范围的结束值。
    • STEP ChangeExpression 可选择设置每次循环迭代过程中循环标记所递增或递减的值;如果不指定此值,则使用缺省值 1,即每次循环对LoopTag加1。

    例子e.g:
       FOR i=1 TO 100 STEP 2
    ...........语句
       NEXT;
    //表示每次循环i加2,总计循环50次

    执行 FOR 循环时, InTouch HMI:
    1 将 LoopTag 设置为 StartExpression 的值。
    2 测试 LoopTag 是否大于 EndExpression。如果是,InTouch HMI 退出循环。(如果ChangeExpression 为负数,则 InTouch HMI 测试 LoopTag 是否小于EndExpression)。
    3 执行循环内的语句。
    4 按 ChangeExpression 的值(除非另外指定,否则设为 1)递增 LoopTag。
    5 重复步骤 2 到 4直到LoopTag达到 EndExpression的值。

    使用 FOR 循环时请记住以下规则:
    • FOR 循环可以嵌套。最大嵌套级数取决于可用的内存与系统资源。
    • 对于每个 FOR 语句,必有一个 NEXT 结束语句。与If...else语句相同,在同一嵌套级别中, NEXT 语句总是应用于前面最接近的 FOR 语句。
    • LoopTag 必须是数值标记(或局部变量),比如整形标记。
    • StartExpression、EndExpression 以及ChangeExpression 必须是赋值为数值结果的有效表达式,比如整形标记。
    • 如果 ChangeExpression 为正, EndExpression 必须大于 StartExpression ;反之如果 ChangeExpression 为负,StartExpression 必须大于 EndExpression。否则循环不会开始。


    强制结束循环
    您可以通过调用语句  EXIT FOR;  在任何时间退出循环。此语句使脚本继续执行紧接着循环 NEXT 语句后的其他语句。

    示例
    下面的代码段使用循环将大量的虚拟记录插入数据库表。如果插入记录时发生错误,则放弃循环以防止产生更多错误。
    FOR Counter = 1 TO 1000
    ResultCode = SQLInsert(ConnectionID, "BatchDetails","BindList1");
    IF ResultCode <> 0 THEN
    LogMessage("Error creating records!Aborting...");
    EXIT FOR;
    ENDIF;
    NEXT;


    循环对其它运行时进程的影响
    执行 FOR 循环时, WindowViewer 中的所有其它运行时进程都暂停。包括以下进程:
    &#8226; 屏幕更新(动画链接、值显示、趋势等)。到循环完成之前不会发生任何移动,因此不能给动画对象使用 FOR循环。
    &#8226; I/O 通讯。例如,如果修改 FOR 循环中 I/O 标记的值,则只有最终的迭代后面的值才会写入 I/O 设备。
    &#8226; 其它脚本,包括异步 QuickFunction。
    您可以通过将 FOR 循环放入异步 QuickFunction 来避免暂停其它运行时进程。


    循环执行的时间限制
    为避免无限循环,程序设置了一个时间限制, FOR 循环必须在这个时间限制内完成执行否则WindowViewer 会自动终止循环它,并将一条关于终止的消息写入 Log Viewer中。
    默认缺省的循环时间限制为 5 秒。可以通过向应用程序目录中的 intouch.ini文件添加下面这行以对它进行自定义循环时间:
    LoopTimeout=x
    将 x 替换成以秒为单位的时间限制。

    备注: 时间限制仅在循环的 NEXT 结束循环语句中检查。因此,循环的第一次总是会执行,即便它花费的时间比时间限制更长。


    For循环的示例
    以下脚本通过一个简单的循环与一个间接标记,使用 0 值来初始化 100 个标记(Tag001 到 Tag100):
    DIM Counter AS INTEGER;
       FOR Counter = 1 TO 100
    IndirectInteger.Name = "Tag" + Text(Counter, "000");
    IndirectInteger.Value = 0;
       NEXT;

    以下脚本通过两个嵌套的循环与一个间接标记,使用 0 来初始化 1000 个标记(Line01_Tag001 到 Line10_Tag100):
    DIM LineCounter AS INTEGER;
    DIM TagCounter AS INTEGER;
    FOR LineCounter = 1 TO 10
          FOR TagCounter = 1 TO 100
          IndirectInteger.Name = "Line" +Text(LineCounter, "00") + "_Tag" +Text(TagCounter, "000");
          IndirectInteger.Value = 0;
          NEXT;
    NEXT;


    Intouch FOR循环语句介绍结束


    让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口






    +1
    10918°C
    12
    • fashion
    • ZSM961450
    • wo127200
    • wo127200
    • shenglong636
    过: 他们

    升级  20%

  • TA的每日心情
    奋斗
    2014-7-22 09:33
  • 签到天数: 8 天

    [LV.3]连长

    发表于 2014-5-23 21:40:16 | 显示全部楼层
    沙发是我的,哈哈,。。。

    头像被屏蔽
  • TA的每日心情
    开心
    2018-2-19 13:33
  • 签到天数: 164 天

    [LV.7]师长

    发表于 2014-5-28 19:22:37 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽

    升级  2.5%

  • TA的每日心情
    郁闷
    2014-10-27 14:51
  • 签到天数: 1 天

    [LV.1]工兵

    发表于 2014-10-27 16:31:25 | 显示全部楼层
    小手一抖积分拿走

    升级  2.5%

  • TA的每日心情
    郁闷
    2014-10-27 14:51
  • 签到天数: 1 天

    [LV.1]工兵

    发表于 2014-10-27 16:31:57 | 显示全部楼层
    小手一抖积分拿走

    升级  38%

  • TA的每日心情
    开心
    2022-6-22 08:10
  • 签到天数: 56 天

    [LV.5]团长

    发表于 2014-11-8 20:44:55 | 显示全部楼层
    楼主的帖 感谢发布资源综合帖子怎么样?赶紧试试这里的快速回复给楼主点评论吧

    升级  40%

  • TA的每日心情
    开心
    2014-11-22 16:16
  • 签到天数: 1 天

    [LV.1]工兵

    发表于 2014-11-22 16:21:40 | 显示全部楼层
    这个东西太有帮助了

    升级  90%

  • TA的每日心情
    开心
    2014-12-16 20:12
  • 签到天数: 3 天

    [LV.2]排长

    发表于 2014-12-15 21:50:33 | 显示全部楼层
    感谢楼主分享

    升级  47.5%

  • TA的每日心情
    奋斗
    2015-3-9 17:02
  • 签到天数: 14 天

    [LV.3]连长

    发表于 2015-1-10 09:40:15 | 显示全部楼层
    十分感谢,太有用了

    升级  40%

  • TA的每日心情
    奋斗
    2015-6-28 22:14
  • 签到天数: 1 天

    [LV.1]工兵

    发表于 2015-6-28 22:19:10 | 显示全部楼层
    支付宝扫一扫领红包
    学到了,谢谢分享!!!

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

    关闭

    最新活动上一条 /1 下一条

    小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

    GMT+8, 2024-5-4 10:48 , Processed in 0.102105 second(s), 31 queries , Gzip On, APCu On.

    Created by 工控论坛

    Copyright © 2001-2021, Tencent Cloud & Dreamyiyi.

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