汇川Easy PLC LiteST指令示例 - 3
1、读取模拟量输入扩展的模拟量值先配置好模拟量输入通道:配置I/O映射D100~D103可以根据程序规划自己定义。新建子程序添加采集程序// 模拟量通道1处理 VARRaw_AD : INT; // 原始AD值来自D100PV : REAL; // 工程量过程值PV_INT : REAL; // 供HMI显示的整数保留1位小数×10END_VAR// 1. 读取原始值Raw_AD : D100;// 2. 限幅保护防超量程干扰IF Raw_AD 0 THEN Raw_AD : 0;ELSIF Raw_AD 32000 THEN Raw_AD : 3200;END_IF;// 3. 线性转换032000 → 0.0100.0PV : (INT_TO_REAL(Raw_AD) * 1.0) / 320.0;// 4. 转换为HMI友好格式D200 实际值×10例25.3℃ → D200253PV_INT : PV ;IF PV_INT 1000 THEN PV_INT : 1000; // 限幅 0100.0ELSIF PV_INT 0 THEN PV_INT : 0;END_IF;HMI_D200 : PV_INT; // HMI 直接关联 D200显示时设置“除以10”2、FB功能块的使用模拟量滤波功能一阶滞后滤波右键新建FB功能块命名FB_LowPassFilter,变量区增加新变量如下表序号类别名称数据类型隐藏初始值初始值掉电保持注释1INRaw_XREAL00不保持2INalphaREAL00不保持3INbResetBOOLOFFOFF不保持4OUTOUT_yREAL00不保持5VARy_oldREAL00不保持6VARfirstBOOLONON不保持代码区代码如下IF bReset THEN//(* 复位输出等于当前输入并更新历史值 *)OUT_y : Raw_X;y_old : Raw_X;first : FALSE; //(* 复位后清除首次标志 *)ELSIF first THEN//(* 首次运行且未复位直接输出输入值建立初始状态 *)OUT_y : Raw_X;y_old : Raw_X;first : FALSE;ELSE//(* 正常滤波计算 *)OUT_y : alpha * Raw_X (1.0 - alpha) * y_old;y_old : OUT_y; //(* 保存当前输出供下一周期使用 *)END_IF;保存后在全局变量下的功能块实例中进行实例化就是自己命名一个功能数据类型选择你新建的这个FB块程序中调用myFiler(Raw_X : PV, alpha : 0.001, bReset : FALSE);myFiltValue : myFiler.OUT_y;alpha可以设置个默认值取值范围为0.001~0.5值越小越平滑但响应越慢可根据实际情况自己做验证调整。