找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
MOVD +1000, HSC0_PV:SMD42 // HSC0的下一个设定值为1000(第三设定值)
ATCH INT_2:INT2, 12 // 用中断程序2取代中断程序1,分配给中断事件12
HSC 0 // 起动HSC0,为其装载新的设定值和方向。
INT_2:
LD Always_On:SM0.0
R Q0.1, 2 // 输出端Q0.1和Q0.2复位(Q0.1=0,Q0.2=0)
MOVB 16#D8, HSC0_Ctrl:SMB37 // 重置HSC0的控制位,更新CV,并改成正向计
// 数(增计数)
MOVD +0, HSC0_CV:SMD38 // HSC0的当前值复位(CV=0)
ATCH INT_0:INT0, 12 // 把中断程序0分配给中断事件12
HSC 0 // 重新起动HSC 0.
对于上面的程序,我有几个问题:
问题1:在SBR_0中,MOVD 30000,SMD72
产生30000个脉冲(共60S),这个60秒的时间是怎么知道的呢(我的一个同事说是60秒)?
问题2:在INT_0中,到1500(经过3S)调用INT_1,这个3秒的时间又是怎样得知的呢?
问题3:在中断1中,计数改为减计数,减到1000时(经过2S)调用中断2,这个时间2秒又是怎样得知的呢?
问题4:在中断2里面,它调用中断0,用的是事件12(目前值和设定值相等,调用),中断2里面的设定值不变,还是1000,我的见解是在中断2里面调用中断0的条件是当前值要达到1000才能调用中断0,可是注释说--HSC0改成加计数,并将当前计数值置为0,而设定值PV保持不变(1000)
重新把中断程序0分配给中断事件12,程序再次起动HSC0运行。
注释的意思是一个重新分配的问题,根本没所谓的要满足什么条件才调用中断0,所以我就苦闷了,应该怎样理解呢?
拿中断1来说,当HSC0的计数脉冲达到第三设定值1000时,调用中断程序2。这里就有个要满足当前值和设定值相等才能调用,怎么在中断2里面,不用满足条件,而是重新分配给中断0 了呢,晕啊。
最后一个问题:第二个设定值是1500,然后改为减计数器,设定值为1000,那么从1500到1000的转变,是从1500减到1000吗。
希望有谁可以帮我解决这个苦恼的问题。
小程序查看
手机扫码追踪该问题
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
第一个问题:SMD72是系统专用寄存器,其作用是PTO 0的脉冲计数值,也就是PLC第一个脉冲输出点的脉冲输出计数,应该是只读的,能直接写入数据?
第二个问题:我不知道你从哪里看到的3s?
ATCH INT_1:INT1, 12 这条指令的意思应该是,当中断事件12发生时,执行中断程序1.而中断事件12是HSC0 CV=PV,也就是说当高速计数器0的当前值等于设定值,执行中断程序1.何来3S?
第三个问题:如上,我没看见何处有2S?
第四个问题:ATCH INT_0:INT0, 12意思就是 HSC0 CV=PV才能执行INT_0,这就是条件啊,
最后一个问题:《第二个设定值是1500,然后改为减计数器,设定值为1000,那么从1500到1000的转变,是从1500减到1000吗》是的。
建议先看看书,想看懂一段程序,至少你要知道这段程序中所用到的指令是什么意思。如果没有书,至少应该看懂系统手册。网上可以下载的。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!