Changes for page 01 Program execution

Last modified by Leo Wei on 2024/12/24 22:42

From version 17.1
edited by Stone Wu
on 2022/09/23 16:33
Change comment: There is no comment for this version
To version 13.10
edited by Stone Wu
on 2022/09/23 16:00
Change comment: There is no comment for this version

Summary

Details

Page properties
Content
... ... @@ -333,60 +333,78 @@
333 333  
334 334  In the process of executing the scan program, the program that can interrupt the priority execution of the scan program is called an interrupt execution program.
335 335  
336 -* When an interrupt cause occurs, the interrupt program corresponding to the interrupt pointer number will be executed. However, the execution needs to be set to the interrupt enabled state by the EI instruction.
336 + ~1. When an interrupt cause occurs, the interrupt program corresponding to the interrupt pointer number will be executed. However, the execution needs to be set to the interrupt enabled state by the EI instruction.
337 337  
338 338  (% style="text-align:center" %)
339 339  [[image:1652249587490-678.png||class="img-thumbnail"]]
340 340  
341 341  
342 -* An interrupt name corresponds to an interrupt program, and the interrupt name cannot be repeated. Each interrupt has its own trigger condition and execution program, and each interrupt program ends with END.
343 -* Interrupt has the characteristic of interrupting the original execution program and executing the interrupt first, but it cannot interrupt the interrupt program being executed.
344 -* The interrupt program has the concept of priority. The smaller the priority value, the more priority the response. The priority setting range is 0 to 2.
342 + 2. An interrupt name corresponds to an interrupt program, and the interrupt name cannot be repeated. Each interrupt has its own trigger condition and execution program, and each interrupt program ends with END.
345 345  
346 -**The actions when an interruption cause occurs are as follows:**
344 + 3. Interrupt has the characteristic of interrupting the original execution program and executing the interrupt first, but it cannot interrupt the interrupt program being executed.
347 347  
348 -* Interrupt prohibition (DI) when an interruption cause occurs.
349 -** If the interrupt execution condition is triggered in a program that is forbidden by DI, the interrupt will not be executed. Even if the subsequent program uses the EI instruction to allow interruption, the previously shielded interrupt program will not be executed. Only the interrupt execution condition is triggered again. The interrupt program will be executed.
350 -* When multiple interrupt causes occur simultaneously in the interrupt enabled state.
351 -** The interrupt program with higher priority will be executed sequentially. In addition, when multiple interrupts with the same priority occur at the same time, the actions are executed in the order of interrupt priority.
352 -** If three interrupt programs I0, I10, I16 are created, the priority of I0 is 1, the priority of I10 is 0, and the priority of I16 is 1. The execution logic is shown in the figure below: I10 has the smallest priority and is executed first; I0 and I16 have the same priority and are executed in the order of program establishment.
346 + 4. The interrupt program has the concept of priority. The smaller the priority value, the more priority the response. The priority setting range is 0 to 2.
353 353  
348 +The actions when an interruption cause occurs are as follows:
349 +
350 +1. Interrupt prohibition (DI) when an interruption cause occurs.
351 +
352 +If the interrupt execution condition is triggered in a program that is forbidden by DI, the interrupt will not be executed. Even if the subsequent program uses the EI instruction to allow interruption, the previously shielded interrupt program will not be executed. Only the interrupt execution condition is triggered again. The interrupt program will be executed.
353 +
354 + 2.When multiple interrupt causes occur simultaneously in the interrupt enabled state.
355 +
356 +The interrupt program with higher priority will be executed sequentially. In addition, when multiple interrupts with the same priority occur at the same time, the actions are executed in the order of interrupt priority.
357 +
358 +If three interrupt programs I0, I10, I16 are created, the priority of I0 is 1, the priority of I10 is 0, and the priority of I16 is 1. The execution logic is shown in the figure below: I10 has the smallest priority and is executed first; I0 and I16 have the same priority and are executed in the order of program establishment.
359 +
354 354  (% style="text-align:center" %)
355 355  [[image:1652249553246-688.png||class="img-thumbnail"]]
356 356  
357 -* When an interrupt occurs during the waiting time when performing constant scan.
358 -** Execute the interrupt program for this interrupt.
359 -* When other interrupts occur during the execution of the interrupt program.
360 -** In the interrupt program (including the specification when the interrupt occurs in the event execution program), when other interrupts occur, the original interrupt execution program will not be interrupted. After the original interrupt execution program is completed, the new interrupt program is executed. After the execution is completed Then return to the scanning procedure.
361 -* During the execution of the interrupt program, when an interrupt cause with a low priority or the same priority occurs.
362 -** The interruption cause that occurred is stored, and after the interrupt program in execution ends, the interrupt program corresponding to the stored interruption cause is executed. Even if the same interruption cause occurs multiple times, the interruption cause is stored only once.
363 + 3. When an interrupt occurs during the waiting time when performing constant scan.
363 363  
365 +Execute the interrupt program for this interrupt.
366 +
367 + 4.When other interrupts occur during the execution of the interrupt program.
368 +
369 +In the interrupt program (including the specification when the interrupt occurs in the event execution program), when other interrupts occur, the original interrupt execution program will not be interrupted. After the original interrupt execution program is completed, the new interrupt program is executed. After the execution is completed Then return to the scanning procedure.
370 +
371 + 5. During the execution of the interrupt program, when an interrupt cause with a low priority or the same priority occurs.
372 +
373 +The interruption cause that occurred is stored, and after the interrupt program in execution ends, the interrupt program corresponding to the stored interruption cause is executed. Even if the same interruption cause occurs multiple times, the interruption cause is stored only once.
374 +
375 +
364 364  (% style="text-align:center" %)
365 365  [[image:1652249673420-476.png||class="img-thumbnail"]]
366 366  
367 -* When the same interruption cause occurs during the execution of the interrupt program;
368 -** The interruption cause that occurred is stored, and after the interrupt program in execution ends, the interrupt program corresponding to the stored interruption cause is executed. Even if the same interruption cause occurs multiple times, the interruption cause is stored only once.
379 + 6. When the same interruption cause occurs during the execution of the interrupt program;
369 369  
381 +The interruption cause that occurred is stored, and after the interrupt program in execution ends, the interrupt program corresponding to the stored interruption cause is executed. Even if the same interruption cause occurs multiple times, the interruption cause is stored only once.
382 +
370 370  **Interrupt trigger condition classification**
371 371  
372 -* **External input (X) interrupt**
373 -** Description of external input interrupt
374 -*** The external input interrupt is triggered by the rising or falling edge of the fixed X point input.
375 -*** Supports the rising and falling edge interrupts of a total of 8 input points of X0 to X7, and supports a total of 16 external input interrupts.
376 -*** The same interrupt trigger condition cannot create multiple interrupt programs.
377 -*** External input interrupt and high-speed counter cannot use the same X point.
378 -*** You must use EI in the scan program to allow interrupts before the interrupt execution program will be executed.
379 -* **External input interrupt steps.**
380 -** Project management→ Program→ Interrupt→ right click to create.
381 -** The interrupt program name requires to match case, and the program name with the same name as the device cannot be used (the device name does not match case),
382 -** The interrupt program name does not support the input of /%$@&=~~`^<>?:{}[],;!*.~\~\'" characters,
383 -** The length of the interrupt program name cannot exceed 64 characters and cannot be typed. The default name is INTx.
385 +**External input (X) interrupt**
384 384  
387 +Description of external input interrupt
388 +
389 +1. The external input interrupt is triggered by the rising or falling edge of the fixed X point input.
390 +1. Supports the rising and falling edge interrupts of a total of 8 input points of X0 to X7, and supports a total of 16 external input interrupts.
391 +1. The same interrupt trigger condition cannot create multiple interrupt programs.
392 +1. External input interrupt and high-speed counter cannot use the same X point.
393 +1. You must use EI in the scan program to allow interrupts before the interrupt execution program will be executed.
394 +
395 +External input interrupt steps.
396 +
397 +Project management→ Program→ Interrupt→ right click to create.
398 +
385 385  (% style="text-align:center" %)
386 386  [[image:1-16.png||class="img-thumbnail"]]
387 387  
388 -* Click Configure, and select external interrupt for execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management):
402 +1. The interrupt program name requires to match case, and the program name with the same name as the device cannot be used (the device name does not match case),
403 +1. The interrupt program name does not support the input of /%$@&=~~`^<>?:{}[],;!*.~\~\'" characters,
404 +1. The length of the interrupt program name cannot exceed 64 characters and cannot be typed. The default name is INTx.
389 389  
406 +Click Configure, and select external interrupt for execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management):
407 +
390 390  (% style="text-align:center" %)
391 391  [[image:1-17.png||class="img-thumbnail"]]
392 392  
... ... @@ -406,7 +406,7 @@
406 406  Note: X rising edge interrupt and X falling edge interrupt use the same X filter, so after the filter setting is changed in the X rising edge configuration, the X falling edge will also change. If the filter time is set to 1000, you must ensure that the high level and low level of the input signal are maintained for more than 10 us before the interrupt can be triggered.
407 407  )))|0 to 1700|1
408 408  
409 -* Write interrupt execution program
427 +1. Write interrupt execution program
410 410  
411 411  (% style="text-align:center" %)
412 412  [[image:1-18.png||class="img-thumbnail"]]
... ... @@ -416,19 +416,19 @@
416 416  (% style="text-align:center" %)
417 417  [[image:1652250056160-117.png||height="215" width="500" class="img-thumbnail"]]
418 418  
419 -**Timer interrupt**
437 +**~ 2.Timer interrupt**
420 420  
421 -Timer interrupt description
439 +1. Timer interrupt description
422 422  
423 -* Timer interrupt is based on the set time, execute the interrupt program every this time, the minimum time interval can reach 100us.
424 -* Up to 100 timer interrupt execution programs can be created.
425 -* Each timer interrupt program is independent of each other and does not affect each other.
426 -* Each timer interrupt program should be configured with priority. When triggered at the same time, it is executed in the order of priority, but when the priority is the same, it is executed in the order of the established program.
427 -* The interrupt execution program is executed only after EI is used in the scanner to allow the interrupt
441 +1. Timer interrupt is based on the set time, execute the interrupt program every this time, the minimum time interval can reach 100us.
442 +1. Up to 100 timer interrupt execution programs can be created.
443 +1. Each timer interrupt program is independent of each other and does not affect each other.
444 +1. Each timer interrupt program should be configured with priority. When triggered at the same time, it is executed in the order of priority, but when the priority is the same, it is executed in the order of the established program.
445 +1. The interrupt execution program is executed only after EI is used in the scanner to allow the interrupt
428 428  
429 -Timer interrupt step
447 + 2. Timer interrupt step
430 430  
431 -* Project managementðProgramðInterruptðRight click to create. Enter the program name. The program name only supports the combination of English letters, numbers, and underscores, and must start with an English letter. The default is INTx. Click Configure and select Timer Interrupt as the execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management).
449 +Project managementðProgramðInterruptðRight click to create. Enter the program name. The program name only supports the combination of English letters, numbers, and underscores, and must start with an English letter. The default is INTx. Click Configure and select Timer Interrupt as the execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management).
432 432  
433 433  (% style="text-align:center" %)
434 434  [[image:1-20.png||class="img-thumbnail"]]
... ... @@ -439,35 +439,34 @@
439 439  |(% rowspan="2" %)Timer interrupt|Time|Set the interval time for interrupt triggering|1 to 2147483647 (100us unit)|
440 440  |priority|When multiple interrupts arrive at the same time, the order of priority execution, the smallest value is executed first|0 to 2|0
441 441  
442 -Write interrupt execution program
460 +1. Write interrupt execution program
443 443  
444 444  (% style="text-align:center" %)
445 445  [[image:1-21.png||class="img-thumbnail"]]
446 446  
447 -* Double-click the newly created timer interrupt program in the project management to start writing the interrupt execution program. As shown in the figure above, a newly created timer interrupt program is INT0, and the trigger condition is configured to execute the interrupt program every 10ms. If the main program uses EI to enable interrupts, all instruction programs in INT0 will be executed every 10ms, namely D0 It will add 1 to 10ms.
465 +Double-click the newly created timer interrupt program in the project management to start writing the interrupt execution program. As shown in the figure above, a newly created timer interrupt program is INT0, and the trigger condition is configured to execute the interrupt program every 10ms. If the main program uses EI to enable interrupts, all instruction programs in INT0 will be executed every 10ms, namely D0 It will add 1 to 10ms.
448 448  
449 449  (% style="text-align:center" %)
450 450  [[image:1652250294005-455.png||class="img-thumbnail"]]
451 451  
452 -**High-speed counter interrupt**
470 +**~ 3. High-speed counter interrupt**
453 453  
454 -Description of high-speed counter interrupt
472 +1. Description of high-speed counter interrupt
455 455  
456 -* The high-speed counter interrupt triggers an interrupt condition after the set value of the high-speed counter HSC0 to HSC7 provided by the PLC and executes the interrupt program.
457 -* It can support up to 100 high-speed counter interrupt programs, but the number that can be supported by each channel does not need to be fixed.
458 -* When using the high-speed counter interrupt, project must configure the high-speed counter and use the OUT HSC instruction to enable the corresponding counting channel to count before it can be used (see the high-speed counter description section for the specific configuration method).
459 -* Each high-speed counter interrupt program should be configured with priority. When triggered at the same time, it will be executed in the order of priority. When the priority is the same, it will be executed in the order of channels HSC0-HSC7. When the channel is also the same, it is executed in order according to the creation promise.
460 -* Project must use EI in the scan program to allow interrupts before the interrupt execution program will be executed.
474 +1. The high-speed counter interrupt triggers an interrupt condition after the set value of the high-speed counter HSC0 to HSC7 provided by the PLC and executes the interrupt program.
475 +1. It can support up to 100 high-speed counter interrupt programs, but the number that can be supported by each channel does not need to be fixed.
476 +1. When using the high-speed counter interrupt, project must configure the high-speed counter and use the OUT HSC instruction to enable the corresponding counting channel to count before it can be used (see the high-speed counter description section for the specific configuration method).
477 +1. Each high-speed counter interrupt program should be configured with priority. When triggered at the same time, it will be executed in the order of priority. When the priority is the same, it will be executed in the order of channels HSC0-HSC7. When the channel is also the same, it is executed in order according to the creation promise.
478 +1. Project must use EI in the scan program to allow interrupts before the interrupt execution program will be executed.
461 461  
462 -(% class="box infomessage" %)
463 -(((
464 -**✎Note: **Both the HSC channel and the external input interrupt channel must use the PLC input point X. It should be noted that it cannot be reused during configuration. For details, please refer to the configuration chapter of the high-speed counter.
465 -)))
480 +**✎Note: **Both the HSC channel and the external input interrupt channel must use the PLC input point X. It should be noted that it
466 466  
467 -High-speed counter interrupt steps
482 +cannot be reused during configuration. For details, please refer to the configuration chapter of the high-speed counter.
468 468  
469 -* “Project management”ð“Programð“Interrupt”ðRight click to create. Enter the program name. The program name only supports the combination of English letters, numbers, and underscores, and must start with an English letter. The default is INTx. Click Configure, select high-speed interrupt for execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management).
484 +1. high-speed counter interrupt step
470 470  
486 +“Project management”ð“Programð“Interrupt”ðRight click to create. Enter the program name. The program name only supports the combination of English letters, numbers, and underscores, and must start with an English letter. The default is INTx. Click Configure, select high-speed interrupt for execution type, as shown in the figure below (it can also be configured in "program parameters" in "parameters" in project management).
487 +
471 471  (% style="text-align:center" %)
472 472  [[image:1-23.png||class="img-thumbnail"]]
473 473  
... ... @@ -500,7 +500,7 @@
500 500  |Priority|When multiple interrupts arrive at the same time, the order of priority execution, the smallest value is executed first|0 to 2|0
501 501  |Contact|It is available when selecting high-speed comparison set and high-speed comparison reset. The contact is set or reset immediately after the trigger condition is reached.|Y/M/D.b|
502 502  
503 - Description of triggering rules
520 + 3. Description of triggering rules
504 504  
505 505  (% class="table-bordered" %)
506 506  |(% style="width:135px" %)**Mode**|(% style="width:187px" %)**Configuration**|(% style="width:128px" %)**The current value**|(% style="width:324px" %)**Action**
... ... @@ -535,22 +535,21 @@
535 535  The program in INT2 will not be executed
536 536  )))
537 537  
538 -(% class="box infomessage" %)
539 -(((
540 540  **✎Note: **Both HSC channel and external input interrupt channel need to use the INPUT point X, so it should be noted that it cannot be reused in configuration. For details, please refer to the configuration section of high-speed counter.
541 -)))
542 542  
543 -Write interrupt execution program
557 +1. Write interrupt execution program
544 544  
545 545  * New interrupt program
546 -** Create three new interrupt programs under the interrupt of project management, namely HSC0_20000, HSC0_30000, HSC0_40000. Configure the interrupt program in the "program parameters", as shown in the figure below.
547 547  
561 +Create three new interrupt programs under the interrupt of project management, namely HSC0_20000, HSC0_30000, HSC0_40000. Configure the interrupt program in the "program parameters", as shown in the figure below.
562 +
548 548  (% style="text-align:center" %)
549 549  [[image:1-24.png||class="img-thumbnail"]]
550 550  
551 551  * High-speed counter configuration
552 -** Configure HSC0 for use in the high-speed counter configuration. After selecting the working mode, click the "Check” button. After the correct configuration box pops up, click Enter.
553 553  
568 +Configure HSC0 for use in the high-speed counter configuration. After selecting the working mode, click the "Check” button. After the correct configuration box pops up, click Enter.
569 +
554 554  (% style="text-align:center" %)
555 555  [[image:1-25.png||class="img-thumbnail"]]
556 556  
... ... @@ -560,123 +560,131 @@
560 560  
561 561  Program operation:
562 562  
563 -* Assuming that the High-speed counter channel 0 has been receiving pulses:
564 -** When the count value of HSC0 accumulates from 0 to 20000, all procedures of HSC0_20000 are executed.
565 -** When the count value of HSC0 is accumulated from 20000 to 30000, all procedures of HSC0_30000 are executed.
566 -** When the count value of HSC0 is accumulated from 30000 to 40000, all procedures of HSC0_40000 are executed.
579 +Assuming that the High-speed counter channel 0 has been receiving pulses:
567 567  
581 +When the count value of HSC0 accumulates from 0 to 20000, all procedures of HSC0_20000 are executed.
582 +
583 +When the count value of HSC0 is accumulated from 20000 to 30000, all procedures of HSC0_30000 are executed.
584 +
585 +When the count value of HSC0 is accumulated from 30000 to 40000, all procedures of HSC0_40000 are executed.
586 +
568 568  **Mask interrupt**
569 569  
570 -Mask through application instructions
589 +**~ 1. Mask through application instructions**
571 571  
572 -* The PLC interrupt is in the shielded state by default when it is powered on, and can only be used after the interrupt is allowed through the EI instruction.
573 -* The interrupt mask instruction DI masks all interrupts without parameters, and masks some priority interrupts with parameters (refer to the program flow instruction DI/EI for details).
591 +The PLC interrupt is in the shielded state by default when it is powered on, and can only be used after the interrupt is allowed through the EI instruction.
574 574  
575 -Mask through special registers SM and SD
593 +The interrupt mask instruction DI masks all interrupts without parameters, and masks some priority interrupts with parameters (refer to the program flow instruction DI/EI for details).
576 576  
595 +**~ 2. Mask through special registers SM and SD**
596 +
597 +1.External input interrupt mask register
598 +
577 577  (% class="table-bordered" %)
578 -|=(% colspan="4" %)**External input interrupt mask register**
579 -|=(% style="width: 266px;" %)**Special register number**|=(% style="width: 308px;" %)**Type of interrupt**|=(% style="width: 390px;" %)**Instruction**|=**Defaults**
580 -|(% style="width:266px" %)SM352|(% style="width:308px" %)X0 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
581 -|(% style="width:266px" %)SM353|(% style="width:308px" %)X0 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
582 -|(% style="width:266px" %)SM354|(% style="width:308px" %)X1 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
583 -|(% style="width:266px" %)SM355|(% style="width:308px" %)X1 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
584 -|(% style="width:266px" %)SM356|(% style="width:308px" %)X2 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
585 -|(% style="width:266px" %)SM357|(% style="width:308px" %)X2 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
586 -|(% style="width:266px" %)SM358|(% style="width:308px" %)X3 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
587 -|(% style="width:266px" %)SM359|(% style="width:308px" %)X3 falling edge interrupt|(% style="width:390px" %)ON: Shield interrupts; OFF: interrupt allowed|OFF
588 -|(% style="width:266px" %)SM360|(% style="width:308px" %)X4 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
589 -|(% style="width:266px" %)SM361|(% style="width:308px" %)X4 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
590 -|(% style="width:266px" %)SM362|(% style="width:308px" %)X5 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
591 -|(% style="width:266px" %)SM363|(% style="width:308px" %)X5 falling edge interrupt|(% style="width:390px" %)ON: Shield interrupts; OFF: interrupt allowed|OFF
592 -|(% style="width:266px" %)SM364|(% style="width:308px" %)X6 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
593 -|(% style="width:266px" %)SM365|(% style="width:308px" %)X6 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
594 -|(% style="width:266px" %)SM366|(% style="width:308px" %)X7 rising edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
595 -|(% style="width:266px" %)SM367|(% style="width:308px" %)X7 falling edge interrupt|(% style="width:390px" %)ON: shield interrupts; OFF: interrupt allowed|OFF
600 +|(% colspan="4" %)**External input interrupt mask register**
601 +|**Special register number**|**Type of interrupt**|**Instruction**|**Defaults**
602 +|SM352|X0 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
603 +|SM353|X0 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
604 +|SM354|X1 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
605 +|SM355|X1 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
606 +|SM356|X2 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
607 +|SM357|X2 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
608 +|SM358|X3 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
609 +|SM359|X3 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
610 +|SM360|X4 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
611 +|SM361|X4 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
612 +|SM362|X5 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
613 +|SM363|X5 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
614 +|SM364|X6 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
615 +|SM365|X6 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
616 +|SM366|X7 rising edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
617 +|SM367|X7 falling edge interrupt|ON: Mask interrupt OFF: Enable interrupt|OFF
596 596  
619 +2. Timer interrupt mask register
620 +
597 597  (% class="table-bordered" %)
598 -|=(% colspan="4" %)**Timer interrupt mask register**
599 -|=**Special register number**|=(% style="width: 311px;" %)**Type of interrupt**|=(% style="width: 391px;" %)**Instruction**|=(% style="width: 110px;" %)**Default**
600 -|SD350|(% style="width:311px" %)1st to 16th timer interrupt|(% style="width:391px" %)(((
622 +|(% colspan="4" %)**Timer interrupt mask register**
623 +|**Special register number**|**Type of interrupt**|**Instruction**|**Default**
624 +|SD350|1st to 16th timer interrupt|(((
601 601  Each bit can control the mask of an interrupt.
602 602  
603 -ON: shield interrupts; OFF: interrupt allowed
604 -)))|(% style="width:110px" %)0
605 -|SD351|(% style="width:311px" %)17th to 32th timer interrupt|(% style="width:391px" %)(((
627 +ON: Mask interrupt OFF: Enable interrupt
628 +)))|0
629 +|SD351|17th to 32th timer interrupt|(((
606 606  Each bit can control the mask of an interrupt.
607 607  
608 -ON: shield interrupts; OFF: interrupt allowed
609 -)))|(% style="width:110px" %)0
610 -|SD352|(% style="width:311px" %)33th to 48th timer interrupt|(% style="width:391px" %)(((
632 +ON: Mask interrupt OFF: Enable interrupt
633 +)))|0
634 +|SD352|33th to 48th timer interrupt|(((
611 611  Each bit can control the mask of an interrupt.
612 612  
613 -ON: shield interrupts; OFF: interrupt allowed
614 -)))|(% style="width:110px" %)0
615 -|SD353|(% style="width:311px" %)49th to 64th timer interrupt|(% style="width:391px" %)(((
637 +ON: Mask interrupt OFF: Enable interrupt
638 +)))|0
639 +|SD353|49th to 64th timer interrupt|(((
616 616  Each bit can control the mask of an interrupt.
617 617  
618 -ON: shield interrupts; OFF: interrupt allowed
619 -)))|(% style="width:110px" %)0
620 -|SD354|(% style="width:311px" %)65th to 80th timer interrupt|(% style="width:391px" %)(((
642 +ON: Mask interrupt OFF: Enable interrupt
643 +)))|0
644 +|SD354|65th to 80th timer interrupt|(((
621 621  Each bit can control the mask of an interrupt.
622 622  
623 -ON: shield interrupts; OFF: interrupt allowed
624 -)))|(% style="width:110px" %)0
625 -|SD355|(% style="width:311px" %)81st to 96th timer interrupt|(% style="width:391px" %)(((
647 +ON: Mask interrupt OFF: Enable interrupt
648 +)))|0
649 +|SD355|81st to 96th timer interrupt|(((
626 626  Each bit can control the mask of an interrupt.
627 627  
628 -ON: shield interrupts; OFF: interrupt allowed
629 -)))|(% style="width:110px" %)0
630 -|SD356|(% style="width:311px" %)97th to 100th timer interrupt|(% style="width:391px" %)(((
652 +ON: Mask interrupt OFF: Enable interrupt
653 +)))|0
654 +|SD356|97th to 100th timer interrupt|(((
631 631  Each bit can control the mask of an interrupt.
632 632  
633 -ON: shield interrupts; OFF: interrupt allowed
634 -)))|(% style="width:110px" %)0
657 +ON: Mask interrupt OFF: Enable interrupt
658 +)))|0
635 635  
636 636  1. high-speed counter interrupt mask register
637 637  
638 638  (% class="table-bordered" %)
639 -|=(% colspan="4" %)**High-speed counter interrupt mask register**
640 -|=(% style="width: 230px;" %)**Special register number**|=(% style="width: 348px;" %)**Type of interrupt**|=(% style="width: 387px;" %)**Instruction**|=(% style="width: 110px;" %)**Default**
641 -|(% style="width:230px" %)SD382|(% style="width:348px" %)1st to 16th high-speed counter interrupt|(% style="width:387px" %)(((
663 +|(% colspan="4" %)**High-speed counter interrupt mask register**
664 +|**Special register number**|**Type of interrupt**|**Instruction**|**Default**
665 +|SD382|1st to 16th high-speed counter interrupt|(((
642 642  Each bit can control the mask of an interrupt.
643 643  
644 -ON: shield interrupts; OFF: interrupt allowed
645 -)))|(% style="width:110px" %)0
646 -|(% style="width:230px" %)SD383|(% style="width:348px" %)17th to 32nd high-speed counter interrupt|(% style="width:387px" %)(((
668 +ON: Mask interrupt OFF: Enable interrupt
669 +)))|0
670 +|SD383|17th to 32nd high-speed counter interrupt|(((
647 647  Each bit can control the mask of an interrupt.
648 648  
649 -ON: shield interrupts; OFF: interrupt allowed
650 -)))|(% style="width:110px" %)0
651 -|(% style="width:230px" %)SD384|(% style="width:348px" %)33th to 48th high-speed counter interrupt|(% style="width:387px" %)(((
673 +ON: Mask interrupt OFF: Enable interrupt
674 +)))|0
675 +|SD384|33th to 48th high-speed counter interrupt|(((
652 652  Each bit can control the mask of an interrupt.
653 653  
654 -ON: shield interrupts; OFF: interrupt allowed
655 -)))|(% style="width:110px" %)0
656 -|(% style="width:230px" %)SD385|(% style="width:348px" %)49th to 64th high-speed counter interrupt|(% style="width:387px" %)(((
678 +ON: Mask interrupt OFF: Enable interrupt
679 +)))|0
680 +|SD385|49th to 64th high-speed counter interrupt|(((
657 657  Each bit can control the mask of an interrupt.
658 658  
659 -ON: shield interrupts; OFF: interrupt allowed
660 -)))|(% style="width:110px" %)0
661 -|(% style="width:230px" %)SD386|(% style="width:348px" %)65th to 80th high-speed counter interrupt|(% style="width:387px" %)(((
683 +ON: Mask interrupt OFF: Enable interrupt
684 +)))|0
685 +|SD386|65th to 80th high-speed counter interrupt|(((
662 662  Each bit can control the mask of an interrupt.
663 663  
664 -ON: shield interrupts; OFF: interrupt allowed
665 -)))|(% style="width:110px" %)0
666 -|(% style="width:230px" %)SD387|(% style="width:348px" %)81st to 96th high-speed counter interrupt|(% style="width:387px" %)(((
688 +ON: Mask interrupt OFF: Enable interrupt
689 +)))|0
690 +|SD387|81st to 96th high-speed counter interrupt|(((
667 667  Each bit can control the mask of an interrupt.
668 668  
669 -ON: shield interrupts; OFF: interrupt allowed
670 -)))|(% style="width:110px" %)0
671 -|(% style="width:230px" %)SD388|(% style="width:348px" %)97th to 100th high-speed counter interrupt|(% style="width:387px" %)(((
693 +ON: Mask interrupt OFF: Enable interrupt
694 +)))|0
695 +|SD388|97th to 100th high-speed counter interrupt|(((
672 672  Each bit can control the mask of an interrupt.
673 673  
674 -ON: shield interrupts; OFF: interrupt allowed
675 -)))|(% style="width:110px" %)0
698 +ON: Mask interrupt OFF: Enable interrupt
699 +)))|0
676 676  
677 677  == Subroutine ==
678 678  
679 -During the execution of the scan program, the executed program can be called by the CALL instruction. You can create up to 100 new subprograms.
703 +During the execution of the scan program, the executed program can be called by the CALL instruction.
680 680  
681 681  A subroutine is to split a certain module in the main program for the main program to call, which is conducive to the modularization of the program. Such as other high-level language functions, but this function has no parameters and no return value.
682 682  
... ... @@ -683,7 +683,7 @@
683 683  (% style="text-align:center" %)
684 684  [[image:1652250926997-587.png||class="img-thumbnail"]]
685 685  
686 -**Instructions for calling subroutines**
710 +1. Instructions for calling subroutines
687 687  
688 688  After a new subroutine is created, the content of the program is not executed. It is executed only when the CALL(P) instruction is used to call the subroutine in the scan, event, and interrupt programs, and the call is executed once. Three new subroutines SUB0, SUB1, SUB2 are created as shown in the figure below. In the main program MAIN, the subprogram can be called by using the CALL(P) subprogram program name.
689 689  
... ... @@ -692,15 +692,12 @@
692 692  (% style="text-align:center" %)
693 693  [[image:1-28.png||class="img-thumbnail"]]
694 694  
695 -(% class="box infomessage" %)
696 -(((
697 -**✎Note:**
719 +**~ 1.✎Note:**
698 698  
699 699  1. When using the timer (OUT T), note that the output will not be reset when the subroutine is not called, and a specific subroutine register must be used.
700 700  1. It is not allowed to call recursively between subprograms, that is, call SUB1 in SUB0, and then call SUB0 in SUB1. This is not allowed.
701 701  1. The subroutine can be nested up to 32 levels. If the level exceeds 32 levels, a serious error will be reported and the Circuit program operation will be forcibly stopped.
702 702  1. Unlike the LX3V series mainframe, the subroutine in the LX5V series mainframe ends with the END instruction instead of SRET.
703 -)))
704 704  
705 705  == Positioning instructions ==
706 706