Changeset 1807 for trunk/MagicSoft/Cosy/aposs
- Timestamp:
- 03/06/03 17:53:59 (22 years ago)
- Location:
- trunk/MagicSoft/Cosy/aposs
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/aposs/Magic.m
r1134 r1807 10 10 /* */ 11 11 kVERSION = 0 /* */ 12 kSUBVERSION = 6 3/* */12 kSUBVERSION = 67 /* */ 13 13 /* */ 14 14 /* HISTORY: */ 15 /* */ 16 /* * V0.67: */ 17 /* - trying to implement the control cabinet stuff */ 18 /* */ 19 /* * V0.66: */ 20 /* - implemented canopen node guarding (0x4000) */ 21 /* - implemented some kind of host guarding (in conjuction with */ 22 /* the implemented nodeguarding) */ 23 /* - removed old guarding using SDO 0x4000 */ 24 /* - implemented SDO 0x100c (guardtime) */ 25 /* - implemented SDO 0x100d (lifetimefactor) */ 26 /* */ 27 /* * V0.65: */ 28 /* - fixed a bug in the handling of the endswitches */ 29 /* */ 30 /* * V0.64: */ 31 /* - removed FORCEHOME */ 15 32 /* */ 16 33 /* * V0.63: */ 17 34 /* - added movement handshake timeout (removed 0x400 WAITAX) */ 18 35 /* - added brackets around string SDOs */ 19 /* - changed SDO 0x3007 to support both sync modes 36 /* - changed SDO 0x3007 to support both sync modes */ 20 37 /* */ 21 38 /* * V0.62: */ … … 67 84 /* ----------------------------------------------------------------------- */ 68 85 69 PRINT "Magic Mics V", kVERSION, ".", kSUBVERSION /**/86 PRINT "Magic Mics V", kVERSION, ".", kSUBVERSION, " (CANbus controlled)" /**/ 70 87 71 88 /* ----------------------------------------------------------------------- */ … … 80 97 /* 0x100a x ro Software Version */ 81 98 /* 0x100b x ro Node number */ 99 /* 0x100c x rw Guardtime (ms) */ 100 /* 0x100d x rw Lifetime factor */ 82 101 /* 0x100e x ro COB ID for Guarding */ 83 102 /* 0x1010 x wo Write data to EEPROM */ … … 100 119 /* 1 wo Position Syncronisation 'sync' */ 101 120 /* 0x3008 x wo Nowait 'on', 'off' */ 102 /* 0x4000 0 wo Reset timeout timer */ 103 /* 1 rw Enable timeout timer, 'on' (1), 'off'(0) */ 104 /* 2 rw Timeout timer time */ 121 /* 0x4000 0 wo Reset timeout timer (Nodeguard) */ 105 122 /* 0x6000 x rw Rotation Direction */ 106 123 /* 0x6002 x rw Velocity Resolution */ … … 121 138 /* section for global constants */ 122 139 /*-------------------------------------------------------------------------*/ 123 SET PRGPAR 0 /* Restart Program on Exit*/140 SET PRGPAR -1 /* Don't restart any Program on Exit */ 124 141 125 142 SET ENCODERTYPE 0 /* Incremental Encoder */ 126 SET ENCODER 500 /* Encoder has 500 Ticks */127 143 SET MENCODERTYPE 0 /* Incremental Encoder (Master) */ 128 SET MENCODER 500 /* Encoder has 500 Ticks (Master) */ 129 SET VELMAX 3600 /* Motor: Maximum rounds per minute */ 130 SET POSERR 1500 /* Maximum tolarable Position error (qc) 0.1° */ 131 SET ENDSWMOD 1 /* At End Switch Stop Motor with Max Decel. */ 132 SET ERRCOND 2 /* Motor Stop */ 133 SET POSDRCT 1 /* rotation direction */ 144 145 SET ENDSWMOD 0 /* No End Switch */ 146 SET ERRCOND 2 /* Motor Stop, position control, no break */ 147 SET POSDRCT -1 /* rotation direction */ 148 /* OLD: SET POSDRCT -1 /* rotation direction */ 134 149 SET POSFACT_Z 1 /* 1 user unit (be) = POSFACT_Z/POSFACT_N qc */ 135 150 SET POSFACT_N 1 /* */ 136 SET HOME_FORCE 1 /* Force Home positioning on startup */ 151 152 SET HOME_FORCE 0 /* Don't force Home positioning on mainloopup */ 137 153 SET HOME_OFFSET 0 /* Offset between index and home position */ 138 154 SET HOMETYPE 0 /* drive to home, reverse, go to next index */ 139 SET RAMPTYPE 0 /* Ramp Type: 0=Trapez, 1=Sinus */140 155 141 156 /*----------------*/ 142 157 /* syncronisation */ 143 158 /*----------------*/ 144 SET MENCODERTYPE 0 /* Incremental Encoder (Master) */145 SET MENCODER 500 /* Encoder has 500 Ticks (Master) */146 159 SET SYNCFACTM 1 /* Master Sync Velocity factor */ 147 160 SET SYNCFACTS 1 /* Slave Sync Velocity factor */ … … 153 166 /* Inputs */ 154 167 /*----------------*/ 155 SET I_REFSWITCH -2 /* Reference Switch, Input 2, leading edge*/156 SET I_POSLIMITSW -2 /* Pos Limit Switch, Input 2, leading edge*/157 SET I_NEGLIMITSW -1 /* Neg Limit Switch, Input 1, leading edge*/168 SET I_REFSWITCH 0 /* Reference Switch */ 169 SET I_POSLIMITSW 0 /* Pos Limit Switch */ 170 SET I_NEGLIMITSW 0 /* Neg Limit Switch */ 158 171 SET I_BREAK 0 /* Input which brakes a running program */ 159 172 SET I_CONTINUE 0 /* Input to continue a broken program */ … … 168 181 169 182 /*----------------*/ 183 /* Unit param. */ 184 /*----------------*/ 185 SET RAMPTYPE 1 /* Ramp Type: 0=Trapez, 1=Sinus */ 186 /* OLD: SET RAMPTYPE 0 /* Ramp Type: 0=Trapez, 1=Sinus */ 187 SET ENCODER 1500 /* Encoder has 1500 Ticks */ 188 SET MENCODER 1500 /* Encoder has 500 Ticks (Master) */ 189 SET VELMAX 3000 /* Motor: Maximum revolutions per minute */ 190 SET POSERR 1500 /* Maximum tolarable Position error (qc) 0.1° */ 191 SET RAMPMIN 10000 /* Shortest Ramp 10s */ 192 193 /*----------------*/ 170 194 /* Dflt vel & acc */ 171 /*----------------*/ 195 /*----------------*/ 196 197 /* Prop=100, Div=300, Int=800 */ 198 if (get cannr==1) then 199 SET KPROP 100 200 SET KDER 300 201 SET KINT 1000 202 elseif (get cannr==2) then 203 SET KPROP 100 204 SET KDER 200 205 SET KINT 150 206 else 207 SET KPROP 350 208 SET KDER 50 209 SET KINT 350 210 endif 211 172 212 vres = (GET ENCODER)*(GET VELMAX) /* ticks/R * R/M = ticks/min */ 173 213 SET VELRES vres /* Set velocity units */ 174 SET HOME_VEL -(25*vres%100) /* Home position velocity: 25% */ 175 SET HOME_RAMP (25*vres%100) /* Home position accel: 25% */ 176 SET DFLTACC (10*vres%100) /* Default acceleratio: 10%*/177 SET DFLTVEL (10*vres%100) /* Default velocity: 10%*/214 215 216 /* OLD: SET HOME_VEL -(25*vres%100) /* Home position velocity: 25% */ 217 /* OLD: SET HOME_RAMP (25*vres%100) /* Home position accel: 25% */ 178 218 179 219 /*----------------*/ 180 /* Software range*/220 /* Manual control */ 181 221 /*----------------*/ 182 SET SWPOSLIMACT 0 /* positive software limit switch inactive */ 183 SET SWNEGLIMACT 0 /* negative software limit switch inactive */ 184 SET POSLIMIT 0 /* positive software limit (qc) */ 185 SET NEGLIMIT 0 /* negative software limit (qc) */ 222 SET RAMPTYPE 1 /* Ramp: 0=linear, 1=sinus */ 223 defacc = 60*vres%100 224 225 SET DFLTACC defacc /* Default acceleratio: [%] */ 226 ACC defacc 227 DEC defacc*2 228 /* Velocity which is reached in 229 a time given by RAMPMIN */ 230 SET DFLTVEL (1*vres%100) /* Default velocity [%] */ 231 232 /*manvel = (4*vres%100) /* 150 U/min */ /* Max speed in man mode: [%] */ 233 234 print "Vel Res (vel max): ", GET VELRES, " Encoder Ticks/min" 235 /*print "V_man: ", manvel, " Encoder Ticks/min"*/ 186 236 187 237 /*-------------------------------------------------------------------------*/ … … 194 244 pdo1on = kFALSE 195 245 196 timeout = 100 197 timeouton = kFALSE 198 timeouttime = TIME 246 guardtime = 0 247 lifetimefactor = 0 248 timeouttime = TIME 249 firsttimeout = 0 199 250 200 251 /*-------------------------------------------------------------------------*/ … … 203 254 /* The CAN Object are static object. This is why they must be deleted. */ 204 255 /* The program should run in any of our nodes. */ 205 /* Therefor the standard CAN objects (SD O, PDO1, PDO2) for communication */256 /* Therefor the standard CAN objects (SDo, PDO1, PDO2) for communication */ 206 257 /* are defined. The nodenumber is part of the object ID (this is somehow */ 207 258 /* similar to the TCP/IP ports) */ 208 259 /*-------------------------------------------------------------------------*/ 209 CANDEL -1 260 CANDEL -1 261 210 262 nodenr = GET CANNR 211 263 PRINT "Initializing Node Nr.", nodenr 212 pdo1 = DEFCANOUT (0x180+nodenr) 8 213 pdo2 = DEFCANOUT (0x280+nodenr) 8 214 sdotx = DEFCANOUT (0x580+nodenr) 8 215 sdorx = DEFCANIN (0x600+nodenr) 8 264 pdo1 = DEFCANOUT (0x180+nodenr) 8 265 pdo2 = DEFCANOUT (0x280+nodenr) 8 266 pdo3 = DEFCANOUT (0x380+nodenr) 8 267 sdotx = DEFCANOUT (0x580+nodenr) 8 268 sdorx = DEFCANIN (0x600+nodenr) 8 269 /* 270 guardrx = DEFCANIN (0x700+nodenr) 8 271 guardtx = DEFCANOUT (0x700+nodenr) 8 272 */ 216 273 217 274 /* Close and reopen communication, enable buffering */ 218 275 err = REOPEN 0 0 219 276 220 /*-------------------------------------------------------------------------*/221 /* Init */222 277 /*-------------------------------------------------------------------------*/ 223 278 /* Before the motor control hardware is enabled (hi on output 1) */ … … 226 281 /* of the program. */ 227 282 /*-------------------------------------------------------------------------*/ 228 MOTOR STOP283 /*MOTOR STOP 229 284 MOTOR OFF 230 285 CVEL 0 286 OUT 1 1 287 */ 231 288 NOWAIT OFF 232 OUT 1 1233 289 234 290 /*-------------------------------------------------------------------------*/ … … 249 305 ON ERROR GOSUB PROC_ERROR 250 306 307 /***************************************************************************/ 308 kIoModule = 4*256 309 310 /*-------------------------------------------------------------------------*/ 311 /* Init */ 251 312 /*-------------------------------------------------------------------------*/ 252 313 /* Program Main Loop */ … … 261 322 canlo = 1 262 323 324 brake = 0 325 RF = 0 326 327 init = 0 328 329 gosub reset 330 263 331 PRINT "Starting Mainloop..." 264 332 333 rc = 1 265 334 MAINLOOP: 266 rc = CANIN sdorx 0 0 canhi canlo267 335 if (rc==0) then /* It must be tested because ON PERIOD breaks 'wait for obj' */ 268 336 gosub PROC_SDORX 337 else 338 fuse = in (kIoModule+1) 339 emcy = in (kIoModule+2) 340 vltg = in (kIoModule+3) 341 mode = in (kIoModule+4) 342 ready = in 1 343 344 if (ready==0) and (RF==1) then 345 print "DKC not ready, but RF set... setting RF=AH=0!" 346 gosub reset 347 goto mainloop 348 elseif mode==1 then 349 print "Control not in PC mode!" 350 gosub reset 351 SET PRGPAR 0 352 exit 353 elseif fuse==0 then 354 print "Motor-Power Fuse not OK!" 355 gosub reset 356 goto mainloop 357 elseif vltg==0 then 358 print "Overvoltage control broken!" 359 gosub reset 360 goto mainloop 361 elseif emcy==0 then 362 print "Please release Emergency Stop!" 363 gosub reset 364 goto mainloop 365 elseif (ready==1) and (RF==0) then 366 print "DKC powered, RF=0... setting RF=AH=1!" 367 /* 368 * After switching on power wait at least 300ms until 369 * control changed state 'bb' to 'ab' 370 */ 371 cvel 0 372 waitt 300 373 out 1 0 374 out 2 0 375 motor off 376 waitt 100 377 out 1 1 378 out 2 1 379 RF = 1 380 waitt 100 381 382 if (brake==0 and get cannr==3) then 383 out (kIoModule+1) 1 384 brake = 1 385 waitt 1000 386 endif 387 388 motor on 389 390 canout pdo3 (ready | (fuse<<1) | (emcy<<2) | (vltg<<3) | (mode<<4) | (rf<<5) | (brake<<6)) 0 391 /* 392 if (get cannr==2) then 393 syncv 394 print "Synchronizing speed..." 395 else 396 print "Starting CAN mode..." ^ 397 goto CANSTART 398 endif */ 399 elseif (ready==0) or (RF==0) then 400 print "No Power, no RF..." 401 canout pdo3 (ready | (fuse<<1) | (emcy<<2) | (vltg<<3) | (mode<<4) | (rf<5) | (brake<<6)) 0 402 waitt 500 403 goto mainloop 404 endif 269 405 endif 270 goto MAINLOOP 406 407 rc = CANIN sdorx -1 0 canhi canlo 408 goto mainloop 409 271 410 ENDMAIN: 272 411 MOTOR STOP … … 280 419 281 420 SUBMAINPROG 421 SUBPROG reset 422 init = 0 423 424 out 1 0 425 out 2 0 426 RF = 0 427 motor off 428 waitt 1000 429 430 if (brake==1 and get cannr==3) then 431 waitt 3000 /* wait 3s for DKC to stop the motor */ 432 out (kIoModule+1) 0 /* brake the brake */ 433 waitt 1000 434 endif 435 436 canout pdo3 (ready | (fuse<<1) | (emcy<<2) | (vltg<<3) | (mode<<4)) (rf | (brake<<1)) 437 return 438 282 439 /*----------------------------------*/ 283 440 /* PROC_CANOPENMSG */ … … 290 447 PRINT "Setting Idx:", idx, "/", subidx, " to ", sdoval 291 448 */ 292 if (idx == 0x1003 and subidx == 0 and sdoval ==0) then449 if (idx==0x1003 and subidx==0 and sdoval==0) then 293 450 i = 9 294 451 while (i) do … … 296 453 i = i - 1 297 454 endwhile 455 elseif (idx==0x100c) then 456 guardtime = sdoval 457 ON PERIOD 0 GOSUB PROC_Timeout 458 if (lifetimefactor>0 and guardtime>0) then 459 timeouttime = TIME + guardtime*lifetimefactor 460 ON PERIOD guardtime GOSUB PROC_Timeout 461 endif 462 elseif (idx == 0x100d) then 463 lifetimefactor = sdoval 464 if (lifetimefactor==0) then 465 ON PERIOD 0 GOSUB PROC_Timeout 466 endif 298 467 elseif (idx == 0x1010 and sdoval == ('s'<<24|'a'<<16|'v'<<8|'e')) then 299 468 SAVEPROM … … 380 549 endif 381 550 elseif (idx == 0x4000) then 382 if (subidx == 0) then 383 timeouttime = TIME + timeout 384 elseif (subidx == 1) then 385 ON PERIOD 0 GOSUB PROC_Timeout 386 if (sdoval == ('o'<<24|'n'<<16)) then 387 timeouttime = TIME + timeout 388 ON PERIOD timeout GOSUB PROC_Timeout 389 timeouton = kTRUE 390 elseif (sdoval == ('o'<<24|'f'<<16|'f'<<8)) then 391 timeouton = kFALSE 392 endif 393 elseif (subidx == 2) then 394 timeout = sdoval 395 if (timeouton) then 396 ON PERIOD 0 GOSUB PROC_Timeout 397 timeouttime = TIME + timeout 398 ON PERIOD timeout GOSUB PROC_Timeout 399 endif 400 endif 401 /* elseif (idx == 0x4000 and 402 (sdoval>>24)&0xff == 'S' and 403 (sdoval>>16)&0xff == 'T' and 404 (sdoval>>8) &0xff == 'O' and 405 (sdoval) &0xff == 'P') then 406 CANOUT sdotx (canhi&0xffffff | 0x60000000) 0 407 goto ENDMAIN 408 */ elseif (idx == 0x6000) then 551 timeouttime = TIME + guardtime*lifetimefactor 552 elseif (idx == 0x6000) then 409 553 if (sdoval&1) then 410 554 SET POSDRCT -1 … … 485 629 elseif (idx == 0x100a) then 486 630 sdoval = (kVERSION<<16) | kSUBVERSION 631 elseif (idx == 0x100c) then 632 sdoval = guardtime 633 elseif (idx == 0x100d) then 634 sdoval = lifetimefactor 487 635 elseif (idx == 0x100e) then 488 sdoval = 0x 700 | nodenr636 sdoval = 0x600|nodenr /*0x700 | nodenr*/ 489 637 elseif (idx == 0x1010) then 490 638 sdoval = 1 … … 523 671 elseif (idx == 0x2004) then 524 672 sdoval = STAT 525 elseif (idx == 0x4000) then526 if (subidx == 1) then527 sdoval = timeouton528 elseif (subidx == 2) then529 sdoval = timeout530 endif531 673 elseif (idx == 0x6000) then 532 674 if (GET POSDRCT == 1) then … … 614 756 /* Timeout Interrupt */ 615 757 /*-------------------------------------------------------------------------*/ 616 SUBPROG PROC_Timeout 617 diff = timeouttime - TIME 618 if (diff < 0) then 758 SUBPROG PROC_Timeout 759 if (TIME > timeouttime) then 619 760 MOTOR STOP 620 761 762 if (firsttimeout==0) then 763 621 764 /* Tell the bus that an error occured */ 622 765 CANOUT pdo2 0 0 … … 633 776 634 777 errinf = 0 635 636 /*if (firstcall)*/ 637 PRINT "User Timeout at uptime=", (TIME%1000), "s missed=", -diff, "ms" 638 /*firstcall = kFALSE */ 778 779 PRINT "User Timeout!" 639 780 640 781 /* tell the bus what exactly happened */ 641 782 CANOUT pdo2 errlist[2] errinf 642 /*elseif 643 firstcall = kTRUE*/ 783 endif 784 785 firsttimeout = 1 786 else 787 firsttimeout = 0 644 788 endif 645 789 RETURN … … 649 793 /*-------------------------------------------------------------------------*/ 650 794 SUBPROG PROC_ERROR 651 MOTOR STOP 795 /*MOTOR STOP*/ 796 out 1 0 797 out 2 0 798 RF = 0 652 799 653 800 /* Tell the bus that an error occured */ 654 801 CANOUT pdo2 0 0 802 803 waitt 100 655 804 805 if (brake==1 and get cannr==3) then 806 waitt 5000 807 out (kIoModule+1) 0 808 waitt 500 809 endif 810 811 print "Error #", errno 812 656 813 i = errlist[1] + 1 /* Fill status of array */ 657 814 while (i>2) do /* shift errors by one */ … … 693 850 PRINT "Positive software endswitch (", poslsw, ") activated at position ", APOS 694 851 SET SWPOSLIMACT 0 695 ERRCLR 852 ERRCLR 696 853 CVEL (vres%100) /* 1% */ 697 854 ACC (10*vres%100) /* 10% */ … … 730 887 DEC (10*vres%100) /* 10% */ 731 888 CSTART 732 WHILE (IN poslsw == 0) DO ENDWHILE889 WHILE (IN neglsw == 0) DO ENDWHILE 733 890 CSTOP 734 SET I_NEGLIMITSW - poslsw891 SET I_NEGLIMITSW -neglsw 735 892 errinf = -1 736 893 endif -
trunk/MagicSoft/Cosy/aposs/Manual.m
r1716 r1807 4 4 /* */ 5 5 kVERSION = 0 /* */ 6 kSUBVERSION = 3/* */6 kSUBVERSION = 6 /* */ 7 7 /* */ 8 8 /* HISTORY: */ 9 /* */ 10 /* * V0.6 */ 11 /* - do not reset the velocity if set already */ 12 /* - set acceleration to 20% */ 13 /* */ 14 /* * V0.5: */ 15 /* - changes 'DKC Ready' signal to IN1 for all MACS */ 16 /* - control brake only when cannr==3 */ 17 /* */ 18 /* * V0.4: */ 19 /* - restart MACS with PRGPAR 1 when not in manual mode */ 20 /* - replaced label reset by a subprg */ 9 21 /* */ 10 22 /* * V0.3: */ … … 112 124 /*----------------*/ 113 125 SET RAMPTYPE 1 /* Ramp: 0=linear, 1=sinus */ 114 defacc = 60*vres%100126 defacc = 10*vres%100 115 127 116 128 SET DFLTACC defacc /* Default acceleratio: [%] */ … … 124 136 125 137 print "Vel Res (vel max): ", GET VELRES, " Encoder Ticks/min" 126 print "V_man: ", manvel, " Encoder Ticks/min "138 print "V_man: ", manvel, " Encoder Ticks/min, Acc=", defacc 127 139 128 140 /*----------------*/ … … 152 164 153 165 brake = 0 166 RF = 0 167 velo = 0 154 168 155 reset: 156 out 1 0 157 out 2 0 158 RF = 0 159 motor off 160 waitt 1000 161 162 if (brake==1) then 163 waitt 3000 /* wait 3s for DKC to stop the motor */ 164 out (kIoModule+1) 0 /* brake the brake */ 165 waitt 1000 166 endif 169 gosub reset 167 170 168 171 mainloop: … … 171 174 vltg = in (kIoModule+3) 172 175 mode = in (kIoModule+4) 173 176 /* 174 177 if (get cannr==1) or (get cannr==2) then 175 ready = in 1 178 */ 179 ready = in 1 180 /* 176 181 elseif (get cannr==3) then 177 ready = in (kIoModule+5) /* !!!FIXME!!! */182 ready = in (kIoModule+5) 178 183 endif 184 */ 179 185 180 186 if (ready==0) and (RF==1) then 181 187 print "DKC not ready, but RF set... setting RF=AH=0!" 182 goto reset 188 gosub reset 189 goto mainloop 190 elseif mode==0 then 191 print "Control not in manual mode!" 192 gosub reset 193 SET PRGPAR 1 194 exit 183 195 elseif fuse==0 then 184 196 print "Motor-Power Fuse not OK!" 185 goto reset 197 gosub reset 198 goto mainloop 186 199 elseif vltg==0 then 187 200 print "Overvoltage control broken!" 188 goto reset 201 gosub reset 202 goto mainloop 189 203 elseif emcy==0 then 190 204 print "Please release Emergency Stop!" 191 goto reset 192 elseif mode==0 then 193 print "Control not in manual mode!" 194 goto reset 205 gosub reset 206 goto mainloop 195 207 elseif (ready==1) and (RF==0) then 196 208 print "DKC powered, RF=0... setting RF=AH=1!" … … 210 222 waitt 100 211 223 212 if (brake==0 ) then224 if (brake==0 and get cannr==3) then 213 225 out (kIoModule+1) 1 214 226 brake = 1 … … 239 251 backward = in 3 240 252 241 if (forward==1) and (backward==0) then 242 cvel manvel 243 elseif (forward==0) and (backward==1) then 253 if (forward==1) and (backward==0) and (velo!=manvel) then 254 cvel manvel 255 velo = manvel 256 elseif (forward==0) and (backward==1) and (velo!=-manvel) then 244 257 cvel -manvel 245 else 246 cvel 0 258 velo = -manvel 259 elseif (forward==backward) and (velo!=0) then 260 cvel 0 261 velo = 0 247 262 endif 248 263 goto mainloop 249 264 250 265 SUBMAINPROG 266 subprog reset 267 out 1 0 268 out 2 0 269 RF = 0 270 motor off 271 velo = 0 272 waitt 1000 273 274 if (brake==1 and get cannr==3) then 275 waitt 3000 /* wait 3s for DKC to stop the motor */ 276 out (kIoModule+1) 0 /* brake the brake */ 277 waitt 1000 278 endif 279 return 280 251 281 subprog suberror 252 282 out 1 0 … … 254 284 RF = 0 255 285 waitt 100 286 velo = 0 256 287 257 if (brake==1 ) then288 if (brake==1 and get cannr==3) then 258 289 waitt 5000 259 290 out (kIoModule+1) 0
Note:
See TracChangeset
for help on using the changeset viewer.