请不吝指教:程序有问题吗?

已锁定

樱桃小丸子

  • 帖子

    168
  • 精华

    0
  • 被关注

    0

论坛等级:游士

注册时间:2003-06-06

普通 普通 如何晋级?

请不吝指教:程序有问题吗?

905

6

2003-10-28 09:09:16

我对这个程序不明白的地方是为什么我采集10数后就进行处理的话,第十个数根本就不起作用,而计算结果却是正确的。采集了11个数据后再进行处理就可以了。为什么?
请指教。感谢您!
ORGANIZATION_BLOCK MAIN:OB1

BEGIN
NETWORK 1

LD SM0.1
CALL 初始化

NETWORK 2
LD I0.0
LPS
AN M0.0
TON T32 +5
LPP
A T32
= M0.0

NETWORK 3
LD T32
LD C0
CTU C0 +6

NETWORK 4 //循环采集三个输入信号(在EM235上同时接12路模拟信号,
//通过外部电子开关选择具体信号。
LD I0.0
LPS
AW= C0 +1
=I Q0.0
LRD
AW= C0 +3
=I Q0.1
LRD
AW= C0 +5
=I Q0.2
LPP
LDW= C0 +0
OW= C0 +2
OW= C0 +4
ALD
=I Q1.0

NETWORK 5
LD Q0.0
CALL 读1#模拟量

NETWORK 6
LD Q0.1
CALL 读2#模拟量

NETWORK 7
LD Q0.2
CALL 读3#模拟量

NETWORK 8
LD Q0.0
O Q0.1
O Q0.2
TON T96 +4

END_ORGANIZATION_BLOCK

SUBROUTINE_BLOCK 初始化:SBR0

BEGIN
NETWORK 1 //NETWORK TITLE (single line)

LD SM0.0 //初始化最大填表数为12。
MOVW +12 VW30
MOVW +12 VW60
MOVW +12 VW90
MOVW +12 VW120
MOVW +12 VW150
MOVW +12 VW180
MOVW +12 VW210
MOVW +12 VW240
MOVW +12 VW270
MOVW +12 VW300
MOVW +12 VW330
MOVW +12 VW360

END_SUBROUTINE_BLOCK

SUBROUTINE_BLOCK 滤波:SBR1

VAR_INPUT
data1:WORD;
data2:WORD;
data3:WORD;
data4:WORD;
data5:WORD;
data6:WORD;
data7:WORD;
data8:WORD;
data9:WORD;
data10:WORD;
END_VAR
VAR_OUTPUT
output:WORD;
END_VAR
VAR
temp:WORD;
add1:DWORD;
add2:DWORD;
add3:DWORD;
add4:DWORD;
add5:DWORD;
add6:DWORD;
add7:DWORD;
add8:DWORD;
add:DWORD;
END_VAR
BEGIN
//10个数据,去掉最大值和最小值求其余8个的平均值。
NETWORK 1
LDW< #data2 #data1
MOVW #data2 #temp
MOVW #data1 #data2
MOVW #temp #data1

NETWORK 2
LDW< #data3 #data1
MOVW #data3 #temp
MOVW #data1 #data3
MOVW #temp #data1

NETWORK 3
LDW< #data4 #data1
MOVW #data4 #temp
MOVW #data1 #data4
MOVW #temp #data1

NETWORK 4
LDW< #data5 #data1
MOVW #data5 #temp
MOVW #data1 #data5
MOVW #temp #data1

NETWORK 5
LDW< #data6 #data1
MOVW #data6 #temp
MOVW #data1 #data6
MOVW #temp #data1

NETWORK 6
LDW< #data7 #data1
MOVW #data7 #temp
MOVW #data1 #data7
MOVW #temp #data1

NETWORK 7
LDW< #data8 #data1
MOVW #data8 #temp
MOVW #data1 #data8
MOVW #temp #data1

NETWORK 8
LDW< #data9 #data1
MOVW #data9 #temp
MOVW #data1 #data9
MOVW #temp #data1

NETWORK 9
LDW< #data10 #data1
MOVW #data10 #temp
MOVW #data1 #data10
MOVW #temp #data1

NETWORK 10
LDW> #data2 #data10
MOVW #data10 #temp
MOVW #data2 #data10
MOVW #temp #data2

NETWORK 11
LDW> #data3 #data10
MOVW #data10 #temp
MOVW #data3 #data10
MOVW #temp #data3

NETWORK 12
LDW> #data4 #data10
MOVW #data10 #temp
MOVW #data4 #data10
MOVW #temp #data4

NETWORK 13
LDW> #data5 #data10
MOVW #data10 #temp
MOVW #data5 #data10
MOVW #temp #data5

NETWORK 14
LDW> #data6 #data10
MOVW #data10 #temp
MOVW #data6 #data10
MOVW #temp #data6

NETWORK 15
LDW> #data7 #data10
MOVW #data10 #temp
MOVW #data7 #data10
MOVW #temp #data7

NETWORK 16
LDW> #data8 #data10
MOVW #data10 #temp
MOVW #data8 #data10
MOVW #temp #data8

NETWORK 17
LDW> #data9 #data10
MOVW #data10 #temp
MOVW #data9 #data10
MOVW #temp #data9

NETWORK 18
LD SM0.0
ITD #data2 #add1
ITD #data3 #add2
ITD #data4 #add3
ITD #data5 #add4
ITD #data6 #add5
ITD #data7 #add6
ITD #data8 #add7
ITD #data9 #add8

NETWORK 19
LD SM0.0
MOVD #add1 #add
+D #add2 #add
+D #add3 #add
+D #add4 #add
+D #add5 #add
+D #add6 #add
+D #add7 #add
+D #add8 #add
SRD #add 3
MOVW LW58 #output

END_SUBROUTINE_BLOCK

SUBROUTINE_BLOCK 读1#模拟量:SBR2

BEGIN
NETWORK 1
LD T96
EU
MOVW AIW0 VW0
MOVW AIW2 VW2
MOVW AIW4 VW4
MOVW AIW6 VW6

NETWORK 2
//将采集的数据填到表中。
LD T96
EU
ATT VW0 VW30
ATT VW2 VW60
ATT VW4 VW90
ATT VW6 VW120

NETWORK 3
//当采集了11个数据后进行数据处理。

LDW= VW32 +11 //这里就是我不明白的地方。如果我用采集了10个数据就处理
//的话,结果是第十个数据根本就没有起作用,可是计算结果
//还是正确的。为什么?
CALL 滤波 VW34 VW36 VW38 VW40 VW42 VW44 VW46 VW48 VW50 VW52 VW56
CALL 滤波 VW64 VW66 VW68 VW70 VW72 VW74 VW76 VW78 VW80 VW82 VW86
CALL 滤波 VW94 VW96 VW98 VW100 VW102 VW104 VW106 VW108 VW110 VW112 VW116
CALL 滤波 VW124 VW126 VW128 VW130 VW132 VW134 VW136 VW138 VW140 VW142 VW146
CALL 模拟量运算 VW56 VW86 VW116 VW146 VW58 VW88 VW118 VW148

NETWORK 4
LDW= VW32 +11
MOVW +0 VW32
MOVW +0 VW62
MOVW +0 VW92
MOVW +0 VW122

NETWORK 5
LD T96
R T96 1

END_SUBROUTINE_BLOCK

SUBROUTINE_BLOCK 读2#模拟量:SBR3

BEGIN
NETWORK 1
LD T96
EU
MOVW AIW0 VW10
MOVW AIW2 VW12
MOVW AIW4 VW14
MOVW AIW6 VW16

NETWORK 2
LD T96
EU
ATT VW10 VW150
ATT VW12 VW180
ATT VW14 VW210
ATT VW16 VW240

NETWORK 3
LDW= VW152 +11
CALL 滤波 VW154 VW156 VW158 VW160 VW162 VW164 VW166 VW168 VW170 VW172 VW176
CALL 滤波 VW184 VW186 VW188 VW190 VW192 VW194 VW196 VW198 VW200 VW202 VW206
CALL 滤波 VW214 VW216 VW218 VW220 VW222 VW224 VW226 VW228 VW230 VW232 VW236
CALL 滤波 VW244 VW246 VW248 VW250 VW252 VW254 VW256 VW258 VW260 VW262 VW266
CALL 模拟量运算 VW176 VW206 VW236 VW266 VW178 VW208 VW238 VW268

NETWORK 4
LDW= VW152 +11
MOVW +0 VW152
MOVW +0 VW182
MOVW +0 VW212
MOVW +0 VW242

NETWORK 5
LD T96
R T96 1

END_SUBROUTINE_BLOCK

SUBROUTINE_BLOCK 读3#模拟量:SBR4

BEGIN
NETWORK 1
LD T96
EU
MOVW AIW0 VW20
MOVW AIW2 VW22
MOVW AIW4 VW24
MOVW AIW6 VW26

NETWORK 2
LD T96
EU
ATT VW20 VW270
ATT VW22 VW300
ATT VW24 VW330
ATT VW26 VW360

NETWORK 3
LDW= VW272 +11
CALL 滤波 VW274 VW276 VW278 VW280 VW282 VW284 VW286 VW288 VW290 VW292 VW296
CALL 滤波 VW304 VW306 VW308 VW310 VW312 VW314 VW316 VW318 VW320 VW322 VW326
CALL 滤波 VW334 VW336 VW338 VW340 VW342 VW344 VW346 VW348 VW350 VW352 VW356
CALL 滤波 VW364 VW366 VW368 VW370 VW372 VW374 VW376 VW378 VW380 VW382 VW386
CALL 模拟量运算 VW296 VW326 VW356 VW386 VW298 VW328 VW358 VW388

NETWORK 4
LDW= VW272 +11
MOVW +0 VW272
MOVW +0 VW302
MOVW +0 VW332
MOVW +0 VW352

NETWORK 5
LD T96
R T96 1

END_SUBROUTINE_BLOCK

SUBROUTINE_BLOCK 模拟量运算:SBR5

VAR_INPUT
IIN1:WORD;
IIN2:WORD;
VIN1:WORD;
VIN2:WORD;
END_VAR
VAR_OUTPUT
I11:WORD;
I12:WORD;
V11:WORD;
V12:WORD;
END_VAR
BEGIN
NETWORK 1
LD SM0.0
MOVW #IIN1 #I11
/I +80 #I11
MOVW #IIN2 #I12
/I +800 #I12
MOVW #VIN1 #V11
/I +800 #V11
MOVW #VIN2 #V12
/I +800 #V12

END_SUBROUTINE_BLOCK

请不吝指教:程序有问题吗? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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