| 作者 | 主题 |
|---|---|
|
WWCWWC 至圣
经验值:79157 发帖数:9099 精华帖:157 |
楼主
主题:说说200 smart高速计数器的计数5
说说200 smart高速计数器的计数5 一直来,想做一件把枯燥乏味的编程工作变的稍有一丝生动,而富有趣味,借着这次说说来做一个相对有趣味性的编程验证。 一天晚上,在吃饭时,突然有了一个突发奇想的念头,如果有一个高速计数器的预设值,需要连续改变预设值100次不同的数据或者更多次,作为一次完整的循环动作如何编辑这样的高速计数器程序?编辑这样类似的控制程序首先是确定在当前值等于预设值中变更预设值,重新启用高速计数器。我开始按高速计数器一般编程方式编辑起来,当编辑到第3个预设值时,感觉不得劲了。第一次部分中断程序如题所示:比较中断次数并重新启用高速计数器的方法 上述中断中编程方式暴露的一些问题想必大家都知道,中断程序应以短小、精干解决若干问题。 西门子强大的编程方法总不是一件摆设,重新改变一下思路,试试指针的方法如何?如果控制要求需要改变100个预设值,且每一个预设值占用一个双字,则、PLC存储器需要的寄存器V区地址占用400个字节(指针存储器地址按字节单位计算),查了一下200 smart PLC存储器地址V区范围,比原200有了大的提升,如按226与CR60对比,226最大(0-10239字节),而CR60(0-20479字节),足足增加了一倍。 编程思路: 1) 首先规划好这100的预设值数据存储区地址为VD1000开始的100个双字地址区(预设值地址的需要),VD1000~VD1392,分别存放自10开始,再按每增加10个脉冲的预设值递增,规划地址的目的是规避地址重置 2) 在主程序中启用初始化高速计数器、中断次数,在当前值等于预设值中断中启用指针,将数据存储地址指向下一个存储区,编辑指针方式地址最好是一个连续的地址区 3) 按硬件要求编写高速计数器程序,定义高速计数器
假设,本验证程序采用的是高速计数器HSC1,模式0,连接外部输入I0.0及相应编码器电源。 程序: 初始化高速计数器: 数据块编写预设值数据:类似有规律的数据递增也可以用程序编写,这里暂不编写 主程序调用初始化子程序: 当前值等于预设值中断: 指针的编写方式: 在初始化程序中写入第一个预设值,启动高速计数器后,当高速计数器脉冲个数等于10时,进入中断子程序,实现中断程序中指针偏移循环赋值预设值的目的,直到100次赋值预设值次数到达,实现循环工作。 将程序编译、保存到指定的盘符;连接外部编码器;检查确认无误后上电,并将程序下载到cpu,新建“状态图表”监控编辑的程序,图示: 从“状态图表”中监控显示的数据符合最初编程的思路。 采用指针编程方式,对于一些连续的地址区编写数据传送是一个比较方便的编程方法,相比开始的那种方法,要简化的多的多。西门子编程方法“高深莫测”、“多样化”、“个性化”是我一直在探寻的动力。 |