发布于 2015-01-21 08:26:55
7楼
我改了一下复位的信号,测试下来的结果也不好,不明白问题出在哪儿?请高手帮忙看看啊
改了几个网络,主程序网络2和网络3,子程序网络1
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1 // 网络标题
// 上位机存入数据
LD SM0.0
MOVB 0, VB0
MOVB 1, VB1
MOVB 2, VB2
MOVB 3, VB3
MOVB 4, VB4
MOVB 5, VB5
MOVB 6, VB6
MOVB 7, VB7
MOVB 8, VB8
MOVB 9, VB9
MOVB 10, VB10
MOVB 11, VB11
MOVB 12, VB12
MOVB 13, VB13
MOVB 14, VB14
MOVB 15, VB15
Network 2
// QIDONG调用子程序
// FUWEI复位子程序中的输出
// ZHIZHENG起始地址
// ZHIJIGESHU字节个数
// ZHONGJIAN2如果结果不符,会每次加1
// ZHONGHE字节之和
// WANCHENG每次调用结束
LD M0.0
O M0.2
O SM0.1
= L60.0
LD M0.0
O M0.1
EU
= L63.7
LD M0.0
O M0.1
= L63.6
LD L60.0
CALL SBR0, L63.7, L63.6, &VB0, 3, VD20, VW30, VW40, M1.0
Network 3
// 结果不符进行变址加1
LD SM0.0
A M1.0
AW<> VW30, 30
AN C0
EU
INCD VD20
S M0.2, 1
A M0.2
S M0.1, 1
Network 4
LD SM0.0
A M1.0
AW<> VW30, 30
A M0.1
EU
LD SM0.0
A M1.0
ED
O SM0.1
CTU C0, 1
Network 5
LD SM0.0
A M1.0
ED
R M0.1, 2
Network 6
// 第一次启动
LD I0.0
EU
= M0.0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
VAR_INPUT
FUWEI:BOOL;
QIDONG:BOOL;
ZHIZHENG:DWORD;
ZHIJIGESHU:WORD;
ZHONGJIAN2:DWORD;
END_VAR
VAR_OUTPUT
ZHONGHE:WORD;
DIZHI:WORD;
WANCHENG:BOOL;
END_VAR
VAR
ZHONGJIAN1:DWORD;
ZHONGJIAN3:DWORD;
ZHONGJIAN4:WORD;
END_VAR
BEGIN
Network 1
// 复位一下
LD L0.0
R L15.0, 1
MOVW 0, LW24
Network 2 // 网络标题
// 网络注释
LD L0.1
MOVD LD1, LD16
MOVD LD16, LD20
+D LD7, LD20
MOVB *LD20, AC0
DECW LW5
Network 3
LD L0.1
FOR LW24, +1, LW5
Network 4
// 加
LD L0.1
+D +1, LD20
MOVB *LD20, AC1
+I AC1, AC0
Network 5
NEXT
Network 6
// 输出
LD L0.1
AW= LW24, +3
MOVW AC0, LW11
= L15.0
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK