lixianji_007
级别: 工控侠客
精华主题: 0
发帖数量: 242 个
工控威望: 2871 点
下载积分: 5503 分
在线时间: 769(小时)
注册时间: 2011-08-27
最后登录: 2024-11-06
查看lixianji_007的 主题 / 回贴
楼主  发表于: 2015-05-14 13:47
之前做过的项目中有用到先入先出的指令,但那个项目的程序有点大,不方便阅读理解这个功能。现在用FX3U的做了个小测试程序与大家分享一下,程序中用了8个工位,每个工位有一个请求按钮,按下后执行工作请求预约,执行机构会根据先后顺序依次执行完成。
程序具体功能:
         1、启动后按下M10~M17(对应1#~8#工位的外部按钮,用PLC做测试的时候没接那么多的按钮,所以用M代替;另外为减少程序量此外使用的变址输入的形式)——对按下的工位号进行编码(0~7对应1#~8#工位)——置位M110~M117(对应1#~8#工位已请求预约,已预约过未执行的再次按下请求按钮无效)——请求预约信号脉冲M110~M117——复位请求信号M10~M17(测试时方便而设);
         2、执行先入先出移位写入指令(SFWR)——当前预约工位号写入D10+1(D10为指针,记录已写入的数据数量,每写入一次加1),同时之前写入的数据依次后移,测试程序中由于只有8个工位故设置后面的N为K9(只保存N-1个预约请求信号);
         3、在设备未输出执行的情况下执行先入先出移位读出指令(SFRD)——最先保存的工位号读出,使用变址控制外部输出Y00~Y07;
         4、外部输出设了个动作时间,可以将每个动作的时间设的长一点,便于确认预约功能的详细动作及指针的变化;
         5、外部输出时间到达后将输出复位——该工位执行计数——执行子程序(判定各工位执行次数是否到达设定次数,可用于指定执行设定次数的工艺项目中);执行次数到达后该工位即预约无效,所有的工位执行次数到达后自动停止;
         6、按钮X00延时2S后复位计数值、判定值等中间计算变量,可再次执行启动;
        该测试程序仅供三菱的先入先出指令共同学习探讨使用,实际在项目中还要考虑相应的安全互锁、设备断电或中止等异常情况下的数据保持等情况,可根据实际的项目要求进行相应的变更、追加或变通等。大家在测试中发现有什么不对之处,请多多指教,共同学习方能走的更远。
         

本帖最近评分记录:
  • 下载积分:+1(aaa2073) 真诚感谢!
  • 下载积分:+1(工控2018028)
  • 下载积分:+5(乌龟船长) 好贴好贴!
  • 下载积分:+1(leewai2008)
  • 天下事有难易乎?为之,则难者亦易矣!不为,则易者亦难矣!
    endy2015
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 220 个
    工控威望: 1519 点
    下载积分: 837 分
    在线时间: 253(小时)
    注册时间: 2015-03-11
    最后登录: 2018-04-26
    查看endy2015的 主题 / 回贴
    1楼  发表于: 2015-05-15 16:20
    楼主高人,思路特别好