FC功能块调用与寻址,地址赋值问题

已锁定

手机用户2020101448NZ64

  • 帖子

    13
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2020-10-14

黄金 黄金 如何晋级?

FC功能块调用与寻址,地址赋值问题

528

1

2026-01-06 10:19:56

程序段1
TAR1 #TEMP7
L DB7.DBD0
LAR1
L DBD [AR1,P#0.0]
T #TEMP4
程序段2
TAR1 #TEMP7
L DB7.DBD0
LAR1
L DBD [AR1,P#0.0]
T #TEMP4
程序段3
L #TEMP4
L #IN1
>=I
= #TEMP5
程序段4
A #IN0
AN #TEMP5
= #TEMP6
程序段5
AN M2.0
ON #TEMP6
JC M002
L #TEMP4
L 1
+D
T #TEMP4
M002: NOP 0
程序段6
// 置位逻辑
A #IN0
A #TEMP5
S #IO3
// 复位逻辑
A #IN0
|NOT|
A #IN2
R #IO3
这里IN2始终为定值1
程序段7
NOP 0
L DB7.DBD0
LAR1
L #TEMP4
T DBD [AR1,P#0.0]
L P#DBX4.0
+AR1
TAR1 DB7.DBD0
LAR1 #TEMP7
程序段8
结束程序
这个是被调用的FC7功能块,#IN1=5,每个程序每次调用FC7时IN0的值不一定,=1/=0。M2.0是一个一秒一次的时钟开关,IN2=1。DB7内是有2000个双字的数组。问由于每次调用时寻址都不固定,TEMP4是怎么累加到大于等于5的,IO3才能被置位?这样寻址目的?
通过仿真软件读取到的L DBD7.DBD0是20,最后偏移四字节装载给DBD0回去的是十六进制84000020,上网查都是四字节也就是DBD4,这是为什么?
DB7里仿真在线DBD0是十六进制32A0,DBD4是0,DBD8是5,DBD12是5,DBD16是0,以下都是0、5这样交错的,为什么,越来越蒙了。
昨天有个大哥说给DB7数据块内的地址赋值,那我每次要做个程序要调用FC7,都需要赋值吗,这是西门子功能块调用规矩吗
FC功能块调用与寻址,地址赋值问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54815条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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