File name: CiA447_GW_HBlost_V100.esat Full name: CiA 447 GW Test HB loss detection Version: V01.00 of 04-MAR-2015 Test ID: 0x0001 (1d) DUTnodeID: 1 Functions: Smart_ID CiA_447_ID Resources: 4 variables, 0 buffers, 1000us timer resolution Timeout: 30.000s Descript.: Testing if heartbeat lost is reported after 750ms State 0001h: (START) Start of test, start sequence ALWAYS ON RECEIVE {0701h, 1,05h,00h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,00h,00h,00h,00h,00h,00h,00h} LOG: (PASS) "Gateway is operational Alloc Var1 = 0" VAR ACTION: ALLOC VAR[1] = 0 GOTO State 0002h Prepare for test State 0002h: Prepare for test ALWAYS LOG: (IDLE) "Alloc Var2 = 10" VAR ACTION: ALLOC VAR[2] = 10 GOTO State 0101h State 0101h: ALWAYS LOG: (IDLE) "Alloc Var4" VAR ACTION: ALLOC VAR[4] = 0 GOTO State 0104h Init Var4 State 0104h: Init Var4 ALWAYS LOG: (IDLE) "Start Tim3" VAR ACTION: ALLOC TIMER VAR[3] = 0 GOTO State 0102h Init Var State 0102h: Init Var ALWAYS ON TRANSMIT {070Eh,1,00h,00h,00h,00h,00h,00h,00h,00h} LOG: (IDLE) "Boot up node 14 Var1 = 0x7F" VAR ACTION: VAR[1] = 127 GOTO State 0103h Node 14 HB State 0103h: Node 14 HB IF (VAR[1] == 5) THEN ON TRANSMIT {070Eh,1,05h,00h,00h,00h,00h,00h,00h,00h} WITH REPEAT TIME_MS[200.000] LOG: (IDLE) "IF Var1 == 5 HB OP, Var2--" VAR ACTION: VAR[2] = VAR[2] - 1 IF (VAR[1] == 127) THEN ON TRANSMIT {070Eh,1,7Fh,00h,00h,00h,00h,00h,00h,00h} WITH REPEAT TIME_MS[200.000] LOG: (IDLE) "IF Var1 == 7F HB PreOP, Var2--" VAR ACTION: VAR[2] = VAR[2] - 1 ALWAYS ON RECEIVE {0000h, 2,01h,0Eh,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,00h,00h,00h,00h,00h,00h} LOG: (PASS) "NMT OP Var1 = 5" VAR ACTION: VAR[1] = 5 ALWAYS ON RECEIVE {024Dh, 8,40h,18h,10h,02h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 1018,2" VAR ACTION: VAR[4] = 101802 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,18h,10h,04h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 1018,4" VAR ACTION: VAR[4] = 101804 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,18h,10h,03h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 1018,3" VAR ACTION: VAR[4] = 101803 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,00h,60h,03h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 6000,3" VAR ACTION: VAR[4] = 600003 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,00h,60h,02h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 6000,2" VAR ACTION: VAR[4] = 600002 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,00h,60h,01h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 6000,1" VAR ACTION: VAR[4] = 600001 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,00h,60h,04h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 6000,4" VAR ACTION: VAR[4] = 600004 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,00h,10h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 1000,0" VAR ACTION: VAR[4] = 100000 GOTO State 0109h SDOreq ALWAYS ON RECEIVE {024Dh, 8,40h,18h,10h,01h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,FFh,FFh,FFh,FFh,FFh,FFh} LOG: (IDLE) "SDOreq 1018,1" VAR ACTION: VAR[4] = 101801 GOTO State 0109h SDOreq IF (VAR[3] >= 500000) THEN LOG: (IDLE) "IF Tim3 >= 500" VAR ACTION: NONE GOTO State 0105h OP check IF (VAR[2] == 0) THEN LOG: (PASS) "IF Var2 == 0 Stop HB Init Tim3" VAR ACTION: VAR[3] = 0 GOTO State 0106h Stop HB State 0109h: SDOreq IF (VAR[4] == 600002) THEN ON TRANSMIT {01CDh,8,43h,00h,60h,02h,00h,00h,00h,00h} LOG: (IDLE) "SDOresp 6000,2" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 600001) THEN ON TRANSMIT {01CDh,8,43h,00h,60h,01h,00h,00h,00h,00h} LOG: (IDLE) "SDOresp 6000,1" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 600004) THEN ON TRANSMIT {01CDh,8,43h,00h,60h,04h,00h,00h,00h,00h} LOG: (IDLE) "SDOresp 6000,4" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 600003) THEN ON TRANSMIT {01CDh,8,43h,00h,60h,03h,00h,00h,00h,00h} LOG: (IDLE) "SDOresp 6000,3" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 101804) THEN ON TRANSMIT {01CDh,8,43h,18h,10h,04h,78h,56h,34h,12h} LOG: (IDLE) "SDOresp 1018,4" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 101801) THEN ON TRANSMIT {01CDh,8,43h,18h,10h,01h,41h,53h,45h,01h} LOG: (IDLE) "SDOresp 1018,1" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 100000) THEN ON TRANSMIT {01CDh,8,43h,00h,10h,00h,BFh,01h,01h,00h} LOG: (IDLE) "SDOresp 1000,0" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 101803) THEN ON TRANSMIT {01CDh,8,43h,18h,10h,03h,01h,00h,01h,00h} LOG: (IDLE) "SDOresp 1018,3" VAR ACTION: NONE GOTO State 0103h Node 14 HB IF (VAR[4] == 101802) THEN ON TRANSMIT {01CDh,8,43h,18h,10h,02h,47h,04h,47h,04h} LOG: (IDLE) "SDOresp 1018,2" VAR ACTION: NONE GOTO State 0103h Node 14 HB State 0105h: OP check IF (VAR[1] == 5) THEN LOG: (IDLE) "IF Var1 == 5 reset Tim3" VAR ACTION: VAR[3] = 0 GOTO State 0103h Node 14 HB ALWAYS LOG: (FAIL) "IF Var1 == 7F Device not set OP" VAR ACTION: NONE GOTO State FFFFFFFEh (FAIL) State 0106h: Stop HB IF (VAR[3] >= 700000) THEN LOG: (PASS) "IF Tim3 >= 700ms Init Tim3" VAR ACTION: NONE GOTO State 0107h Wait EMCY/NMT State 0107h: Wait EMCY/NMT ALWAYS ON RECEIVE {0081h, 8,30h,81h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,00h,00h,00h,00h,00h,00h} LOG: (PASS) "Correct EMCY received" VAR ACTION: VAR[2] = 0 GOTO State 0108h Wait NMT/EMCY ALWAYS ON RECEIVE {0000h, 2,81h,0Eh,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,00h,00h,00h,00h,00h,00h} LOG: (PASS) "NMT Reset received" VAR ACTION: VAR[2] = 1 GOTO State 0108h Wait NMT/EMCY IF (VAR[3] >= 1000000) THEN LOG: (FAIL) "IF Tim3 >= 1s Missing GW action" VAR ACTION: FREE ALL GOTO State FFFFFFFEh (FAIL) State 0108h: Wait NMT/EMCY IF (VAR[2] == 0) THEN ON RECEIVE {0000h, 2,81h,0Eh,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,00h,00h,00h,00h,00h,00h} LOG: (PASS) "NMT Reset received" VAR ACTION: NONE GOTO State 01FEh IF (VAR[2] == 1) THEN ON RECEIVE {0081h, 8,30h,81h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,FFh,00h,00h,00h,00h,00h,00h} LOG: (PASS) "Correct EMCY received" VAR ACTION: NONE GOTO State 01FEh IF (VAR[3] >= 1000000) THEN LOG: (FAIL) "IF Tim3 >= 1s Missing GW action" VAR ACTION: NONE GOTO State FFFFFFFEh (FAIL) State 01FEh: ALWAYS ON RECEIVE {0701h, 1,05h,00h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,00h,00h,00h,00h,00h,00h,00h} LOG: (PASS) "Gateway is operational" VAR ACTION: FREE ALL GOTO State FFFFFFFDh (PASS) State FFFFFFEFh: (ANY) Receives handled in EVERY state ALWAYS ON RECEIVE {0701h, 1,00h,00h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,00h,00h,00h,00h,00h,00h,00h} LOG: (FAIL) "GW Bootup" VAR ACTION: FREE ALL GOTO State FFFFFFFEh (FAIL) ALWAYS ON RECEIVE {0081h, 8,00h,00h,00h,00h,00h,00h,00h,00h} AND MATCH {0FFFh,Fh,FFh,00h,00h,00h,00h,00h,00h,00h} LOG: (FAIL) "GW EMCY > 100h" VAR ACTION: FREE ALL GOTO State FFFFFFFEh (FAIL)