ScriptName "WaitBusDataChainged" ScriptAuthor "(dA)" ScriptVersion "(7)" // Beschreibung Var b : Buffer[10]; Var wWatchsize : Word; Var bWatchsize : Byte; Var Timeout : Word; MoveConst(Timeout, 1000); // Pfad: communication -> wait bus data change with timeout // WaitBusDataChanged ( v1 , v2 ) ; // v1 = Timeout (w) // v2 = Watchsize (w) // Parameter Typ (b=Byte, w=Word, l=Long, B=Buffer) und Beschreibung // Feldbus-Seite -> Ja // RS-Seite // Intern // min value = ( Timeout = 0 => wait bus data changed ) // max value = Timeout = 0xFFFF => ca. 18 min. // min value = ( Watchsize = 0 => Error 40 ) // max value = Watchsize = 0xFF für Byte Variable // Beispiel: BusStart ; Wait ( Bus_Active ) ; Get ( BusInputSize , bWatchsize ) ; Convert ( bWatchsize , Byte , wWatchsize , Word ) ; : Start ; // 1. Vorher // Timeout = 1000 ms // User change BusIn Buffer : 00 00 MoveConst(Timeout, 1000); WaitBusDataChanged ( Timeout , wWatchsize ) ; // Nacher // Error No 2 for TimeOut, it is node // 2. Vorher // User change BusIn Buffer : 00 01 WaitBusDataChanged ( Timeout , wWatchsize ) ; // Nacher // No Error // 3. Vorher // Timeout = 0 ms // User change BusIn Buffer : 00 00 MoveConst(Timeout, 0); WaitBusDataChanged ( Timeout , wWatchsize ) ; // Now user change BusIn Buffer to : 00 01 // Nacher // BusIn Buffer != b Buffer ReadBus ( b[0] , bWatchsize ) ; // Nacher // BusIn Buffer == b Buffer // 4. Vorher // Timeout = 1000 ms // User change BusIn Buffer : 00 00 MoveConst(Timeout, 1000); MoveConst(wWatchsize, 0); // size 0 is not allowed, you will get an error 0x10 WaitBusDataChanged ( Timeout , wWatchsize ) ; // Nacher // Error 40 (0x28) = EXEC_PARA_RANGE_ERROR jump : Start ;