1 该语言不区分大小写:
2 私有软元件区:硬件寄存器地址
%I 输入区 %id0 //32bit长度,从0bit开始截取
%Q 输出区
%M 存储区
%ix0.0 // 1bit长度,从0bit开始截取
3值类型长度:用于截取bit长度
X: 1位 (bit)//bool
B: 8位 (byte) // 8bit
W: 16位 (word) // 16bit
D: 32位 (double) // 32bit
L: 64位 (long) // 64bit
语法:%< 存储器区前缀iqm>< bit长度前缀xbwdl>< 首地址数字>|.< 数字>
变量名1 at 绑定地址%mw10 : 类型解释 word := 赋值 1234;
输出2 at %qd0 : dint := 16#0f; //32bit类型,Q区输出:00001111
4硬件寄存器地址:%软元件+长度 (组合)
%ix0.0 // 输入区 0bit位置
%qx0.0 // 输出区 0bit位置
%qb0 := 16#0f // 输出区 0bit位置开始(截取 8bit) 00001111指示灯
%qw0 := 16#0f // 输出区 0bit位置开始(截取16bit) 00001111指示灯
区别在于截取的bit长度不一样。
5值类型: 选中变量 shift + F2
a: BOOL := FALSE; // 变量 a 是布尔类型,值是0
wo的进制: BYTE := 255; // byte类型 默认值255
a:=TRUE;
wo的进制 := 123; // 十进制表示
wo的进制 := 16#0F; // 十六进制表示
wo的进制 := 10#255; // 十进制表示
wo的进制 := 8#255; // 八进制表示
wo的进制 := 2#00001111; // 二进制表示
:= 是赋值的意思 , 16# 是十六进制
整数
byte 8bit 数据范围0~255
usint 8bit
uint 16bit
udint 32bit
ulint 64bit
负整数
sint -8bit
int -16bit
dint -32bit
lint -64bit 受限于PLC的cpu
小数
real -32bit
lreal -64bit
时间
time 32bit 毫秒 T#12345MS;
ltime 64bit L毫秒 LTIME#12.789D; // D天 H时 M分 S秒 MS毫秒
date 32bit 年-月-日 D#2022-10-24;
date_and_time 32bit 年-月-日L DT#1970-1-1-0:0:0
time_of_day 32bit 时-分-秒 TOD#14:57:39;// 4 TOD#
其他
bool 8bit 数据只能是TRUE或FALSE
word 16bit WORD#1234;//2
dword 32bit DWORD#12345;//4
lword 64bit LWORD#123456789;//8
string 81字节 'ABCDEF'
wstring 162字节 "汇川PLC-AM600"
下面我来验证一下数据长度:
// 正整数_类型
lookbyte := SIZEOF(BYTE);// 1 (0~255)
lookusint := SIZEOF(USINT);// 1
lookuint := SIZEOF(UINT);// 2
lookudint := SIZEOF(UDINT);// 4
lookulint := SIZEOF(ULINT);// 8
u8 := -127;// 129
byte2 := -99999;
usint2 := -99999999;
uint2 := -99999999;
udint2 := -99999999;
ulint2 := -99999999;

它只能表示正数,且bit长度不能超出。
下面验证 负整数
// 负整数
looksint := SIZEOF(SINT);// 1
lookint := SIZEOF(INT);// 2
lookdint := SIZEOF(DINT);// 4
looklint := SIZEOF(LINT);// 8
sint2 := -128;
int2 := -12345;
dint2 := -1234567;
lint2 := -9999999;

下面验证 小数
// 小数_浮点数
lookreal := SIZEOF(REAL);// 4
looklreal:= SIZEOF(LREAL);// 8
real2 := -65535.1234567;
lreal2 := -2147483647.1234567;

验证一下时间
// 时间_类型
looktime := SIZEOF(TIME);// 4 T# 毫秒
lookltime := SIZEOF(LTIME);// 8 LTIME# L毫秒
lookdate := SIZEOF(DATE); // 4 D# 年-月-日 D#2022-10-24;
// dateandtime //4 DT# 年-月-日L DT#1970-1-1-0:0:0
// timeofday //4 TOD# 时-分-秒 TOD#14:57:39;// 4 TOD#
time2 := T#12345.6789S; //4 T#12345ms;
ltime2 := LTIME#12.789D; //8 D天 H时 M分 S秒 MS毫秒
date2 := D#2022-10-24;//4 年-月-日
lookdateandtime := SIZEOF(dateandtime);//4
dateandtime2 :=DT#2022-1-1-0:0:0; // 4 年-月-日L DT#
looktimeofday :=SIZEOF(timeofday);// 4
timeofday2 := TOD#14:57:39;// 4 时-分-秒 TOD#

其它类型:
// 其它
lookbool := SIZEOF(BOOL);// 1 false true
bool2 := TRUE; // false true
lookword := SIZEOF(WORD); // 2
lookdword := SIZEOF(DWORD); // 4
looklword := SIZEOF(LWORD); // 8
lookstring := SIZEOF(STRING); // 81
lookwstring := SIZEOF(WSTRING);//162
word2 := WORD#1234;//2
dword2 :=DWORD#12345;//4
lword2 :=LWORD#123456789;//8
string2 := INT_TO_STRING(23);//
wstring2 := "汇川PLC";//
string3 := WSTRING_TO_STRING( wstring2);//

word和string我还不明白
wstring 是字符串
6变量区修饰:
局部变量 var
输入 var_input
输出 var_output
输入输出 var_in_out
常量 var_constant
全局变量 : Application-右键添加GVL

7语法:
: 类型指定
:= 赋值
<> 不等于
= 逻辑等于
EXPT 求幂
NOT 取反
* 乘法
/ 除法
MOD 取余
and 逻辑与
xor 逻辑异或
or 逻辑或
s= 置位
r= 复位
not 逻辑非
if
IF value < 7 THEN
WHILE value < 8 DO
value := value +1;
END_WHILE;
END_IF;
IF guzhang故障 THEN
%QX0.0 :=1; // Q0.0=1; 黄色灯
;
ELSE
%Qx0.0 :=0; // Q0.0=1; 黄色灯
;
END_IF

for
FOR dangqianzhi当前值:=0 TO zuigaozhi最高值 BY 3 DO //每次加3到最高值
%QX0.2 := 0;
;
END_FOR

while
WHILE yunxing运行 DO
%QX0.2 := 1; // 运行灯
;
END_WHILE

case
CASE zhuanpan转盘值 OF
0..4: //0到4的情况
%QX0.2 := 0;
5,7,9: // 5,7,9的情况
%QX0.2 := 0;
8: // 等于8的时候
%QX0.2 := 0;
//
// label1 :;
ELSE
CASE zisuoyin子索引 OF
0..300: // 0到300
%QX0.2 := 0;
// label1 :;
ELSE
%QX0.2 := 1;
;
END_CASE
;
END_CASE

repeat
continue
jmp
exit
return
8轴编程:

直接拖入左侧

其它功能块也是如此。
本文含有隐藏内容,请 开通VIP 后查看
