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