XScript 手册 · Chapter 21
AIO — 模拟输入输出
以 IO["名称"] 访问。用于处理称重传感器、压力传感器、伺服参考等连续信号。
由于与 DIO 使用相同的容器,许多项目通过命名规则(AI_ / AO_ 前缀)来区分。
基本示例
xscript
// 设置 Analog Range
IO["I_LoadCell"].SetAnalogRange(-5, 5);
double analogMin = 0;
double analogMax = 0;
IO["I_LoadCell"].GetAnalogRange(analogMin, analogMax);
Log("Analog Range // Min = {0}, Max = {1}", analogMin, analogMax);
// 输出电压
IO["I_ForceModule"].SetAnalogVoltage(5.0);
// 输入电压
double volt = 0.0;
IO["I_LoadCell"].GetAnalogVoltage(volt);实战示例 — 称重传感器稳定测量
通过连续读取判定稳定后获取代表值。
xscript
double preValue;
bool stable = OFF;
int STABLE_DIFF = 30;
for (i, 0, 4)
{
preValue = TestBowlWeight;
IO[loadcell].GetAnalogValue(TestBowlWeight);
if (i > 0 && MATH.Abs(TestBowlWeight - preValue) < STABLE_DIFF)
{
Log($"LoadCell Stable PASS >> i={i}, weight={TestBowlWeight}");
stable = ON;
break;
}
Sleep(1000);
}
if (stable == OFF)
{
LogError($"LoadCell Stable FAILED: {TestBowlWeight}");
return false;
}方法
| 签名 | 说明 |
|---|---|
bool SetAnalogRange(double min, double max) | 设置输入·输出范围(V) |
bool GetAnalogRange(double &min, double &max) | 查询当前范围 |
bool SetAnalogVoltage(double value) | 输出模拟电压 |
bool GetAnalogVoltage(double &value) | 读取当前输入电压 |
bool GetAnalogValue(ref double value) | 应用刻度后的当前值(g·kPa 等) |
bool SetAnalogScale(double scale) | 设置电压→物理量的刻度系数 |
bool SetAnalogTareClear(void) | 清除 Tare(零点) |
提示
- 输出前先用
SetAnalogRange设好范围 → 防止刻度错误。 - 称重传感器以短周期多次采样,差值(Δ)低于阈值即判定为稳定。
- 零点在空载状态下调用
SetAnalogTareClear()→ 之后的测量值即按物理量校正。 - 超出板卡规格的输出电压设置不会实际生效,而是被饱和钳位。