Changes for page 01 Program execution
Last modified by Leo Wei on 2024/12/24 22:42
Summary
-
Page properties (1 modified, 0 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -361,7 +361,6 @@ 361 361 * During the execution of the interrupt program, when an interrupt cause with a low priority or the same priority occurs. 362 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 363 364 - 365 365 (% style="text-align:center" %) 366 366 [[image:1652249673420-476.png||class="img-thumbnail"]] 367 367 ... ... @@ -419,17 +419,17 @@ 419 419 420 420 **Timer interrupt** 421 421 422 - 1.Timer interrupt description421 +Timer interrupt description 423 423 424 - 1.Timer interrupt is based on the set time, execute the interrupt program every this time, the minimum time interval can reach 100us.425 - 1.Up to 100 timer interrupt execution programs can be created.426 - 1.Each timer interrupt program is independent of each other and does not affect each other.427 - 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.428 - 1.The interrupt execution program is executed only after EI is used in the scanner to allow the interrupt423 +* 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 429 429 430 - 2.Timer interrupt step429 +Timer interrupt step 431 431 432 -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). 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). 433 433 434 434 (% style="text-align:center" %) 435 435 [[image:1-20.png||class="img-thumbnail"]] ... ... @@ -440,34 +440,35 @@ 440 440 |(% rowspan="2" %)Timer interrupt|Time|Set the interval time for interrupt triggering|1 to 2147483647 (100us unit)| 441 441 |priority|When multiple interrupts arrive at the same time, the order of priority execution, the smallest value is executed first|0 to 2|0 442 442 443 - 1.Write interrupt execution program442 +Write interrupt execution program 444 444 445 445 (% style="text-align:center" %) 446 446 [[image:1-21.png||class="img-thumbnail"]] 447 447 448 -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. 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. 449 449 450 450 (% style="text-align:center" %) 451 451 [[image:1652250294005-455.png||class="img-thumbnail"]] 452 452 453 -** ~ 3.High-speed counter interrupt**452 +**High-speed counter interrupt** 454 454 455 - 1.Description of high-speed counter interrupt454 +Description of high-speed counter interrupt 456 456 457 - 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.458 - 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.459 - 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).460 - 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.461 - 1.Project must use EI in the scan program to allow interrupts before the interrupt execution program will be executed.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. 462 462 463 -**✎Note: **Both the HSC channel and the external input interrupt channel must use the PLC input point X. It should be noted that it 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 +))) 464 464 465 - cannot be reusedduringconfiguration. For details, pleasereferto the configurationchapterofthehigh-speed counter.467 +High-speed counter interrupt steps 466 466 467 - 1.high-speed counter interrupt step469 +* “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). 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). 470 - 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 - 3.Description of triggering rules503 + 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,21 +535,22 @@ 535 535 The program in INT2 will not be executed 536 536 ))) 537 537 538 +(% class="box infomessage" %) 539 +((( 538 538 **✎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 +))) 539 539 540 - 1.Write interrupt execution program543 +Write interrupt execution program 541 541 542 542 * 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. 543 543 544 -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. 545 - 546 546 (% style="text-align:center" %) 547 547 [[image:1-24.png||class="img-thumbnail"]] 548 548 549 549 * 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. 550 550 551 -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. 552 - 553 553 (% style="text-align:center" %) 554 554 [[image:1-25.png||class="img-thumbnail"]] 555 555 ... ... @@ -559,131 +559,123 @@ 559 559 560 560 Program operation: 561 561 562 -Assuming that the High-speed counter channel 0 has been receiving pulses: 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. 563 563 564 -When the count value of HSC0 accumulates from 0 to 20000, all procedures of HSC0_20000 are executed. 565 - 566 -When the count value of HSC0 is accumulated from 20000 to 30000, all procedures of HSC0_30000 are executed. 567 - 568 -When the count value of HSC0 is accumulated from 30000 to 40000, all procedures of HSC0_40000 are executed. 569 - 570 570 **Mask interrupt** 571 571 572 - **~ 1.Mask through application instructions**570 +Mask through application instructions 573 573 574 -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. 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). 575 575 576 - The interrupt maskinstruction DI masks all interrupts withoutparameters,andmasks some priority interrupts with parameters(referto the program flow instructionDI/EI for details).575 +Mask through special registers SM and SD 577 577 578 -**~ 2. Mask through special registers SM and SD** 579 - 580 -1.External input interrupt mask register 581 - 582 582 (% class="table-bordered" %) 583 -|(% colspan="4" %)**External input interrupt mask register** 584 -|**Special register number**|**Type of interrupt**|**Instruction**|**Defaults** 585 -|SM352|X0 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF586 -|SM353|X0 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF587 -|SM354|X1 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF588 -|SM355|X1 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF589 -|SM356|X2 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF590 -|SM357|X2 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF591 -|SM358|X3 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF592 -|SM359|X3 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF593 -|SM360|X4 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF594 -|SM361|X4 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF595 -|SM362|X5 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF596 -|SM363|X5 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF597 -|SM364|X6 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF598 -|SM365|X6 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF599 -|SM366|X7 rising edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF600 -|SM367|X7 falling edge interrupt|ON: Maskinterrupt OFF:Enableinterrupt|OFF578 +|=(% 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 601 601 602 -2. Timer interrupt mask register 603 - 604 604 (% class="table-bordered" %) 605 -|(% colspan="4" %)**Timer interrupt mask register** 606 -|**Special register number**|**Type of interrupt**|**Instruction**|**Default** 607 -|SD350|1st to 16th timer interrupt|((( 598 +|=(% colspan="4" %)**Timer interrupt mask register** 599 +|=(% style="width: 262px;" %)**Special register number**|=(% style="width: 309px;" %)**Type of interrupt**|=(% style="width: 394px;" %)**Instruction**|=(% style="width: 110px;" %)**Default** 600 +|(% style="width:262px" %)SD350|(% style="width:309px" %)1st to 16th timer interrupt|(% style="width:394px" %)((( 608 608 Each bit can control the mask of an interrupt. 609 609 610 -ON: Maskinterrupt OFF:Enableinterrupt611 -)))|0 612 -|SD351|17th to 32th timer interrupt|((( 603 +ON: shield interrupts; OFF: interrupt allowed 604 +)))|(% style="width:110px" %)0 605 +|(% style="width:262px" %)SD351|(% style="width:309px" %)17th to 32th timer interrupt|(% style="width:394px" %)((( 613 613 Each bit can control the mask of an interrupt. 614 614 615 -ON: Maskinterrupt OFF:Enableinterrupt616 -)))|0 617 -|SD352|33th to 48th timer interrupt|((( 608 +ON: shield interrupts; OFF: interrupt allowed 609 +)))|(% style="width:110px" %)0 610 +|(% style="width:262px" %)SD352|(% style="width:309px" %)33th to 48th timer interrupt|(% style="width:394px" %)((( 618 618 Each bit can control the mask of an interrupt. 619 619 620 -ON: Maskinterrupt OFF:Enableinterrupt621 -)))|0 622 -|SD353|49th to 64th timer interrupt|((( 613 +ON: shield interrupts; OFF: interrupt allowed 614 +)))|(% style="width:110px" %)0 615 +|(% style="width:262px" %)SD353|(% style="width:309px" %)49th to 64th timer interrupt|(% style="width:394px" %)((( 623 623 Each bit can control the mask of an interrupt. 624 624 625 -ON: Maskinterrupt OFF:Enableinterrupt626 -)))|0 627 -|SD354|65th to 80th timer interrupt|((( 618 +ON: shield interrupts; OFF: interrupt allowed 619 +)))|(% style="width:110px" %)0 620 +|(% style="width:262px" %)SD354|(% style="width:309px" %)65th to 80th timer interrupt|(% style="width:394px" %)((( 628 628 Each bit can control the mask of an interrupt. 629 629 630 -ON: Maskinterrupt OFF:Enableinterrupt631 -)))|0 632 -|SD355|81st to 96th timer interrupt|((( 623 +ON: shield interrupts; OFF: interrupt allowed 624 +)))|(% style="width:110px" %)0 625 +|(% style="width:262px" %)SD355|(% style="width:309px" %)81st to 96th timer interrupt|(% style="width:394px" %)((( 633 633 Each bit can control the mask of an interrupt. 634 634 635 -ON: Maskinterrupt OFF:Enableinterrupt636 -)))|0 637 -|SD356|97th to 100th timer interrupt|((( 628 +ON: shield interrupts; OFF: interrupt allowed 629 +)))|(% style="width:110px" %)0 630 +|(% style="width:262px" %)SD356|(% style="width:309px" %)97th to 100th timer interrupt|(% style="width:394px" %)((( 638 638 Each bit can control the mask of an interrupt. 639 639 640 -ON: Maskinterrupt OFF:Enableinterrupt641 -)))|0 633 +ON: shield interrupts; OFF: interrupt allowed 634 +)))|(% style="width:110px" %)0 642 642 643 643 1. high-speed counter interrupt mask register 644 644 645 645 (% class="table-bordered" %) 646 -|(% colspan="4" %)**High-speed counter interrupt mask register** 647 -|**Special register number**|**Type of interrupt**|**Instruction**|**Default** 648 -|SD382|1st to 16th high-speed counter interrupt|((( 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" %)((( 649 649 Each bit can control the mask of an interrupt. 650 650 651 -ON: Maskinterrupt OFF:Enableinterrupt652 -)))|0 653 -|SD383|17th to 32nd high-speed counter interrupt|((( 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" %)((( 654 654 Each bit can control the mask of an interrupt. 655 655 656 -ON: Maskinterrupt OFF:Enableinterrupt657 -)))|0 658 -|SD384|33th to 48th high-speed counter interrupt|((( 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" %)((( 659 659 Each bit can control the mask of an interrupt. 660 660 661 -ON: Maskinterrupt OFF:Enableinterrupt662 -)))|0 663 -|SD385|49th to 64th high-speed counter interrupt|((( 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" %)((( 664 664 Each bit can control the mask of an interrupt. 665 665 666 -ON: Maskinterrupt OFF:Enableinterrupt667 -)))|0 668 -|SD386|65th to 80th high-speed counter interrupt|((( 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" %)((( 669 669 Each bit can control the mask of an interrupt. 670 670 671 -ON: Maskinterrupt OFF:Enableinterrupt672 -)))|0 673 -|SD387|81st to 96th high-speed counter interrupt|((( 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" %)((( 674 674 Each bit can control the mask of an interrupt. 675 675 676 -ON: Maskinterrupt OFF:Enableinterrupt677 -)))|0 678 -|SD388|97th to 100th high-speed counter interrupt|((( 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" %)((( 679 679 Each bit can control the mask of an interrupt. 680 680 681 -ON: Maskinterrupt OFF:Enableinterrupt682 -)))|0 674 +ON: shield interrupts; OFF: interrupt allowed 675 +)))|(% style="width:110px" %)0 683 683 684 684 == Subroutine == 685 685 686 -During the execution of the scan program, the executed program can be called by the CALL instruction. 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. 687 687 688 688 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. 689 689 ... ... @@ -690,7 +690,7 @@ 690 690 (% style="text-align:center" %) 691 691 [[image:1652250926997-587.png||class="img-thumbnail"]] 692 692 693 - 1.Instructions for calling subroutines686 +**Instructions for calling subroutines** 694 694 695 695 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. 696 696 ... ... @@ -699,87 +699,87 @@ 699 699 (% style="text-align:center" %) 700 700 [[image:1-28.png||class="img-thumbnail"]] 701 701 702 -**~ 1.✎Note:** 695 +(% class="box infomessage" %) 696 +((( 697 +**✎Note:** 703 703 704 704 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. 705 705 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. 706 706 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. 707 707 1. Unlike the LX3V series mainframe, the subroutine in the LX5V series mainframe ends with the END instruction instead of SRET. 703 +))) 708 708 709 709 == Positioning instructions == 710 710 711 - ~1. Event 707 +(% class="wikigeneratedid" %) 708 +**Event** 712 712 713 - 1.ON event 710 +(% class="wikigeneratedid" %) 711 +ON event 714 714 715 -If the high-speed pulse instruction is turned on during the ON event, the high-speed pulse instruction will be sent as normal. If the ON contact of the trigger event in the scan period is turned OFF during the pulse sending, select whether to continue sending the pulse or stop the pulse according to the unscanned processing flag bit. 713 +* If the high-speed pulse instruction is turned on during the ON event, the high-speed pulse instruction will be sent as normal. If the ON contact of the trigger event in the scan period is turned OFF during the pulse sending, select whether to continue sending the pulse or stop the pulse according to the unscanned processing flag bit. 716 716 717 717 (% class="table-bordered" %) 718 -|**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 719 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 716 +|=(% scope="row" %)**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 717 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 720 720 721 -When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, continue to send pulses until it stops. At this time, it should be noted that if the trigger event OFF contact turns ON after the pulse is sent, the pulse will be sent again. 719 +* When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, continue to send pulses until it stops. At this time, it should be noted that if the trigger event OFF contact turns ON after the pulse is sent, the pulse will be sent again. 720 +* When the flag bit is 1 (stop sending pulses), if the trigger event ON contact turns OFF in a certain scan period, it will decelerate and stop. 722 722 723 - Whentheflag bit is 1 (stop sending pulses), if the trigger eventON contact turns OFF in a certain scan period, it will decelerate and stop.722 + TIME event 724 724 725 - 2.TIME event724 +* If the high-speed pulse instruction is turned on in the TIME event, the high-speed pulse instruction will be sent as normal. If the instruction is not scanned in a certain scan period during the pulse transmission, select whether to continue sending the pulse or stop the pulse according to the unscanned processing flag bit. 726 726 727 -If the high-speed pulse instruction is turned on in the TIME event, the high-speed pulse instruction will be sent as normal. If the instruction is not scanned in a certain scan period during the pulse transmission, select whether to continue sending the pulse or stop the pulse according to the unscanned processing flag bit. 728 - 729 729 (% class="table-bordered" %) 730 -|**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 731 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 727 +|=(% scope="row" %)**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 728 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 732 732 733 -When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, the pulse will continue to be sent until it stops. In the TIME event, it is impossible to ensure that the instruction is scanned in every scan cycle, so you should avoid using high-speed pulse instructions in the TIME time, otherwise the pulse will be sent again after the pulse is sent. 730 +* When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, the pulse will continue to be sent until it stops. In the TIME event, it is impossible to ensure that the instruction is scanned in every scan cycle, so you should avoid using high-speed pulse instructions in the TIME time, otherwise the pulse will be sent again after the pulse is sent. 731 +* When the flag bit is 1 (stop sending pulses), if the instruction is not scanned in the current scan cycle, it will decelerate and stop. In the TIME event, if the flag bit is set to 1 (stop sending pulses), there will be no pulse sending. 734 734 735 - When the flag bit is 1 (stop sending pulses), if the instruction is not scanned in the currentscan cycle,it will decelerate and stop. In theTIME event, if the flag bit is set to 1 (stop sending pulses), there will be no pulse sending.733 +**Subroutine** 736 736 737 - 2. Subroutine 738 - 739 739 If the high-speed pulse instruction is turned on in the subroutine, the high-speed pulse instruction will be sent as normal. If the scanning period is closed during pulse sending, select whether to continue sending or stop the pulse according to the unscanned processing flag. 740 740 741 741 (% class="table-bordered" %) 742 -|**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 743 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 738 +|=(% scope="row" %)**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 739 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 744 744 745 745 When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, the pulse will continue to be sent until it stops. At this time, it should be noted that if the subroutine is called again after the pulse is sent, the pulse will be sent again. 746 746 747 747 When the flag bit is 1 (stop sending pulses), if the subroutine is closed during high-speed pulse sending, the speed will decelerate and stop. If the subroutine is closed before sending the pulse, then no pulse is sent. 748 748 749 - 3.Interrupt745 +**Interrupt** 750 750 751 - 1.External interrupt747 +External interrupt 752 752 753 -If the high-speed pulse instruction is enabled in the external interrupt, the high-speed pulse instruction selects whether the pulse continues to be sent or the pulse stops according to the unscanned processing flag bit. 749 +* If the high-speed pulse instruction is enabled in the external interrupt, the high-speed pulse instruction selects whether the pulse continues to be sent or the pulse stops according to the unscanned processing flag bit. 754 754 755 755 (% class="table-bordered" %) 756 -|**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 757 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 752 +|=(% scope="row" %)**Output shaft**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 753 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 758 758 759 -When the flag bit is 0 (continue to send pulse), continue to send high-speed pulses until it stops. 755 +* When the flag bit is 0 (continue to send pulse), continue to send high-speed pulses until it stops. 756 +* When the flag bit is 1 (stop sending pulse), the high-speed pulse decelerates and stops. 760 760 761 - Whenthe flag bit is 1 (stop sending pulse),thehigh-speed pulse decelerates and stops.758 +Timer interrupt 762 762 763 - 2.Timer interrupt760 +* If the high-speed pulse instruction is turned on in the timer interruption, the high-speed pulse instruction is sent as normal. If the instruction is not scanned in a certain scan period in the pulse transmission, the pulse continues to be sent or the pulse stops is selected according to the unscanned processing flag. 764 764 765 -If the high-speed pulse instruction is turned on in the timer interruption, the high-speed pulse instruction is sent as normal. If the instruction is not scanned in a certain scan period in the pulse transmission, the pulse continues to be sent or the pulse stops is selected according to the unscanned processing flag. 766 - 767 767 (% class="table-bordered" %) 768 -|**Output axis**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 769 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 763 +|=(% scope="row" %)**Output axis**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 764 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 770 770 771 -When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, continue to send pulses until it stops. In the timer interrupt, it is impossible to ensure that the instruction is scanned in every scan cycle, so it is necessary to avoid using high-speed pulse instructions in the T timer interrupt. Otherwise, after the pulse transmission is completed, the pulse will be sent again. 766 +* When the flag bit is 0 (continue to send pulse), if the instruction is not scanned in the current scan cycle, continue to send pulses until it stops. In the timer interrupt, it is impossible to ensure that the instruction is scanned in every scan cycle, so it is necessary to avoid using high-speed pulse instructions in the T timer interrupt. Otherwise, after the pulse transmission is completed, the pulse will be sent again. 767 +* When the flag bit is 1 (stop sending pulses), if the instruction is not scanned in the current scan cycle, it will decelerate and stop. In the TIME event, if the flag bit is set to 1 (stop sending pulses), there will be no pulse sending. 772 772 773 - When the flag bit is1 (stopsendingpulses), if the instruction is not scanned in the current scan cycle,it will decelerate andstop. Inthe TIME event,if the flag bit is set to 1 (stop sending pulses),there will be no pulse sending.769 +High-speed comparison interrupt 774 774 775 - 3.High-speed comparison interrupt771 +* If the high-speed pulse instruction is enabled in the high-speed comparison interrupt, the high-speed pulse instruction selects whether the pulse continues to be sent or the pulse stops according to the unscanned processing flag. 776 776 777 -If the high-speed pulse instruction is enabled in the high-speed comparison interrupt, the high-speed pulse instruction selects whether the pulse continues to be sent or the pulse stops according to the unscanned processing flag. 778 - 779 779 (% class="table-bordered" %) 780 -|**Output axis**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 781 -|**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 774 +|=(% scope="row" %)**Output axis**|Y0|Y1|Y2|Y3|Y4|Y5|Y6|Y7 775 +|=**Not scanned flag bit**|SM899|SM959|SM1019|SM1079|SM1139|SM1199|SM1259|SM1319 782 782 783 -When the flag bit is 0 (continue to send pulse), continue to send high-speed pulses until it stops. 784 - 785 -When the flag bit is 1 (stop sending pulse), the high-speed pulse decelerates and stops. 777 +* When the flag bit is 0 (continue to send pulse), continue to send high-speed pulses until it stops. 778 +* When the flag bit is 1 (stop sending pulse), the high-speed pulse decelerates and stops.