请指正其中的错误,
另外我一直不明白,是否一定要使用中断和中断程序?
这样编的原因是,HSC0的零位是在0位置,HSC4的零位是一个固定的值,也是最大位置,运动是向内减小的
初始化子程序(调用一次)
网络1
LD Always_On:SM0.0
MOVB 16#D8, HSC0_Ctrl:SMB37 //设置控制位:增计数;复位有效逻辑 HIGH (高);4X 速率;已使能;
HDEF 0, 10 //外部复位
MOVD M_Pos_Imp_Carr:VD116, HSC0_CV:SMD38 //装载 PV ,VD116是上次停机前记忆的当前值,从HC0中读取
HSC 0
网络2
LD Always_On:SM0.0
MOVB 16#D8, HSC4_Ctrl:SMB147 //设置控制位:增计数;复位有效逻辑 HIGH (高);4X 速率;已使能;
HDEF 4, 9 //使用内部复位
MOVD M_Pos_Imp_C:VD416, HSC4_CV:SMD148 //装载 PV
HSC 4
以下为子程序(我不用中断程序,主程序中调用子程序)
子程序1:
网络1
LD Always_On:SM0.0
MOVB 16#B8, HSC0_Ctrl:SMB37 //设置控制位:增计数;复位有效逻辑 HIGH (高);4X 速率;已使能;
MOVD S_Pos_Imp_Carr:VD112, HSC0_PV:SMD42 //装载 CV
HSC 0 //装载 PV
网络2
根据读取HC0,并为设定值设置前后一定范围,HC0在这个范围内,则显示位置到达
子程序2:
网络1
LD Always_On:SM0.0
LPS
AN C_P_Zero:I0.5 //零位传感器
MOVB 16#D8, HSC4_Ctrl:SMB147 //非零位,写控制字16#D8,不更新初始值,更新预置值
LRD
A C_P_Zero:I0.5 //零位传感器
MOVB 16#F8, HSC4_Ctrl:SMB147 //零位,写控制字16#F8,更新初始值,更新预置值
MOVD Z_Pos_Cover:VD436, HSC4_CV:SMD148 //更新初始值
LPP
MOVD S_Pos_Imp_C:VD412, HSC4_PV:SMD152 //更新预置值
HSC 4
网络2
根据读取HC0,并为设定值设置前后一定范围,HC0在这个范围内,则显示位置到达