一则关于cpu300系统时钟是否受控于程序周期的关系
今天,在“找答案”版区看到有这样一个提问,很具有代表性的问题,具体问题的链接:
http://www.ad.siemens.com.cn/service/answer/tobe_solution.aspx?Q_ID=205796&cid=1029#
该网友提问,假设设置系统时钟,用户程序的扫描周期为100mS,那么,OB1中的系统时钟周期为:用户程序的扫描周期 + 系统时钟(位值)?
下面就这个关系,做一个验证,以消除疑虑。
验证:
1) 创建一个项目,定义系统时钟MB0。
2) 为验证网友的提问问题点,我采用SFC47,让用户程序在OB1中的扫描周期“调整”到100mS,其实,一般用户程序的扫描周期大概在几毫秒或几十毫秒为多数情况。
3) 为验证差异性,再定义一个循环定时中断,时间定义为1S,用这个中断的数据与OB1做验证比较。
程序:
设置系统时钟MB0(取M0.5 = 1S脉冲)
定义循环定时中断OB35,时间100mS:
编译保存项目。
在OB1编辑一个延时周期的SFC47,并编辑一个ADD_DI(+1,结果存放到MD100):
在OB35定时中断组织块中编辑ADD_DI(每100mS+1,结果存放到MD104):
继续创建一个变量表,方便监控具体数据的加1情况,将程序编译、保存下载到仿真器:
在OB1中的累加数据基本与在定时中断组织块编辑的累加1S的数据相近,由此说明扫描周期与系统时钟没有实质上的关联。
继续按网友的要求将用户程序循环延时到100mS后,再看结果:
变量表监控结果:
时间脉冲个数仍然基本一致,上图不同的原因是定时组织块的累加10次等同于1S时的差异关系,由此验证说明系统时钟不受用户程序扫描周期的影响。