最近总是碰上奇怪的问题,也不知是个人编程习惯的问题还是怎么了。为什么编的程序只能在反转使能一次之后,正转才有效。先按正转是无效的。M0.0控制正转(开)脉冲(Q0.1),M0.1控制(关)脉冲(Q0.0)。先接通M0.1是无效的,Q0.0不发脉冲,Q0.0的灯也不亮,但是在软件中监视确实Q0.0变蓝了。只有在M0.0接通一次后,就变得正常了,正转也行,反转也行。好像几年前也在其他系统上发现这个问题,只不过没有注意,但是现在引起了我的重视。请各位大侠帮忙看看是哪里出了问题。谢谢!
程序:
TITLE=程序注释
Network 1
// 初始化
LD SM0.1
R M0.0, 8
R Q0.0, 16
Network 2 // 关
// 设置SMB67为16#85,表示脉冲周期的基准为微秒,设置SMB67为16#8C,表示脉冲周期的基准为毫秒,SMW68为脉冲周期,SMD72为脉冲个数。
//
LD M0.0
MOVB 16#85, SMB67 // 设置控制字节:
// - 选择PTO操作
// - 选择单段操作
// - 选择微秒增加
// - 设置脉冲计数和周期数值
// - 启用PTO功能
MOVW 1000, SMW68 // 将周期设为1毫秒。
MOVD +100, SMD72 // 将脉冲计数设为100次脉冲。
// 处理PTO完成中断的中断。
PLS 1 // 全局中断启用
// 激活PTO操作,PLS0 => Q0.0
// 预载控制字节,用于随后的
// 周期改动。
Network 3 // 开。
// 设置SMB77为16#85,表示脉冲周期的基准为微秒,设置SMB77为16#8C,表示脉冲周期的基准为毫秒,SMW68为脉冲周期,SMD72为脉冲个数。
LD M0.1
MOVB 16#85, SMB77
MOVW 1000, SMW78
MOVD +100, SMD82
PLS 0