汇川技术|PLC地址空间、结构化文本语言ST

哈喽,你好啊,我是雷工!
日拱一卒,进一寸有进一寸的欢喜。
本节了解汇川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语言的相关笔记,
有记录不当之处欢迎大佬在留言区留言指正,更多内容也可以在交流群探讨。

相关推荐
逊嘘15 分钟前
【Java语言】抽象类与接口
java·开发语言·jvm
morris13122 分钟前
【SpringBoot】Xss的常见攻击方式与防御手段
java·spring boot·xss·csp
我要洋人死27 分钟前
导航栏及下拉菜单的实现
前端·css·css3
十叶知秋34 分钟前
【jmeter】jmeter的线程组功能的详细介绍
数据库·jmeter·性能测试
科技探秘人39 分钟前
Chrome与火狐哪个浏览器的隐私追踪功能更好
前端·chrome
科技探秘人39 分钟前
Chrome与傲游浏览器性能与功能的深度对比
前端·chrome
JerryXZR1 小时前
前端开发中ES6的技术细节二
前端·javascript·es6
七星静香1 小时前
laravel chunkById 分块查询 使用时的问题
java·前端·laravel
Jacob程序员1 小时前
java导出word文件(手绘)
java·开发语言·word
ZHOUPUYU1 小时前
IntelliJ IDEA超详细下载安装教程(附安装包)
java·ide·intellij-idea