Changes for page 01 Lua Functions

Last modified by Theodore Xu on 2023/10/26 10:51

From version 5.3
edited by Leo
on 2022/06/16 17:20
Change comment: Renamed from xwiki:V-BOX.V-Net.1\.User Manual.04 Lua Script.01\.Lua script function.WebHome
To version 5.8
edited by Stone Wu
on 2022/07/12 09:25
Change comment: (Autosaved)

Summary

Details

Page properties
Title
... ... @@ -1,1 +1,1 @@
1 -01 Lua script function
1 +01 Lua Functions
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.Leo
1 +XWiki.Stone
Content
... ... @@ -1,70 +1,66 @@
1 -= **1 Interface Description** =
1 += **1 Interface description** =
2 2  
3 -== **1.1 Data type definition** ==
3 +== **Data type definition** ==
4 4  
5 -
6 6  |=**Type**|=**Description**
7 7  |=nil|Null
8 -|=boolean|Boolean, the value is true or false
9 -|=number|Integer or floating point, signed or unsigned
7 +|=boolean|Boolean (the value is true or false)
8 +|=number|Integer or floating point (signed or unsigned)
10 10  |=string|String
11 11  |=table|Table
12 12  |=function|Functions
13 13  
14 -== **1.2 Built-in function library clipping** ==
13 +== **Built-in function library clipping** ==
15 15  
16 16  Full features supported: coroutine/debug/ math/ package/ string/ table/ utf8
17 17  
18 -//,,Some features supported (available in []):** **os[clock/ date/ difftime/ time],,//
17 +//Some features supported (available in []):** **os[clock/ date/ difftime/ time]//
19 19  
20 -//,,Not supported: io/ file,,//
19 +//Not supported: io/ file//
21 21  
22 -== **1.3 Return value description** ==
21 +== **Return value description** ==
23 23  
24 24  The function return type multi means multiple return values (at least 2), usually:
25 25  
26 -//,,1st: nil;,,//
25 +//1st: nil//
27 27  
28 -//,,2nd: the error message;,,//
27 +//2nd: the error message//
29 29  
30 30  (((
31 -== **1.4 Function parameter description** ==
30 +== **Function parameter description** ==
32 32  )))
33 33  
34 -**Assume the function prototype:**
33 +Suppose a function prototype is defined:
35 35  
36 -|(((
37 -//student(string name, number age[, number class])//
35 +{{code language="LUA"}}
36 +student(string name, number age[, number class])
38 38  
39 -**Function:**
38 +Function:
40 40  
41 41  Register a student
42 42  
43 -**Parameters:**
42 +Parameters:
44 44  
45 -//name//: student name
44 +name: student name
46 46  
47 -//age//: student age
46 +age: student age
48 48  
49 -//[class=1]//: Student class
48 +[class=1]: Student class
50 50  
51 -**Return:**
50 +Return:
52 52  
53 53  Succeed: true
54 54  
55 55  Failed: multi
56 -)))
55 +{{/code}}
57 57  
58 -**Comment**
57 +**Explanation**
59 59  
60 -1.string name indicates that the first parameter name is a string
59 +1. string name indicates that the first parameter name is a string
60 +1. number age indicates that the second parameter age is numeric
61 +1. [, number class] indicates that the third parameter class is a numeric value, and it is optional. Specify the default class in class 1 in the parameter description.
62 +1. **Any parameter in the [] is considered to be an optional parameter, and may not be transmitted when called. The default value will be given in the parameter description.**
61 61  
62 -2.number age indicates that the second parameter age is numeric
63 -
64 -3. [, number class] indicates that the third parameter class is a numeric value, and it is optional. Specify the default class in class 1 in the parameter description.
65 -
66 -4. Any parameter in the brackets of [] is considered to be an optional parameter, and may not be transmitted when called. The default value will be given in the parameter description.
67 -
68 68  **Call example**
69 69  
70 70  |(((
... ... @@ -93,28 +93,23 @@
93 93  
94 94  **Comment**
95 95  
96 -1.From the print result, the second line of the first line is successfully called and returns true; the third line fails the call, the error message is translated as: the bar student has been registered, and there is indeed an error in the code.
92 +1. From the print result, the first line and the second line are successfully called and returns true; the third line fails the call, the error message is translated as: the bar student has been registered, and there is indeed an error in the code.
93 +1. The fourth line of code uses two variables to receive the return value. The call failed, the first variable stat is nil, and the second variable err stores the error message. Then print it out using print, which is the output of the third line. This example shows how to capture and view the error message.
97 97  
98 -2.The fourth line of code uses two variables to receive the return value. The call failed, the first variable stat is nil, and the second variable err stores the error message. Then print it out using print, which is the output of the third line. This example shows how to capture and view the error message.
95 +== **Modification of print function** ==
99 99  
100 -== **1.5 Modification of the Print Function** ==
97 +For the convenience of remote development, the print data is sent to the front end (web page) by means of network transmission, and the user can see the result of the debug output, because it consumes certain data and occupies the bandwidth of the server (or occupies server resources). So the following restrictions are made.
101 101  
102 -For the convenience of remote development, the print data is sent to the front end (web page) by means of network transmission, and the user can see the result of the debug output, because it consumes certain data and occupies the bandwidth of the server (or occupies server resources). So make the following restrictions:
99 +1. **Interval limit: **When debugging, transfer once every 2~~3 seconds;
100 +1. **Data limit: **The transfer data cannot be larger than 1.5KB in a single transmission, otherwise the extra part will be ignored;
101 +1. **Transmission limit: **The data transmission will be stopped automatically after the debugging windows is not closed normally. Only when it is in the debugging window and the switch is on, there is data transmission;
103 103  
104 -**1.Interval limit: **When debugging, transfer once every 2~~3 seconds;
105 -
106 -**2.Data limit: **The transfer data cannot be larger than 1.5KB, and the extra part will be ignored;
107 -
108 -**3.Transmission limit: **The data transmission will be stopped automatically after the debugging windows is not closed normally. Only when it is in the debugging window and the switch is on, there is data transmission;
109 -
110 110  Users should pay attention to avoid printing a lot of useless information, should minimize the debug output
111 111  
112 112  In addition, please refer to the front-end documentation for how to use view debugging.
113 113  
114 114  (((
115 -= **2 Address Operation** =
116 -
117 -
108 += **2 Address operation** =
118 118  )))
119 119  
120 120  |=16-bit data formal|=HLword|=32-bit data formal|=HLword|= 64-bit data formal|=HLword
... ... @@ -147,20 +147,17 @@
147 147  43218765
148 148  )))|10
149 149  
150 -* If HLword enters any other value, it will be treated as invalid.
141 + Table 2-1
151 151  
152 - Demo:  Reads a 32-bit floating-point number at position D0 of PLC
143 +(% class="box errormessage" %)
144 +(((
145 +**✎Note: **If HLword enters any other value, it will be treated as invalid.
146 +)))
153 153  
148 +== **addr_getshort(string addr[, number type, number hlword])** ==
154 154  
150 +**Function:** Read 16-bit signed decimal address
155 155  
156 -[[image:企业微信截图_20210506180640.png||height="301" width="600" class="img-thumbnail"]]
157 -
158 -== **2.1 addr_getshort(string addr[, number type, number hlword])** ==
159 -
160 -**Function:**
161 -
162 -Read 16-bit signed decimal address
163 -
164 164  **Parameters:**
165 165  
166 166  //addr//: address
... ... @@ -178,13 +178,11 @@
178 178  Failed: multi
179 179  
180 180  (((
181 -== **2.2 addr_setshort(string addr, number num[, number type, number hlword])** ==
169 +== **addr_setshort(string addr, number num[, number type, number hlword])** ==
182 182  )))
183 183  
184 -**Function:**
172 +**Function:** Write 16-bit signed decimal address
185 185  
186 -Write 16-bit signed decimal address
187 -
188 188  **Parameters:**
189 189  
190 190  //addr//: address
... ... @@ -202,13 +202,11 @@
202 202  Failed: multi
203 203  
204 204  (((
205 -== **2.3 addr_getword(string addr[, number type, number hlword])** ==
191 +== **addr_getword(string addr[, number type, number hlword])** ==
206 206  )))
207 207  
208 -**Function:**
194 +**Function:** Read 16-bit unsigned decimal address
209 209  
210 -Read 16-bit unsigned decimal address
211 -
212 212  **Parameters:**
213 213  
214 214  //addr//: address
... ... @@ -224,13 +224,11 @@
224 224  Failed: multi
225 225  
226 226  (((
227 -== **2.4 addr_setword(string addr, number num[, number type, number hlword])** ==
211 +== **addr_setword(string addr, number num[, number type, number hlword])** ==
228 228  )))
229 229  
230 -**Function:**
214 +**Function:**Write 16-bit unsigned decimal address
231 231  
232 -Write 16-bit unsigned decimal address
233 -
234 234  **Parameters:**
235 235  
236 236  //addr//: address
... ... @@ -248,13 +248,11 @@
248 248  Failed: multi
249 249  
250 250  (((
251 -== **2.5 addr_getint(string addr[, number type, number hlword])** ==
233 +== **addr_getint(string addr[, number type, number hlword])** ==
252 252  )))
253 253  
254 -**Function:**
236 +**Function:** Read 32-bit signed decimal address
255 255  
256 -Read 32-bit signed decimal address
257 -
258 258  **Parameters:**
259 259  
260 260  //addr//: address
... ... @@ -270,13 +270,11 @@
270 270  Failed: multi
271 271  
272 272  (((
273 -== **2.6 addr_setint(string addr, number num[, number type, number hlword])** ==
253 +== **addr_setint(string addr, number num[, number type, number hlword])** ==
274 274  )))
275 275  
276 -**Function:**
256 +**Function:** Write 32-bit signed decimal address
277 277  
278 -Write 32-bit signed decimal address
279 -
280 280  **Parameters:**
281 281  
282 282  //addr//: address
... ... @@ -294,13 +294,11 @@
294 294  Failed: multi
295 295  
296 296  (((
297 -== **2.7 addr_getdword(string addr[, number type, number hlword])** ==
275 +== **addr_getdword(string addr[, number type, number hlword])** ==
298 298  )))
299 299  
300 -**Function:**
278 +**Function:** Read 32-bit unsigned decimal address
301 301  
302 -Read 32-bit unsigned decimal address
303 -
304 304  **Parameters:**
305 305  
306 306  //addr//: address
... ... @@ -316,13 +316,11 @@
316 316  Failed: multi
317 317  
318 318  (((
319 -== **2.8 addr_setdword(string addr, number num[, number type, number hlword])** ==
295 +== **addr_setdword(string addr, number num[, number type, number hlword])** ==
320 320  )))
321 321  
322 -**Function:**
298 +**Function:** Write 32-bit unsigned decimal address
323 323  
324 -Write 32-bit unsigned decimal address
325 -
326 326  **Parameters:**
327 327  
328 328  //addr//: address
... ... @@ -340,13 +340,11 @@
340 340  Failed: multi
341 341  
342 342  (((
343 -== **2.9 addr_getbit(string addr[, number type])** ==
317 +== **addr_getbit(string addr[, number type])** ==
344 344  )))
345 345  
346 -**Function:**
320 +**Function:** Read a bit of the register address
347 347  
348 -Read a bit of the register address
349 -
350 350  **Parameters:**
351 351  
352 352  //addr//: address
... ... @@ -362,13 +362,11 @@
362 362  Failed: multi
363 363  
364 364  (((
365 -== **2.10 addr_setbit(string addr, number num[, number type])** ==
337 +== **addr_setbit(string addr, number num[, number type])** ==
366 366  )))
367 367  
368 -**Function:**
340 +**Function:** Write a bit of the register address
369 369  
370 -Write a bit of the register address
371 -
372 372  **Parameters:**
373 373  
374 374  //addr//: address
... ... @@ -386,13 +386,11 @@
386 386  Failed: multi
387 387  
388 388  (((
389 -== **2.11 addr_getfloat(string addr[, number type, number hlword])** ==
359 +== **addr_getfloat(string addr[, number type, number hlword])** ==
390 390  )))
391 391  
392 -**Function:**
362 +**Function:** Read 32-bit floating address
393 393  
394 -Read 32-bit floating address
395 -
396 396  **Parameters:**
397 397  
398 398  //addr//: address
... ... @@ -408,13 +408,11 @@
408 408  Failed: multi
409 409  
410 410  (((
411 -== **2.12 addr_setfloat(string addr, number num[, number type, number hlword])** ==
379 +== **addr_setfloat(string addr, number num[, number type, number hlword])** ==
412 412  )))
413 413  
414 -**Function:**
382 +**Function:** Write 32-bit floating address
415 415  
416 -Write 32-bit floating address
417 -
418 418  **Parameters:**
419 419  
420 420  //addr//: address
... ... @@ -432,13 +432,11 @@
432 432  Failed: multi
433 433  
434 434  (((
435 -== **2.13 addr_getdouble(string addr[, number type, number hlword])** ==
401 +== **addr_getdouble(string addr[, number type, number hlword])** ==
436 436  )))
437 437  
438 -**Function:**
404 +**Function:** Read 64-bit floating address
439 439  
440 -Read 64-bit floating address
441 -
442 442  **Parameters:**
443 443  
444 444  //addr//: address
... ... @@ -454,13 +454,11 @@
454 454  Failed: multi
455 455  
456 456  (((
457 -== **2.14 addr_setdouble(string addr, number num[, number type, number hlword])** ==
421 +== **addr_setdouble(string addr, number num[, number type, number hlword])** ==
458 458  )))
459 459  
460 -**Function:**
424 +**Function:** Write 64-bit floating address
461 461  
462 -Write 64-bit floating address
463 -
464 464  **Parameters:**
465 465  
466 466  addr: address
... ... @@ -478,13 +478,11 @@
478 478  Failed: multi
479 479  
480 480  (((
481 -== **2.15 addr_getstring(string addr, number length[, number type, number hlbyte])** ==
443 +== **addr_getstring(string addr, number length[, number type, number hlbyte])** ==
482 482  )))
483 483  
484 -**Function:**
446 +**Function:** Read the specified length string from address
485 485  
486 -Read the specified length string from address
487 -
488 488  **Parameters:**
489 489  
490 490  //addr//: address
... ... @@ -502,13 +502,11 @@
502 502  Failed: multi
503 503  
504 504  (((
505 -== **2.16 addr_setstring(string addr, string str[, number type, number hlbyte])** ==
465 +== **addr_setstring(string addr, string str[, number type, number hlbyte])** ==
506 506  )))
507 507  
508 -**Function:**
468 +**Function:** Write the specified length string to address
509 509  
510 -Write the specified length string to address
511 -
512 512  **Parameters:**
513 513  
514 514  //addr//: address
... ... @@ -526,13 +526,11 @@
526 526  Failed: multi
527 527  
528 528  (((
529 -== **2.17 addr_bmov(string dst, string src, number length)** ==
487 +== **addr_bmov(string dst, string src, number length)** ==
530 530  )))
531 531  
532 -**Function:**
490 +**Function:** Copy data from source address to destination address
533 533  
534 -Copy data from source address to destination address
535 -
536 536  **Parameters:**
537 537  
538 538  //dst//: destination address
... ... @@ -548,13 +548,11 @@
548 548  **Failed: multi**
549 549  
550 550  (((
551 -== **2.18 addr_fill(string addr, number num, number length)** ==
507 +== **addr_fill(string addr, number num, number length)** ==
552 552  )))
553 553  
554 -**Function:**
510 +**Function:** Write the same value to consecutive addresses
555 555  
556 -Write the same value to consecutive addresses
557 -
558 558  **Parameters:**
559 559  
560 560  //addr//: address
... ... @@ -570,13 +570,11 @@
570 570  Failed: multi
571 571  
572 572  (((
573 -== **2.19 addr_newnoaddr(string addr, number offset)** ==
527 +== **addr_newnoaddr(string addr, number offset)** ==
574 574  )))
575 575  
576 -**Function:**
530 +**Function:** Offset address value relative to //addr//
577 577  
578 -Offset address value relative to //addr//
579 -
580 580  **Parameters:**
581 581  
582 582  //addr//: address
... ... @@ -590,13 +590,11 @@
590 590  Failed: multi
591 591  
592 592  (((
593 -== **2.20 addr_newstataddr(string addr, number offset)** ==
545 +== **addr_newstataddr(string addr, number offset)** ==
594 594  )))
595 595  
596 -**Function:**
548 +**Function:** Offset station number relative to //addr //station number
597 597  
598 -Offset station number relative to //addr //station number
599 -
600 600  **Parameters:**
601 601  
602 602  //addr//: address
... ... @@ -609,12 +609,10 @@
609 609  
610 610  Failed: multi
611 611  
612 -== **2.21 addr_gethex64(string addr[, number type, number hlword])** ==
562 +== **addr_gethex64(string addr[, number type, number hlword])** ==
613 613  
614 -**Function:**
564 +**Function:** Read 64-bit hexadecimal numbers
615 615  
616 -Read 64-bit hexadecimal numbers
617 -
618 618  **Parameters:**
619 619  
620 620  //addr//: address
... ... @@ -629,12 +629,10 @@
629 629  
630 630  Failed: multi
631 631  
632 -== **2.22 addr_sethex64(string addr, number num[, number type, number hlword])** ==
580 +== **addr_sethex64(string addr, number num[, number type, number hlword])** ==
633 633  
634 -**Function:**
582 +**Function:** Write 64-bit hexadecimal addresses
635 635  
636 -Write 64-bit hexadecimal addresses
637 -
638 638  **Parameters:**
639 639  
640 640  //addr//: address
... ... @@ -655,11 +655,11 @@
655 655  
656 656  Operations on the serial port such as read, write, etc. must use ':' for full mode calls, ie operations on an open serial object.
657 657  
658 -**Serial port name and mode:**
604 +**Serial port name and mode**
659 659  
660 660  The serial port configured in the communication configuration window cannot be configured again using the script. RS232 and RS458 (or RS422) can be used simultaneously, but RS422 and RS485 are mutually exclusive.For example, when the communication port is configured with COM1-485, the script can only open COM1-232, but not COM1-485/422. Similarly, when the communication port is configured with COM2-485, the script can only open COM2-232, but not COM2-485.
661 661  
662 -Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below
608 +Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below.
663 663  
664 664  |(((
665 665  local setup = {