哈喽,你好啊,我是雷工!
日拱一卒,进一寸有进一寸的欢喜。
本节了解汇川PLC的地址空间与结构化文本语言相关内容。
以下为学习笔记。
01 PLC的地址空间
汇川PLC不同型号的PLC提供的直接存储空间是不同的,
在PLC数据中,%I、%Q区地址不能掉电保存,%M区可以掉电保存。
汇川PLC存储区域定义及使用的地址范围表:
|---------------------------------|------------------|--------|------------|---------------------|
| 编程系统 | 区域 | 用途 | 大小 | 地址范围 |
| AM600、AM610、AM401、AM402、AC800系列 | 输入区I区(%I) 128KB | 用户使用区域 | 64KWords | %IW0-%IW65535 |
| AM600、AM610、AM401、AM402、AC800系列 | 输出区域Q区(%Q) 128KB | 用户使用区域 | 64KWords | %QW0-%QW65535 |
| AM600、AM610、AM401、AM402 | 存储区域M区(%M)512KB | 用户使用区域 | 240KWords | %MW0-%MW245759 |
| AM600、AM610、AM401、AM402 | 存储区域M区(%M)512KB | SD元件 | 10000Words | %MW245760-%MW255759 |
| AM600、AM610、AM401、AM402 | 存储区域M区(%M)512KB | SM元件 | 10000Bytes | %MW511520-%MW521519 |
| AM600、AM610、AM401、AM402 | 存储区域M区(%M)512KB | 保留 | 2768Bytes | %MW521520-%MW524287 |
| AC800系列 | 存储区域M区(%M)5MB | 用户使用区域 | 2.5MWords | %MW0-%MW2321439 |
注意事项:
①:其中用作软元件(SD元件、SM元件)的区域用户不要直接使用。
②:用途为用户使用区域的地址区,用户可以直接访问地址,也可以定义变量后把变量映射到地址间接访问。
③:AC800系列不支持SD和SM软元件,存储区域的地址可以随意使用。
02 结构化文本语言
概述:结构化文本是一种文本化的高级语言,跟PASCAL或C语言差不多,程序代码由指令组成,指令由关键字和表达式构成。
与IL语言不同的是,ST语言在语句循环中可以包含众多的语句,因此允许开发复杂的程序结构。
ST语言常见操作符见下表:
|----|--------|-----------------|
| 序号 | 操作 | 符号 |
| 1 | 括号 | (表达式) |
| 2 | 函数调用 | 函数名(参数列表,由逗号分割) |
| 3 | 求幂 | EXPT |
| 4 | 求负值 求补 | - NOT |
| 5 | 乘 除 取余 | * / MOD |
| 6 | 加 减 | + - |
| 7 | 比较 | <,>,<=,>= |
| 8 | 等于 不等于 | = <> |
| 9 | 逻辑与 | AND |
| 10 | 逻辑异或 | XOR |
| 11 | 逻辑或 | OR |
注意:操作符具有优先级,按表格从上向下依次降低。
整个ST文本程序由指令构成,指令由分号";"分割(这点和C#挺像,末尾加";")。
指令由关键字和表达式组成。
|----|----------|-------------|-------------------------------------------------------------------------------------------------|
| 序号 | 关键字 | 说明 | 示例 |
| 1 | :=,S=,R= | 赋值,置位,复位 | A:=B; C:=SIN(X); b1 R=cond1; |
| 2 | | 功能块调用和输出 | CMD_TMR(IN := %IX5, PT := 300); A:=CMD_TMR.Q |
| 3 | RETURN | 返回(退出当前POU) | RETURN; |
| 4 | IF | 选择 | D:=B*B; IF D<0.0 THEN C:=A; ELSIF D=0.0 THEN C:=B; ELSE C:=D; END_IF; |
| 5 | CASE | 多重选择 | CASE INT1 OF 1: BOOL1 := TRUE; 2: BOOL2 := TRUE; ELSE BOOL1 := FALSE; BOOL2 := FALSE; END_CASE; |
| 6 | FOR | FOR循环 | J:=101; FOR I:=1 TO 100 BY 2 DO IF ARR[I] = 70 THEN J:=I; EXIT; END_IF; END_FOR; |
| 7 | WHILE | WHILE循环 | J:=1; WHILE J<= 100 AND ARR[J] <> 70 DO J:=J+2; END_WHILE; |
| 8 | REPEAT | REPEAT循环 | J:=-1; REPEAT J:=J+2; UNTIL J= 101 OR ARR[J] = 70 END_REPEAT; |
| 9 | EXIT | 退出循环 | EXIT; |
| 10 | CONTINUE | 继续循环下次执行 | CONTINUE; |
| 11 | JMP | 跳转 | label: i:=i+1; JMP label; |
| 12 | ; | 空语句 | ; |
03 后记
以上为汇川PLC地址空间与ST语言的相关笔记,
有记录不当之处欢迎大佬在留言区留言指正,更多内容也可以在交流群探讨。