Artisan事件动作命令速查表

本文是 Artisan(artisan scope)咖啡烘焙软件的事件动作命令速查表,覆盖 Config » EventsConfig » Alarms 中 Action 字段的可用命令、参数格式与语法约定。

内容依据 Artisan 源码仓库 src/help/ 目录下四个内置帮助页原文整理:eventbuttons_help.pyeventsliders_help.pyalarms_help.pysymbolic_help.py。命令名与参数保持英文原文,说明为中文。

整理日期:2026-09-15

权威来源与查阅优先级

Artisan 的命令清单有三处来源,优先级从高到低:

优先级 来源 位置 适用场景
软件内置帮助页 Config » Events 对话框内的 Help 按钮 与当前安装版本严格对应,配置前必查
官网文档 artisan-scope.org/docs/events//docs/alarms/ 理解事件、报警、动作的联动逻辑与实战配置
源码帮助页原文 仓库 src/help/ 目录下的 *_help.py 离线查阅、批量检索、版本对比

表 1:命令清单的三处来源及优先级

官方文档对 Action 字段的定位是:「ADVANCED USERS - The Action column is where you can add automation commands. Check the Help page for the Events dialog to see all the possibilities.」即完整命令表以软件内置帮助页为准,官网文档只讲配置思路。

各对话框都有自己的帮助页,除事件按钮外还包括:alarms(报警动作)、event sliders(事件滑块)、event annotations(事件标注)、symbolic formulas(符号公式)、MODBUSMQTTS7programs(外部程序)、transposerautosaveenergykeyboard shortcuts

版本差异提醒

帮助文本未逐条标注命令的引入版本。唯一明确标记废弃的是 MODBUS 的 write(),原文注明「DEPRECATED: use writeSingle for function 6 or writeWord for function 16」。若某条命令配置后不生效,先回软件内置帮助核对当前版本是否支持。

另外,本文的命令清单读自仓库 master 分支,比 v4.2.0 等发布版超前,可能含有当前版本尚未提供的命令。

语法约定

所有 Action 命令共享以下书写规则。

规则 写法 说明
多命令串联 cmd1;cmd2;cmd3 用分号分隔,按顺序执行
当前值占位 {} 替换为当前按钮或滑块的值;事件类型带偏移时含偏移量
具名占位 {ET}{BT}{time}{ETB}{BTB}{WEIGHTin} 依次为当前 ET、当前 BT、当前时间、背景 ET、背景 BT、批次重量(克)。可用于 Serial / Artisan / CallProgram / MODBUS / S7 / WebSocket 命令
上次读取值 _ MODBUS、S7、WebSocket 的 read 结果绑定到此变量,可在后续命令中引用
上次按钮状态 $ 取值为 1(按下)或 0(正常)
延迟 sleep(<float>) 单位为秒,可插入命令链中
注释 # 之后的内容被忽略 仅报警的 Description 字段支持;其他 Action 不支持注释
大小写 命令名与符号变量按原文大小写 符号公式变量区分大小写
序列号参数 <sn> Phidget 格式为 <hub_serial>[:<hub_port>];Yoctopuce 为序列号或逻辑名

表 2:Action 命令通用语法约定

两条需要特别留意的行为差异:

  • Serial Command 不拆分:整个 Documentation 字段作为一个字符串发送到串口设备。若设备不支持用分号拆包,需改用 Multiple Event 类型,引用多个隐藏按钮,每个按钮各自发送一条 Serial 命令。
  • 滑块值的类型转换:除 IO、VOUT、S7、RC 四类外,所有 Slider 命令的值会从 float 转为 int。

设备专用命令(Hottop、Aillio R1、Fuji、DTA、Santoker、Kaleido、Orbiter、Shelly 等)仅在对应设备已连接时有效

通用与流程控制命令

命令 用途
sleep(<float>) 延迟指定秒数
button(i,b) 将编号 i 的按钮设为按下(b 取 yes/true/t/1)或正常
button(<name>|<bool>) 激活命名按钮,name 取 {START, CHARGE, DRY, FCs, FCe, SCs, SCe, DROP, COOL, OFF};或把调用按钮本身设为按下
button() 切换调用按钮的状态
visible(i,b) 显示或隐藏编号 i 的按钮
slider(n,<bool>) 显示或隐藏事件类型 n 的滑块,n 取 1~4;n=5 控制 PID SV 滑块
popup(<msg>[,<int>]) 弹出消息框,可选在 <int> 秒后自动关闭
message(<msg>) 在消息栏显示文本
notify(<title>,[<msg>]) 发送系统通知
notifications(<bool>) 启用或禁用通知
openProperties 打开 Roast Properties 对话框
keyboard(<bool>) 启用或禁用键盘模式
keepON(<bool>) 启用或禁用 Keep ON

表 3:通用与流程控制命令

报警与自动事件命令

命令 用途
alarm(n,<bool>) 启用或禁用编号 n 的报警
alarms(<bool>) 全局启用或禁用报警
alarmset(<as>) 激活指定编号或标签的报警集
autoCHARGE(<bool>) 启用或禁用自动 CHARGE
autoDROP(<bool>) 启用或禁用自动 DROP

表 4:报警与自动事件命令

PID 控制命令

命令 用途
PIDon / PIDoff / PIDtoggle 开启、关闭或切换 PID
pidmode(<int>) 设定模式:0=手动,1=RS(Ramp-Soak),2=背景跟随
p-i-d(<p>,<i>,<d>) 设置 PID 三个参数
pidWeights(<beta>,<gamma>) 设置 beta 与 gamma 权重
pidDerivativeFilter(<n>) 微分滤波器大小,取值 0 ≤ n < 6
pidDerivativeLimit(<n>) 微分限幅,取值 n ≥ 0
pidILF(<n>) 积分限幅因子,取值 0 ≤ n ≤ 1
pidIWP(<bool>) 切换积分抗饱和
pidIRoC(<bool>) 切换目标处的积分重置
adjustSV(<float>) 在当前 SV 基础上增减
pidSV(<float>) 设定 SV,按当前温度单位
pidSVC(<float>) 设定 SV,强制以摄氏度为单位
pidSVbuttons(<bool>) 切换 SV 按钮的可见性
pidRS(<rs>) 激活 Ramp-Soak 模式,取 1 起的编号或标签
pidSource(<int>) PID 输入源:0=BT,1=ET(SW);Arduino 设备取 0~3
pidLookahead(<int>) PID 前瞻秒数
replayLookahead(<int>) Ramping Replay 的前瞻秒数

表 5:PID 控制命令

界面、画布与回放命令

命令 用途
setCanvasColor(<#RRGGBB>) 设置画布颜色
resetCanvasColor 重置画布颜色
palette(<p>) 激活调色板,取 0~9 或标签
playbackmode(<int>) 回放模式:0=关,1=按时间,2=按 BT,3=按 ET,4=BT/时间,5=ET/时间
playbackdropmode(<int>) DROP 回放模式,取 0~3
playback(n,<bool>) 按事件类型 n(1~4)切换回放
ramp(n,<bool>) 按事件类型 n(1~4)切换 ramping
quantifier(n,<bool>) 按事件类型切换量化器
showCurve(<name>,<bool>) name 取 {ET, BT, DeltaET, DeltaBT, BackgroundET, BackgroundBT}
showExtraCurve(<dev>,<curve>,<bool>) curve 取 {T1, T2},dev 从 0 起计数
showEvents(<type>,<bool>) type 取 1~5
showBackgroundEvents(<bool>) 背景事件的显隐
zoom(<x>[,<y>]) 缩放画布
pan(<x>[,<y>]) 平移画布
center(<x>,<y>[,<clamp>]) 居中并平移;clamp 默认取决于光标锁定状态
clamp(<n>) xy 光标锁定模式,取 0~4
followMode(<bool>) 切换跟随模式
followModePanning(<x>[,<y>]) 跟随模式下的额外平移
home / back / forward 工具栏导航
setBatchSize(<float>) 设置批次量;填负值则取背景曲线的值
loadBackground(<path>) 加载背景曲线
clearBackground 清除背景曲线
moveBackground(<dir>,<int>) dir 取 {up, down, left, right}
upload2RoastHubs 上传当前曲线到 RoastHubs
tare(<int>) 去皮:1=ET,2=BT,3=E1c1,4=E1c2,依此类推

表 6:界面、画布与回放命令

串口与烘焙机专用命令

Action 类型 命令格式 说明
Serial Command ASCII 字符串或 a2b_uu(...) 二进制 整串发送到串口设备,不按分号拆包
DTA Command <addr>:<value>,如 4701:1000 值以 0.1 为单位时需乘 10;4719:0 表示停止加热
Fuji Command write(<unitId>,<register>,<value>) 富士 PID 写入
Hottop Heater / Fan 直接填数值 heater 取 0~100,fan 取 0~10
Hottop Command motor(n),solenoid(n),stirrer(n),heater(h),fan(f) n 取 0 或 1
Aillio R1 Heater / Fan / Drum 直接填数值 分别控制加热、风扇、滚筒
Aillio R1 Command PRS 发送 PRS 指令
p-i-d(独立 Action 类型) <p>;<i>;<d> 配置 PID 三参数

表 7:串口与各品牌烘焙机专用命令

MODBUS 命令

命令 功能码 说明
_ 上一次 MODBUS 读取的值
$ 上一次按钮状态(1 或 0)
read(deviceID,reg) 读 1 个 16 位寄存器,结果存入 _
readSigned(deviceID,reg) 同上,按有符号数解释
readBCD(deviceID,reg) 同上,按 BCD 解释
read32(deviceID,reg) 读 2 个 16 位寄存器
read32Signed(deviceID,reg) 同上,按有符号数解释
read32BCD(deviceID,reg) 同上,按 BCD 解释
readFloat(deviceID,reg) 读 2 个 16 位寄存器,按 32 位浮点解释
writeSingle([dev,reg,val],...) 6 写单个 16 位整数
writem(...) 16 写多个寄存器
writeWord(...) 16 写多个寄存器
writeLong(...) 16 写 32 位整数
writeBCD(...) 16 写 BCD 值
wcoil(dev,reg,<bool>) 5 写单个线圈
wcoils(dev,reg,[<bool>,...]) 15 写多个线圈
mwrite(dev,reg,andMask,orMask[,value]) 22 掩码写入
write(...) 已废弃,改用 writeSingle(功能码 6)或 writeWord(功能码 16)

表 8:MODBUS 命令

S7 命令

命令 说明
_ / $ / sleep / button 与通用语义一致
getDBbool(db,start,idx) 读取 S7 数据块的布尔值
getDBint(db,start,idx) 读取 S7 数据块的整数
getDBfloat(db,start,idx) 读取 S7 数据块的浮点数
setDBbool(db,start,idx,val) 写入布尔值
setDBint(db,start,idx,val) 写入整数
setDBfloat(db,start,idx,val) 写入浮点数
msetDBint(db,start,andMask,orMask,val) 掩码写入整数

表 9:S7 命令

IO 与继电器命令

命令 平台 说明
set(c,b[,sn]) Phidget Binary Out 设置通道 c 的开关状态
toggle(c[,sn]) Phidget Binary Out 切换通道状态
pulse(c,t[,sn]) Phidget Binary Out 脉冲输出,t 为毫秒
out(c,v[,sn]) Phidget Voltage Out 电压输出,v 为浮点值
accel(c,v[,sn]) Phidget DCMotor 设置加速度
vel(c,v[,sn]) Phidget DCMotor 设置速度
limit(c,v[,sn]) Phidget DCMotor 设置电流限制
on / off / flip Yoctopuce Relay 继电器开、关、翻转
yset / pip / powerReset Yoctopuce Relay 继电器其他控制
slider(c,v) 通用 把滑块 c 移动到值 v
santoker(<target>,<value>) Santoker target 为十六进制字节形式的目标寄存器
kaleido(<target>,<value>) Kaleido 支持 Serial 与 Network 两种连接
orbiter(<cmd>[,<val>[,<param>]]) Orbiter cmd 为 1 字节十六进制
shellyrelay(n,b) Shelly 智能插座开关
publish(<topic>,<value>) MQTT 以 JSON 格式发布消息

表 10:IO 与继电器命令

PWM、电压输出与电机命令

命令 平台 说明
out(ch,val[,sn]) Phidget PWM val 取 0~100
frequency / toggle / pulse Phidget PWM 频率、切换、脉冲
outhub(port,val[,sn]) Phidget HUB PWM HUB 端口输出
togglehub(port,val[,sn]) Phidget HUB PWM HUB 端口切换
pulsehub(port,val[,sn]) Phidget HUB PWM HUB 端口脉冲
enabled / freq / duty / move Yoctopuce PWM duty 取 0.0~100.0
range / out / vout / cout Phidget / Yoctopuce VOUT 电压输出与电流输出
pulse / pos / engaged / ramp Phidget RC 舵机控制
volt / accel / veloc / set Phidget RC 舵机控制
enabled / move / neutral / range Yoctopuce RC 舵机控制
set / rescale / engaged(ch,...) Phidget Stepper 步进电机控制

表 11:PWM、电压输出与电机命令

WebSocket、多重事件与外部程序

命令或类型 所属类型 说明
send(<json>) WebSocket 发送 JSON;其中的字面 {} 需双写为 {{}} 转义
read(<json>) WebSocket 发送并把响应绑定到 _
$ / sleep / button WebSocket 与通用语义一致
Multiple Event 仅事件按钮可用 写法 <btnNum>[,<btnNum>],sleep(<float>),...,逗号分隔,触发其他按钮或插入延迟
Call Program 外部程序 填写程序或脚本路径,支持绝对路径与相对路径

表 12:WebSocket、多重事件与外部程序

报警专用动作

报警的动作在 Description 字段填写,可用类型与命令如下。

Action 类型 命令写法 说明
Pop Up <text> 弹窗显示的文本
Event Button <btn>[><val>],...,如 1>10,2,3>100 触发按钮,> 后可覆盖按钮的值
Slider 1~4 <value> 设置对应滑块的数值
START / DRY / FCs / FCe / SCs / SCe / DROP / COOL END / OFF / CHARGE 无参数 触发对应的烘焙阶段事件
RampSoak ON / RampSoak OFF 无参数 PID 的 Ramp-Soak 模式开关
Set Canvas Color <color> 取十六进制色值或颜色名
Reset Canvas Color 无参数 重置画布颜色

表 13:报警专用动作类型

报警的 Description 中 # 之后的内容被忽略,可用于写配置备注而不显示在界面上。

符号公式的变量

符号公式是独立于 Action 命令的另一套体系,用于计算派生曲线与判断条件。变量区分大小写。

符号 含义 支持移位
t 录制开始后的绝对时间(秒)
b 背景曲线的录制时间(秒)
x 当前通道读数(Plotter 中不可用)
Y1, Y2, Y3... 依次为 ET、BT、Extra#1-T1、Extra#1-T2、Extra#2-T1 等
B1, B2, B3... 依次为 ET 背景、BT 背景、ExtraBg#1-A、#1-B 等
T1, T2, T3... ET、BT、Extra 的去皮值
E1E4 各事件类型最近一次的事件值
R1, R2 ET、BT 的 RoR(已平滑)
RB1, RB2 背景 ET、BT 的 RoR
k, o RoR 到温度轴的缩放因子与偏移
CHARGE, DRY, FCs, FCe, SCs, SCe, DROP 对应事件的索引;未设置时为 -1
bCHARGE, bDRY, ... 背景曲线对应事件的索引
dCHARGE, dDRY, ... 距离对应事件的秒数
AUCbase, AUCtarget, AUCvalue AUC 的基准值、目标值、当前值
pDRY, pFCs 基于当前 RoR 预测到达 DRY 或 FCs 的秒数
aTMP, aHUM, aPRE 环境温度、湿度、气压
WEIGHTin, MOISTUREin, TEMPunit 批次量(克)、生豆含水率(%)、温标(0=摄氏度,1=华氏度)

表 14:符号公式核心变量

符号公式的语法与函数

时间移位Y2[-1] 取前一时刻的 BT,Y2[+1] 取后一时刻(后者仅在 Plotter 中可用)。

事件索引Y2{0} 取第一条 BT,Y2{CHARGE} 取 CHARGE 时刻的 BT,b{CHARGE} 取背景曲线在 CHARGE 时刻的值。

条件表达式(true_expr if cond else false_expr),采用 Python 语义,非零视为 True,0None 视为 False。

类别 可用项
数学函数 absacosasinatancossintandegreesradiansexplog(x[,base])min(...)max(...)pow(x,y)sqrtbit(n,x)
常量 e(2.71828…)、pi(3.14159…)
Plotter 扩展 P1P9 引用前序绘图结果;F1F9 引用本公式的历史结果,可构成反馈环路

表 15:符号公式的函数与常量

错误值传播

表达式中若任一变量的值为 -1(表示错误),整个表达式的结果即为 -1。用括号包裹可以阻断传播,例如 (Y1 + 1)Y1-1 时结果为 0

配置要点

  • 命令不生效先查版本:本表读自 master 分支,优先在软件内置帮助页核对该命令是否存在于当前版本。
  • Serial 命令的特殊性:整个字段作为一个字符串发送,需要多条时用 Multiple Event 拆到多个隐藏按钮上。
  • 注释只在报警里可用# 注释仅报警的 Description 字段支持,写在其他 Action 中会被当作命令内容。
  • 设备命令需先连接:烘焙机与 IO 设备的专用命令只在对应设备已连接时有效。
  • 滑块值会取整:除 IO、VOUT、S7、RC 四类外,滑块命令的值由 float 转为 int,配置精度时需注意。

参考来源

posted @ 2026-09-15 22:44  汉塘阿德  阅读(4)  评论(0)    收藏  举报