发布网友 发布时间:2022-05-06 18:46
共1个回答
热心网友 时间:2023-09-10 22:22
PLC的扫描周期与CPU的主频和程序的大小有关。是不可以修改的。根据程序的大小 ,扫描周期在几个毫秒到100个毫秒之间。你的采样频率为30000/H也就是1秒有8.3个脉冲。我们按9个脉冲算。这样的话,你的CPU必须在1秒内运行18个周期才可以完全统计这些脉冲。也就是扫描周期要在55毫秒内。因为CPU运行要处理各种事件,每一次的扫描时间也不尽相同。因此才会有脉冲不相同或漏计现象。要解决这个问题有以下办法:采用高速计数模块。采用带输入中断的DI模块。用上升沿中断计数。在程序中采用定时中断。OB30-OB38为循环中断。将其中一个OB的时间改成你的需要的时间。比如将OB37改成40ms.然后将计数程序移入OB37.但需要注意,不可再直接使用缓冲区的地址。因为这个地址的状态更新时间受扫描周期的影响。你需要直接读通道地址的状态。比如你的通道地址为I1.0。则正确的方法为: L PIB1T MB1然后你在OB37中对M1.0计数即可。以上为个人建议,不足之处请指教。PLC的扫描周期与CPU的主频和程序的大小有关。是不可以修改的。根据程序的大小 ,扫描周期在几个毫秒到100个毫秒之间。你的采样频率为30000/H也就是1秒有8.3个脉冲。我们按9个脉冲算。这样的话,你的CPU必须在1秒内运行18个周期才可以完全统计这些脉冲。也就是扫描周期要在55毫秒内。因为CPU运行要处理各种事件,每一次的扫描时间也不尽相同。因此才会有脉冲不相同或漏计现象。要解决这个问题有以下办法:采用高速计数模块。采用带输入中断的DI模块。用上升沿中断计数。在程序中采用定时中断。OB30-OB38为循环中断。将其中一个OB的时间改成你的需要的时间。比如将OB37改成40ms.然后将计数程序移入OB37.但需要注意,不可再直接使用缓冲区的地址。因为这个地址的状态更新时间受扫描周期的影响。你需要直接读通道地址的状态。比如你的通道地址为I1.0。则正确的方法为: L PIB1T MB1然后你在OB37中对M1.0计数即可。以上为个人建议,不足之处请指教。