🚀 AcSpec Next
高效 · 精准 · 可扩展
专为控制器系统自动化测试设计的 VS Code 扩展,为 acspec 语言提供一站式 .tcs 脚本编辑、调试与验证能力。
✨ Features | 核心特性
| 功能 |
描述 |
| ⚡ 智能感知 (Intelligent Completion) |
基于语法规则的上下文感知提示 |
| 🧩 代码片段 (Snippet Templates) |
一键补全常用代码片段 |
| 🔍 实时校验 (Real-time Validation) |
即时检测语法、参数错误 |
| 🎨 文档格式化 (Professional Formatting) |
一键美化成标准格式 |
| 🌐 远程调试 (Remote Debugging) |
集成 Webview 调试面板 |
🛠 Commands | 核心命令集
acspec 语言提供了精简而强大的指令集,并且可扩展,致力于为自动化测试提供全场景能力。
1. 声明文件类型
| 语法格式 |
说明 |
use init |
指明文件类型为初始化,脚本直接执行,不做任何其它操作 |
use unit |
指明文件类型为单元测试,脚本执行结束后,设备还原至初始状态 |
2. 声明执行模式
| 语法格式 |
说明 |
use strict |
严格模式,脚本默认执行模式,可省略 |
use lenient |
非严格模式,关闭 write 命令执行结果检查,默认操作成功 |
3. 写入
向指定寄存器写入值。特殊场景,比如操作模拟量输入AI地址时,可自定义线性输入时间。
| 语法格式 |
说明 |
write <地址>, <值>, [时间(ms)] |
直接指定值 |
write <地址>, <源地址>, [时间(ms)] |
值来源于另一个寄存器 |
4. 检测
检测指定寄存器的值,判定是否满足指定条件。
| 语法格式 |
说明 |
check <地址>, <值> |
等于固定值 |
check <地址>, <源地址> |
等于源寄存器的值 |
check <地址>, <最小值>, <最大值> |
处于某一区间 |
check <地址>, <可能值1> \| ... \| <可能值N> |
等于任一可能值, | 表示或 |
5. 轮询检测
轮询检测指定寄存器的值,判定是否满足指定条件。
| 语法格式 |
说明 |
check_poll <地址>, <值> |
等于固定值 |
check_poll <地址>, <源地址> |
等于源寄存器的值 |
check_poll <地址>, <最小值>, <最大值> |
处于某一区间 |
check_poll <地址>, <可能值1> \| ... \| <可能值N> |
等于任一可能值, | 表示或 |
check_poll <地址>, <可能值1> & ... & <可能值N> |
等于所有可能值,& 表示且 |
6. 开启间隙检测
在每个步骤中间额外检测指定寄存器的值,判定是否满足指定条件。
| 语法格式 |
说明 |
watch <地址>, <值> |
等于固定值 |
watch <地址>, <源地址> |
等于源寄存器的值 |
watch <地址>, <最小值>, <最大值> |
处于某一区间 |
watch <地址>, <可能值1> \| ... \| <可能值N> |
等于任一可能值, | 表示或 |
7. 开启间隙轮询检测
在每个步骤中间额外轮询检测指定寄存器的值,判定是否满足指定条件。
| 语法格式 |
说明 |
watch_poll <地址>, <值> |
等于固定值 |
watch_poll <地址>, <源地址> |
等于源寄存器的值 |
watch_poll <地址>, <最小值>, <最大值> |
处于某一区间 |
watch_poll <地址>, <可能值1> \| ... \| <可能值N> |
等于任一可能值,| 表示或 |
watch_poll <地址>, <可能值1> & ... & <可能值N> |
等于所有可能值,& 表示且 |
8. 关闭间隙检测
关闭指定寄存器值的额外检测,与开启命令成对使用。
9. 延时
等待一段时间,用于跟时间有关系的场景。
10. 定时任务
给命令块添加一个定时器,块内命令执行一遍,计时结束后再继续执行后续命令。
| 语法格式 |
说明 |
schedule <时间(s)> {} |
- |
11. 重复任务(按时间)
给命令块添加一个定时器,块内命令反复执行直至计时结束。
| 语法格式 |
说明 |
loop <时间(s)> {} |
- |
12. 重复任务(按次数)
给命令块添加一个计数器,块内命令重复执行指定次数,计数结束后再继续执行后续命令。
🍭 Grammars | 语法糖与高级特性
加入了一些有用的特性,让脚本更具表现力。
1. 重点高亮 (!)
在关键字后添加 !,调试面板中的对应命令文本将高亮显示,一眼识别关键步骤。
write! AI0, 0 // 这条指令在调试时会非常醒目!
2. 分布式模块标注 (:n)
完美支持分布式控制系统,通过地址后缀轻松区分不同模块。
// 假设一个分布式模块模拟量输入是AI地址(范围为AI0~AI5)、数字量输入是X地址(范围为X0~X9)
write AI0:0, 10 // 操作 0 号模块的 AI0 地址
write X9:1, 1 // 操作 1 号模块的 X9 地址
3. 地址位宽标注 (<地址>(地址位宽))
支持直接指定地址位宽,可以为16或32,默认为16,可省略不写。指定值的时候特别需要注意值的范围。
| 地址位宽 |
无符号 (≥0) |
有符号 (<0) |
| 16 |
0 ~ 65,535 |
-32,768 ~ 32,767 |
| 32 |
0 ~ 4,294,967,295 |
-2,147,483,648 ~ 2,147,483,647 |
write R5940, 9999 // 默认16位宽,可省略不写
write R5940(16), -30000 // 向R5940写入值-30000,值的范围符合16位有符号整数
write R5940(32), -99999999 // 向R5940写入值-99999999,值的范围符合32位有符号整数
4. 值的多种写法
支持值使用十进制、二进制、八进制、十六进制以及科学计数法表示,也支持使用下划线分隔,更易读。
// 十进制
delay 3
// 二进制
delay 0b11
delay 0B11
// 八进制
delay 0o3
delay 0O3
// 十六进制
delay 0x3
delay 0X3
// 科学计数法
delay 3e0
delay 3E0
// 使用下划线增强可读性
write R5940(32), 1_000_000
📝 Snippets | 代码片段
template init 初始化
template unit 单元测试
📥 Installation
- 打开 VSCode 扩展商店
- 搜索
AcSpec Next
- 点击 安装
- 创建一个
.tcs 文件
Made with ❤️ for Test Engineers.