请务必留出一个比通讯周期时间长的间隔,以便在外接设备中执行写入操作。
当通过使用人机界面内部特殊继电器的扫描计数器频繁执行到外接设备上的写入操作时,可能导致通讯错误或系统错误。
当D脚本触发条件所使用的位被设置为“触摸”,且该位在D脚本处理期间置OFF时,反复按下触摸区时使用的时序可以防止检测到位的上升沿。
D脚本触发会比较以前读取的值和当前读取的值来确定触发现在是否为“真”。但是,在一次扫描过程中,保存在触发操作过程中使用的位地址中的值将保持不变,即使该值在执行过程中被更改。仅在下一次扫描开始后才会读取新值。
例如,使用触摸来将触发位(LS010000)置ON,D脚本将该值置OFF:
触发条件:位ON [#INTERNAL] LS010000
表达式:clear ([b:[#INTERNAL]LS010000])
D脚本处理时序图
例如,如果未使用D脚本触摸时序而只是执行检测,处理如下。
使用if()语句来检测触发:
使用if语句来决定触摸操作是否进行了置位。每次运行if()语句时,读取数值并进行比较检查。
触发条件:BitON[#INTERNAL]LS203800 *1])
脚本表达式区:if([b:[#INTERNAL]LS010000]==1)
{
clear([b:[#INTERNAL]LS010000])
:
:
*1 人机界面内部计数器。每次当显示画面上设置的部件进行处理时计数器会增加一次。
当使用以前的D脚本时,即使连续触摸,脚本也只有在条件满足时才运行。如下面的时序图所示,每次显示扫描时读取一次数值并进行匹配检查,如果匹配,无论以前的值如何,脚本都会运行。
D脚本处理时序图