【非标自动化】3、AutoShop快速理解(扫描周期的确定)

【非标自动化】3、AutoShop快速理解(扫描周期的确定) 一、扫描周期不是先人为固定出来的对普通循环扫描PLC来说通常是读取输入 ↓ 执行本次需要执行的用户程序 ↓ 刷新输出 ↓ 处理通信、诊断、系统任务 ↓ 再次开始完成这一整圈实际用了多长时间这个时间就是一次扫描周期。所以并不只是扫描周期 执行MAIN所需时间更完整地说是扫描周期 ≈ 输入采样时间 用户程序执行时间 输出刷新时间 通信及系统处理时间其中用户程序执行时间通常占重要部分但不是全部。二、MAIN执行时间也不一定每次完全相同比如程序中存在条件调用如果自动模式 执行自动流程 否则 不执行自动流程自动模式下执行的指令更多扫描可能稍长手动模式下执行得少扫描可能稍短。通信、运动控制和中断任务也可能让某次扫描时间增加。所以PLC一般会有当前扫描周期最小扫描周期最大扫描周期扫描超时监控。假设多数时候扫描为2ms某次因为通信或复杂运算变成4ms这都可能是正常变化。有些PLC也支持固定周期任务。例如要求某个任务每5ms启动一次第0ms开始执行 第2ms执行完等待 第5ms再次开始这种情况下“5ms”是预先设定的任务周期而不是自然扫描时间。若程序超过5ms还没有执行完就可能出现任务超时或周期溢出。因此应区分自由循环扫描做完一圈马上开始下一圈 固定周期任务按照预先设定的周期启动目前学习MAIN时可以先按照自由循环扫描理解。三、PLC逻辑本质上是不是“读取X算出Y”对于最基础的数字量控制确实可以先理解成读取输入X ↓ 执行控制逻辑 ↓ 计算输出Y ↓ 驱动现场元件例如X0启动按钮 X1停止按钮 X2产品到位 X3气缸伸出到位 Y0运行指示灯 Y1输送带接触器 Y2气缸电磁阀PLC程序就是根据X及内部状态决定Y应该是什么。但真实PLC程序不只是Y 当前X的组合还会使用上一个扫描周期的状态内部辅助变量M定时器T计数器C数据寄存器D模拟量通信数据运动轴状态报警状态。所以更准确的表达是本次输出和内部状态 当前输入 上一次内部状态 时间 计数 参数 通信和运动状态 经过控制逻辑计算后的结果PLC不是简单的“输入直接映射到输出”而是一个不断循环运行的状态控制器。四、PLC程序里主要有哪些逻辑可以把常见PLC逻辑分成下面几类。1. 组合逻辑只看当前条件不需要记住过去。例如如果安全门关闭 并且气压正常 并且没有报警 那么允许运行梯形图类似安全门正常 气压正常 无报警 ----| |--------| |--------| |--------(运行允许)它本质上就是运行允许 安全门正常 AND 气压正常 AND 无报警常见关系包括与 AND所有条件都满足或 OR任意条件满足非 NOT某条件不满足互锁两个动作不能同时成立。例如气缸双线圈不能同时输出伸出阀允许 伸出命令 AND 非缩回阀 缩回阀允许 缩回命令 AND 非伸出阀2. 状态保持逻辑设备按一下启动按钮后不能要求一直按住按钮因此要记住“设备已经启动”。例如按下启动 → 运行状态置为ON 按下停止 → 运行状态置为OFF这里的运行状态一般保存在M变量中X0启动 X1停止 M0设备运行状态这就是自锁、置位/复位或状态记忆。输出不再只是由当前按钮决定Y0 X0而是Y0 M0M0记录过去有没有启动、后来有没有停止。3. 顺序流程逻辑自动化设备通常不是所有动作一起发生而是一步一步进行。例如步骤0等待产品 步骤1夹紧产品 步骤2气缸下降 步骤3触发相机 步骤4等待检测结果 步骤5气缸返回 步骤6产品放行程序必须记录当前运行到哪一步可能使用M100步骤0 M101步骤1 M102步骤2或者使用一个整数D100 当前步骤编号例如D100 0等待产品 D100 10夹紧 D100 20拍照 D100 30等待结果每一步都会包含进入条件 动作输出 完成条件 超时条件 跳转到下一步这类逻辑是完整设备程序的核心。4. 定时逻辑PLC程序经常需要处理时间。例如按下启动按钮3秒后启动电机 风机停止后延时30秒再关闭 气缸伸出5秒仍未到位则报警定时器不代表PLC停在那里等待。PLC不会执行到定时器后暂停3秒而是每个扫描周期都检查条件是否还成立 累计时间到了没有例如第1次扫描累计2ms 第2次扫描累计4ms …… 达到3秒定时器完成位ON所以在定时期间PLC仍然持续执行其他程序。5. 计数逻辑用于记录事件发生了多少次。例如光电传感器每检测一个产品数量加1 达到100个后提醒换箱 连续出现3个NG产品后停机常见逻辑产品到位上升沿 ↓ 计数器1这里要使用上升沿而不能只看X0是否为ON。否则X0保持ON十几个扫描周期可能重复计数十几次。6. 边沿逻辑边沿用于识别信号发生变化的瞬间。例如按钮状态OFF → ON上升沿 ON → OFF下降沿假设按钮持续按住500ms而扫描周期是5ms那么PLC大约会看到100次X0 ON但“按下动作”实际上只发生一次。因此普通触点只要X0保持ON每次扫描都成立 上升沿触点只有OFF变ON的那个扫描周期成立一次边沿逻辑经常用于产品计数按钮切换模式触发相机一次发送一次通信命令启动一次动作。7. 联锁逻辑联锁的作用是防止互相冲突或危险的动作。例如气缸未缩回不允许机械手进入 机械手未离开不允许气缸伸出 安全门打开不允许伺服运行 加热温度过高必须关闭加热器联锁本质上是在输出条件中增加安全限制气缸伸出输出 伸出命令 AND 机械手已离开 AND 安全门正常 AND 无报警这在真实设备中非常重要。8. 手动/自动模式逻辑设备一般至少有手动模式自动模式。手动模式下按住气缸伸出按钮 → 气缸伸出 按住气缸缩回按钮 → 气缸缩回自动模式下程序根据工艺步骤自动控制气缸最终输出可能统一计算为气缸伸出请求 手动模式下的手动伸出请求 OR 自动模式下的自动伸出请求然后再加安全联锁Y0 气缸伸出请求 AND 安全条件 AND 无冲突输出9. 报警逻辑报警并不只是让蜂鸣器响而是要判断什么故障发生了是否需要停机报警是否锁存什么时候允许复位故障消失后能否自动恢复。例如气缸伸出发出伸出命令 ↓ 开始5秒超时计时 ↓ 5秒内收到伸出到位正常 5秒后仍未到位气缸伸出超时报警报警可能设置一个内部状态M500 气缸伸出超时报警再由总报警控制任意严重报警 → 停止自动流程 任意报警 → 红灯亮 任意报警 → 蜂鸣器响10. 数据运算和比较逻辑不仅有BOOL开关量还有数字数据。例如当前温度 100℃ → 停止加热 产品数量 100 → 请求换箱 压力 最低压力 → 报警 实际位置与目标位置差值 0.1mm → 定位完成常见操作包括加减乘除大于、小于、等于数据移动限幅单位换算平均值PID计算。11. 模拟量控制逻辑模拟量不是简单的0和1。例如压力传感器输出420mAPLC读取后可能得到一个原始数值需要换算原始数值 ↓ 换算成01.0MPa ↓ 与设定压力比较 ↓ 控制比例阀或报警温度、压力、流量、位移和称重都属于这类。12. 通信逻辑有些输入并不来自X端子输出也不一定通过Y端子。例如视觉结果通过以太网传给PLC 变频器频率通过Modbus写入 伺服位置通过EtherCAT读取 HMI将目标温度写入PLC寄存器PLC可能读取的是VisionResult ServoActualPosition InverterStatus HMI_SetTemperature然后经过逻辑处理再发送命令给其他设备。所以真实设备更完整的结构是输入来源 X端子、模拟量、通信、运动轴状态、HMI参数 ↓ PLC逻辑 ↓ 输出目标 Y端子、模拟量、通信命令、运动控制指令、HMI状态五、一个完整输出通常是怎样计算出来的以输送带Y0为例最终逻辑可能不是简单的Y0 X0而是输送带运行请求 手动运行请求 OR 自动流程运行请求再经过安全条件输送带最终输出 输送带运行请求 AND 急停正常 AND 安全门关闭 AND 电机无故障 AND 没有严重报警最后Y0 输送带最终输出这就是PLC程序常见的层次输入条件 ↓ 生成状态和请求 ↓ 流程决定需要什么动作 ↓ 联锁和安全条件最终裁决 ↓ 写入输出Y因此一个比较好的PLC程序不是让各处都随意操作Y而是前面程序生成“请求”和“状态”最后集中经过安全判断后决定真实输出。六、PLC程序可以概括成五类核心问题以后看到一台设备可以固定问1. 当前输入和设备状态是什么 2. 设备现在处于哪个模式、哪个流程步骤 3. 下一步应该执行什么动作 4. 当前动作是否满足安全和互锁条件 5. 动作是否完成、超时或发生故障程序就是反复回答这五个问题。所以你说PLC逻辑最终是“读取输入计算输出”这个认识是正确的只是中间的“计算”不只是简单的if而是包含组合判断 状态记忆 顺序流程 定时 计数 边沿 互锁 模式切换 报警 数据计算 通信 运动控制这些内容组合起来才构成一台完整自动化设备的控制逻辑。