发布于 2005-04-16 15:09:10
0楼
无名,你考虑得太复杂了,中断里的程序越简单越好,不到万不得已,不要在中断里使用指针和间址寻址.而且你取QW和PQW的值好象有些问题.
笑兄,你是对的,但也是简单过头啦,哈哈!
OB40
NETWORK 1
L #OB40_POINT_ADDR;
T "IMAGE_INPUT"; MD10
NETWORK 2
A "A_PHASE_ZERO"; M10.0
JCN A_PH;
A "A_PHASE_CMD"; M20.0
= "IMAGE_Q0.0"; Q0.0
A_PH: NOP 0;
NETWORK 3
A "B_PHASE_ZERO"; M10.1
JCN B_PH;
A "B_PHASE_CMD"; M20.1
= "IMAGE_Q0.1"; Q0.1
B_PH: NOP 0;
NETWORK 4
A "C_PHASE_ZERO"; M10.2
JCN C_PH;
A "B_PHASE_CMD"; M20.2
= "IMAGE_Q0.2"; Q0.2
C_PH: NOP 0;
NETWORK 5
L QW 0;
T PQW 0;
END_ORGANIZATION_BLOCK
其中M20.0/M20.1/M20.2可以由一个总的标志位来控制
如果用AW指令或OW指令的
OB40
NETWORK 1
L #OB40_POINT_ADDR;
T "IMAGE_INPUT"; MD10
L W#16#0;
T "IMAGE_PQW0"; MW14
NETWORK 2
A "A_PHASE_ZERO"; M10.0
JCN A_PH;
A "A_PHASE_CMD"; M20.0
= "IMAGE_Q0.0"; M14.0
A_PH: NOP 0;
NETWORK 3
A "B_PHASE_ZERO"; M10.1
JCN B_PH;
A "B_PHASE_CMD"; M20.1
= "IMAGE_Q0.1"; M14.1
B_PH: NOP 0;
NETWORK 4
A "C_PHASE_ZERO"; M10.2
JCN C_PH;
A "B_PHASE_CMD"; M20.2
= "IMAGE_Q0.2"; M14.2
C_PH: NOP 0;
NETWORK 5
L QW 0;
L W#16#F8FF;
AW;
L "IMAGE_PQW0"; MW14
OW
T QW 0;
T PQW 0;
END_ORGANIZATION_BLOCK
Zane
注册自动化系统工程师
Always save before download