一个高速计数器的组态,组态一个2000线的编码器在一个速度下运行,其旋转一周的时间为100mS,在旋转一周过程中还需要有20个输出响应的条件要求。做200系列PLC中没有做过类似的程序。
根据大致的含义,做一个在10mS定时中断内,让plc输出一个点,由这个输出点驱动一个上升沿输入中断,如果能够正确接收到上升沿中断的触发,那么,问题将不是什么问题了。为模拟一个真实的PLC控制程序,我加入的FOR/NEXT指令做程序的延长,仿真一个真实的PLC程序。
测试条件:
因为没有找到晶体管输出型plc,测试用继电器输出型plc替代。
PLC为SR30继电器输出型。
测试项目:
1) 定义一个定时中断_0,时间定义为10mS;
2) 定义一个I0.0的上升沿中断,中断事件号:0;
3) 在定时中断_0中做一个常规线圈输出,Q0.0作为外置I0.0输入上升沿中断的触发源;
4) 如果常规输出线圈与上升沿输入中断的次数相等,说明这样的控制程序可以满足控制要求;
5) 加入FOR/NEXT指令延长程序的扫描周期,再模拟仿真测试结果。
程序:
1) 主程序初始化:
2) 定时中断子程序:
3) I0.0上升沿输入中断子程序:
将程序编辑、编译、保存、下载,创建状态图表监控结果:
定时中断次数与外部输入的I0.0上升沿中断的次数基本接近。说明在测试模式下,普通的输出线圈能够在10mS定时中断状态下迅速开、关,PLC输出响应能够满足测试要求。
再次加入循环FOR/NEXT指令,加大对plc的扫描周期,先看看没有循环指令的周期,等一会儿好做对比。
没有循环指令的扫描周期,图示:
加入一个循环指令的周期,图示:加了一个10000次的循环,2个中断次数差异就非常明显了。
将常规输出改为立即输出,图示:其它程序未改变。
当变更为立即输出线圈时,刚刚测试的差异马上改变,基本没有次数差异了,由此说明,程序需要立即输出作为项目应用是必须的。好不容易外接的I0.0输入中断,不如再测试几次其它条件下的结果:
循环次数为***大值32767时的差异,图示:
没有差异,再看扫描周期,图示:
已经在96mS了,基本接近一般常规的控制程序扫描周期。高速计数器的程序是可以实现的。本想模拟程序,因为没有2000线数的编码器,所以,模拟测试plc的响应速度也从另一个侧面,验证可行性,是可以的。
一个普通的电磁换向阀做0.3S的停顿,这个0.3S并不是什么空穴来风,也是根据外部实际连接的硬件条件,测试结果所得,该设备运行已经有一个多月了,工艺改造效果是可以的,就是有一些担心普通电磁换向阀是否能够长期在这样停顿状态下工作,工作的有效周期大概为多少,已经准备了2个液压电磁换向阀作为备件准备着。同样的话题,再次引出之前说过的阀岛,阀岛的阀芯相对工作的频率原比改造的普通液压电磁换向阀项目要高的多,而阀岛一般大概也可以正常工作约2年左右时间,工作于0.3S的普通电磁换向阀,如果能够工作2年也足够满意了的。本次测试也只是在相对较短时间内,做的一些简单短时间的测试,完全不能够作为正常的输出,测试前还犹豫过这10mS的立即输出是否真实有效,实际准确周期应该是20mS的。
- 下一篇:西门子触摸屏面板实列如何制作
- 上一篇:西门子组态版本问题