如何读取DB1中的数据(如DB1.DBw2--DB1.DBW50这20个地址中的数据)) 点击:3287 | 回复:11



ammly_2011

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2011年4月12日
发表于:2011-05-22 23:59:53
楼主
300PLC如何读取DB1中的数据(如DB1.DBw2--DB1.DBW50这20个地址中的数据)),我想用MW200分别去和这20个地址中的数据做比较,当有数据和MW200相等时,Q0.0值位,同时暂停比较,再把MW200的值清零,并Q0.0复位.当I0.0=1时再接刚DB1中比较的地址再按顺序往下去比较,这20组数据要按地址的顺序去和MW200比较,从DB1.DBW2到DB1.DBW50或着从DB1.DBW50到DB1.DBW2这样的顺序 谁可以帮我用STL语言帮我编下这个程序,同时在每一条附上注释。谢谢



ammly_2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2011年4月12日
发表于:2011-05-23 09:02:00
1楼
在线等啊,求高手指点

zhangpf5365

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 22回
  • 年度积分:0
  • 历史总积分:85
  • 注册:2006年4月12日
发表于:2011-05-23 09:25:21
2楼

这个可以直接写啊

 

chaorenerqiu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 9回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2009年12月07日
发表于:2011-05-23 14:13:14
3楼
A I 0.0
AN Q 0.0
A(
L DB1.DBW 2
L MW 200
==I
)
S Q 0.0
A I 0.0
AN Q 0.0
A(
L DB1.DBW 3
L MW 200
==I
)
S Q 0.0
A Q 0.0
JNB _001
L 0
T MW 200
SET
SAVE
CLR
_001: A BR
R Q 0.0
这个你可以直接写的,看看这样行不行,或者看还有没更简便的办法(不知道理解你意思对不对)

谢魏

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 21回
  • 年度积分:49
  • 历史总积分:100
  • 注册:2005年3月09日
发表于:2011-05-23 15:00:08
4楼

这个简单

 

谢魏

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 21回
  • 年度积分:49
  • 历史总积分:100
  • 注册:2005年3月09日
发表于:2011-05-23 15:02:50
5楼

OPN DB1

LAR1 P#0.0

L 20

NEXT:MW200

.....

L MW200

LOOP NEXT

提示到这,自己想象QQ:1119087176

书寒

  • 精华:1帖
  • 求助:0帖
  • 帖子:22帖 | 195回
  • 年度积分:0
  • 历史总积分:535
  • 注册:2006年3月31日
发表于:2011-05-23 18:36:21
6楼

指针+循环就OK了                           

ammly_2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2011年4月12日
发表于:2011-05-23 21:28:04
7楼
如果是一开始把DB1.DBW2地址中数据拿出来和MW200比较,相等时执行Q0.0,并暂停比较,不相等时或I0.0=1时再把DB1.DBW4中数据再拿来和MW200比较,直到DB1.DBW50比较结束,当I0.1=1时,再从DB1.DBW2开始比较,但我又不想把这个地址一个一个写出来,应该怎样用指针?

ammly_2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2011年4月12日
发表于:2011-05-25 00:45:09
8楼
谁能帮忙解释一下啊

好学PLC

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:0
  • 历史总积分:71
  • 注册:2005年6月11日
发表于:2011-05-25 10:11:39
9楼

A  Q0.0

R Q0.0

TAR1

L P#50.0

>= D

JCN START

R M20.0

LAR1 P#2.0

START: O I0.0

ON M20.0

JCN END

OPN DB1

L MW200

L DBW [AR1,P#0.0]

==I

JNC M01

S Q0.0

S M20.0

L 0

T MW200

M01:L P#2.0

+AR1

END: NOP 0

程序初始时要给AR1赋值P#2.0及复位M20.0

ammly_2011

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 15回
  • 年度积分:0
  • 历史总积分:92
  • 注册:2011年4月12日
发表于:2011-05-26 00:04:04
10楼
能不能每行都解释一下,我是个初学者,好多看不懂,书上也没有

yanglizhyx

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 19回
  • 年度积分:0
  • 历史总积分:125
  • 注册:2010年3月18日
发表于:2011-05-29 13:23:07
11楼

首先纠正你的错误,那个数据块共25个地址,而不是20个。其次你假设你第一次某个地址比较相等,结果将MW200清零,那么下一次比较之前你没有往MW200赋值,那岂不是和0比较了?

OPN DB 1    //打开数据块1

//数据块1中的10个数与MW200比较; MW250用来存储比较地址

O(
AN Q 0.0
A(
L DB1.DBW 2
L MW 200
==I
)
JNB _001
L 1
T MW 250
SET
SAVE
CLR
_001: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 4
L MW 200
==I
)
JNB _002
L 2
T MW 250
SET
SAVE
CLR
_002: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 6
L MW 200
==I
)
JNB _003
L 3
T MW 250
SET
SAVE
CLR
_003: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 8
L MW 200
==I
)
JNB _004
L 4
T MW 250
SET
SAVE
CLR
_004: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 10
L MW 200
==I
)
JNB _005
L 5
T MW 250
SET
SAVE
CLR
_005: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 12
L MW 200
==I
)
JNB _006
L 6
T MW 250
SET
SAVE
CLR
_006: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 14
L MW 200
==I
)
JNB _007
L 7
T MW 250
SET
SAVE
CLR
_007: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 16
L MW 200
==I
)
JNB _008
L 8
T MW 250
SET
SAVE
CLR
_008: A BR
)
O(
AN Q 0.0
A(
L DB1.DBW 18
L MW 200
==I
)
JNB _009
L 9
T MW 250
SET
SAVE
CLR
_009: A BR
)
O
AN Q 0.0
A(
L DB1.DBW 20
L MW 200
==I
)
= M 0.0

//当开关I0.0接通时,MW200接着上次的地址进行比较

A I 0.0
A(
AN Q 0.0
A(
L MW 250
L 1
==I
)
A(
L DB1.DBW 4
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 2
==I
)
A(
L DB1.DBW 6
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 3
==I
)
A(
L DB1.DBW 8
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 4
==I
)
A(
L DB1.DBW 10
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 5
==I
)
A(
L DB1.DBW 12
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 6
==I
)
A(
L DB1.DBW 14
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 7
==I
)
A(
L DB1.DBW 16
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 8
==I
)
A(
L DB1.DBW 18
L MW 200
==I
)
O
AN Q 0.0
A(
L MW 250
L 9
==I
)
A(
L DB1.DBW 20
L MW 200
==I
)
)
= M 0.1

//置位Q0.0

O M 0.0
O M 0.1
S Q 0.0

//若比较结果有相等情况,延时1s后,MW200清零,复位Q0.0

A Q 0.0
= L 20.0
A L 20.0
BLD 102
L S5T#1S
SD T 1
A L 20.0
A T 1
JNB _00a
L 0
T MW 200
SET
SAVE
CLR
_00a: A BR
R Q 0.0


热门招聘
相关主题

官方公众号

智造工程师