续:哪位编程高手帮我分析分析程序哪错了

已锁定

xgg

  • 帖子

    53
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2006-01-06

普通 普通 如何晋级?

续:哪位编程高手帮我分析分析程序哪错了

678

11

2007-08-18 22:55:55

我自己不调用 This Routine store values of V-memory to the internal EEPROM.自己编了一个程序好象可以执行如下:
GANIZATION_BLOCK 主程序:OB1
TITLE=程序注释M18.7开机一小时产生的一个标志位
// M18.0程序执行一次自校准后自动复位
// M29.0手动校准的标志,执行手动就复位校准计时
BEGIN
Network 1
LD SM0.1
MOVB 2, MB1
R M18.0, 6
S M18.7, 1
Network 2 // 网络标题
// 网络注释
LD SM0.0
= L60.0
LD M18.0
= L63.7
LD M29.0
= L63.6
LD L60.0
CALL SBR0, L63.7, L63.6, VB2700, VB2701, VD2702
Network 3
// 手动控制产生的标志
LD M29.0
S M18.3, 1
Network 4
// 中断前的数据保持
LD SM0.0
AN M18.1
MOVB MB1, VB2706
Network 5
// 正常状况下开机一小时执行一次自校准,然后每48小时循环执行一次,如果在一小时中间手动控制打断将不执行开机一小时的控制,而是重新计数,然后48时循环执行
LD M18.7
AN M18.3
AD>= VD2702, +1
OD>= VD2702, 48
EU
S M18.1, 1
S M18.2, 1
S M18.0, 1
R M18.7, 1
Network 6
LD M18.2
CALL SBR1
Network 7
// 自校准执行后把MB1的状态恢复至执行前
LD M18.6
MOVB VB2706, MB1
R M18.6, 1
R M18.0, 1
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK 校准计时:SBR0
TITLE=子程序注释
VAR_INPUT
自动清零:BOOL;
手动清零:BOOL;
END_VAR
VAR_OUTPUT
秒:BYTE;
分:BYTE;
小时:DWORD;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD L0.0
O L0.1
FILL +0, LW1, 3
Network 2
LDN M19.3
TON T33, +100
Network 3
LD T33
= M19.3
Network 4
LD T33
INCB LB1
Network 5
LDB>= LB1, 6
INCB LB2
MOVB 0, LB1
= Q0.0
Network 6
LDB>= LB2, 6
INCD LD3
MOVB 0, LB2
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK 自动校准:SBR1
TITLE=子程序注释
VAR
temp:REAL;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
LPS
MOVW +0, VW200
AENO
S M31.4, 1
= Q1.7
LPP
A M1.0
ANDB 250, MB1
Network 2
LD SM0.0
MOVR 5.0, VD2012
Network 3
LD SM0.0
MOVR VD2012, LD0
Network 4
LDN M19.4
TON T47, 200
Network 5
LD T47
= M19.4
Network 6
LD T47
LDW>= C5, 4
CTU C5, 4
Network 7
LDW= C5, +1
EU
MOVR LD0, VD2046
Network 8
// 把执行结果存在EEPROM中
LDW= C5, 2
EU
AN SM31.7
MOVW 2046, SMW32
MOVB 3, SMB31
S SM31.7, 1
Network 9
LDW= C5, 3
EU
R Q1.7, 1
R M31.4, 1
R M18.2, 1
S M18.6, 1
Network 10 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK
SUBROUTINE_BLOCK 校准计时:SBR0
TITLE=子程序注释
VAR_INPUT
自动清零:BOOL;
手动清零:BOOL;
END_VAR
VAR_OUTPUT
秒:BYTE;
分:BYTE;
小时:DWORD;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释
LD L0.0
O L0.1
FILL +0, LW1, 3
Network 2
LDN T40
TON T40, +10
Network 3
LD T40
INCB LB1
Network 4
LDB>= LB1, 60
INCB LB2
MOVB 0, LB1
Network 5
LDB>= LB2, 60
INCD LD3
MOVB 0, LB2
END_SUBROUTINE_BLOCK
SUBROUTINE_BLOCK 自动校准:SBR1
TITLE=子程序注释子程序注释MB1是一系列的泵的控制M1.0 是泵停(1)标志,下面是采集VD2012的数据进行校准运算,且VD2012的数要求保存在EEPROM中
VAR
temp:REAL;
END_VAR
BEGIN
Network 1 // 网络标题
// 网络注释在M1.0(1)泵时停状态下须开泵,
LD SM0.0
LPS
MOVW +0, VW200
AENO
S M31.4, 1
= Q1.7
LPP
A M1.0
ANDB 250, MB1
Network 2
LD SM0.0
MOVR VD2012, LD0
Network 3
// 采集运算间隔10MS
LDN M19.4
TON T47, 200
Network 4
LD T47
= M19.4
Network 5
LD T47
LDW>= C5, 4
CTU C5, 4
Network 6
LDW= C5, +1
EU
MOVR LD0, VD2046
Network 7
// 把执行结果存在EEPROM中
LDW= C5, 2
EU
AN SM31.7
MOVW 2046, SMW32
MOVB 3, SMB31
S SM31.7, 1
Network 8
LDW= C5, 3
EU
R Q1.7, 1
R M31.4, 1
R M18.2, 1
S M18.6, 1
Network 9 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK

但在这个程序中写入调用
LD SM0.0

= L60.0

LD M29.7

= L63.7

LD L60.0

CALL SBR2, L63.7, MD20, MW24, MW26, M14.0, M14.1好象程序也瘫痪了,按道理不应该影响程序的


续:哪位编程高手帮我分析分析程序哪错了 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33777条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。