Twincat 语法

Keep Open and Learning
jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

Re: Twincat 语法

Post by jiataifeng » 08 Sep 2018 04:00

transition condition can have the value TRUE or FALSE.

transition中进行计算function block中的变量,以Boolean返回结果。类似于一个只能返回true,false的函数。

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

比大小

Post by jiataifeng » 08 Sep 2018 05:23

= //相等
>
>=
<
<=
<>
Last edited by jiataifeng on 14 Sep 2018 00:01, edited 1 time in total.

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

赋值

Post by jiataifeng » 08 Sep 2018 05:29

:= // 相当于=
=> //输出赋值
S= // set,
R= //set
REF= //引用
nVarInt1 := nVarInt2 := nVarInt3 + 9;
b := (i = 1)

bVar1 S= bVar2;
bVar1 obtains the value of bVar2. If bVar1 was set to TRUE once, bVar1 remains TRUE, even if bVar2 becomes FALSE again.

bVar1 R= bVar2;
bVar1 obtains the value of bVar2. If bVar1 was set to FALSE once, bVar1 remains FALSE, even if bVar2 becomes TRUE again.

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

Re: Twincat 语法

Post by jiataifeng » 12 Sep 2018 03:43

F_Trig, R_Trig
主要是用来判断启动、结束的瞬间动作
1.jpg
1.jpg (5.88 KiB) Viewed 3287 times

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

变量转换

Post by jiataifeng » 13 Sep 2018 23:57

这里

• <INT type>_TO_<INT type>:
<INT data type>_TO_<INT data type>
INT_TO_SINT,把整型转为短整型。


•BOOL_TO
BOOL_TO_<data type>
nVar := BOOL_TO_INT(TRUE);//1
sVar := BOOL_TO_STRING(TRUE);//'TRUE'
tVar := BOOL_TO_TIME(TRUE);//T#1ms
tVar := BOOL_TO_TOD(TRUE);//TOD#00:00:00.001
dVar := BOOL_TO_DATE(FALSE);//D#1970
dtVar := BOOL_TO_DT(TRUE);//DT#1970-01-01-00:00:01

•DATE_TO/DT_TO
<DATE data type>_TO_<data type>
bVar := DATE_TO_BOOL(D#1970-01-01);//FALSE
nVar := DATE_TO_INT(D#1970-01-15);//29952
nVar := DT_TO_BYTE(DT#1970-01-15-05:05:05);//129
sVar := DT_TO_STRING(DT#1998-02-13-14:20);//'DT#1998-02-13-14:20:00'

•REAL_TO-/ LREAL-TO
REAL_TO_<data type>
LREAL_TO_<data type>
nVar1 := REAL_TO_INT(1.5);//2
nVar2 := REAL_TO_INT(1.4);//1
nVar1 := REAL_TO_INT(-1.5);//-2
nVar2 := REAL_TO_INT(-1.4);//-1

•STRING_TO
STRING_TO_<data type>
bVar := STRING_TO_BOOL('TRUE');//TRUE
nVar := STRING_TO_WORD('abc34');//0
nVar := STRING_TO_WORD('34abc');//34
tVar := STRING_TO_TIME('T#127ms');//T#127ms
fVar := STRING_TO_REAL('1.234');//1.234
nVar := STRING_TO_BYTE('500');//244

•TIME_TO/TIME_OF_DAY_TO
sVar := TIME_TO_STRING(T#12ms);//T#12ms
nVar := TIME_TO_DWORD(T#5m);//300000
nVar := TOD_TO_SINT(TOD#00:00:00.012);//12

•TO_<xxx>
TO_<data type>
nVar := TO_WORD('123'); (* Result: 123 *)
bVar := TO_BOOL(1); (* Result: TRUE *)
sVar := TO_STRING(342); (* Result: '342' *)
nVar_ = TO_INT(4.22); (* Result: 4 *)

•TO_BOOL
<data type>_TO_BOOL
bVar := BYTE_TO_BOOL(2#11010101);//TRUE
bVar := INT_TO_BOOL(0);//FALSE
bVar := TIME_TO_BOOL(T#5ms);//TRUE
bVar := STRING_TO_BOOL('TRUE');//TRUE

•TRUNC
from type REAL to type DINT. only uses the integer part of the number.
nVar1 := TRUNC(1.9); (* Result: 1 *)
nVar2 := TRUNC(-1.4); (* Result: -1 *)

•TRUNC_INT
TRUNC的升级版

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

运算符

Post by jiataifeng » 14 Sep 2018 01:32

原文

一、地址运算符
1. 取地址运算符ADR
nVar := ADR(bVAR);//nVar为地址,类型一般为PVOID, or in a DWORD or LWORD, depending on the runtime system
2. 取内容运算符‘^’
nInt1 : INT;
nInt2 : INT;
pSample := ADR(nInt1);
nInt2 := pSample^;
3.BITADR 暂不理解

二、算数运算符
1. +, ADD
2. -, SUB
3. *, MUL
4. /, DIV
5. mod,mod
6. move, =
7. SIZEOF//字节数

三、选择运算符
1. LIMIT,选择第二大的数。//nVar := LIMIT(30,90,80);//nVar是80
2. MAX,取最大
3. MIN
4. MUX 输出第N可输入值。nVar := MUX(0,30,40,50,60,70,80);//nVar是30
5. SEL 选择语句 OUT := SEL(G, IN0, IN1) means:OUT := IN0; if G = FALSE; OUT := IN1; if G = TRUE

四、移位运算符
1. SHL erg := SHL (in, n)//将in左移n位
2. SHR
3. ROL //循环左移
4. ROR //循环右移

五、位运算
AND 按位与
AND_THEN, 条件按位与,仅使用ST代码。 IF (ptr < > 0 AND_THEN ptr ^ = 99) THEN..., this can avoid problems with null pointers.
NOT, 按位取反
OR,按位取或,但是如果两个条件 A OR B 如果A为TRUE,仍旧会取判断B.
OR_ELSE,同OR,但同样的情况喜爱不会再去判断B
XOR,异或

六、数值运算
•ABS 绝对值
•ACOS 反余弦
•ASIN 反正弦
•ATAN 反正切
•COS 余弦
•EXP,以e为底的指数,EXP(2),指e^2
•EXPT,取指数,EXPT(7,2);为7^2
•LN
•LOG
•SIN
•SQRT
•TAN

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

Re: Twincat 语法

Post by jiataifeng » 28 Sep 2018 23:17

ARRAY:

aCardGame : ARRAY [1..13, 1..4] OF INT;//13row,4column

Code: Select all

	FOR i:=1 TO 13 BY 1 DO
		FOR j:=1 TO 4 BY 1 DO
			aCardGame[i,j]:=Par1;
		END_FOR
	END_FOR
Last edited by jiataifeng on 16 Nov 2018 05:37, edited 2 times in total.

jiataifeng
Posts: 178
Joined: 30 Apr 2009 06:31

Re: Twincat 语法

Post by jiataifeng » 29 Sep 2018 05:11

Twincat中的js函数,参考

(function (TcHmi) {

var HMIPushFirst = function (par1) {

};

TcHmi.Functions.registerFunction('HMIPushFirst', HMIPushFirst);
})(TcHmi);

Post Reply