回复:怎么间接寻址到具体位,或者说怎么通过一个变量定义我的起始位

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15771
  • 精华

    102
  • 被关注

    984

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2020-08-24 11:35:32

1楼

我有smart的库程序,我用导出功能,你可以用导入功能导到你的200里面。



SUBROUTINE_BLOCK 间接寻位:SBR1

TITLE=程序目的:

// 本程序通过输入区号、字节号、位号,可以对输入I、输出Q、内部M、顺序S、部分系统SM、部分数据V等区域提取位的状。每个扫描周期都执行一次产生一个结果。目的在于根据输入参数,在可变的情况下把某个点信号输出到指定位置。

// 

//  使用范围:

//  可以无条件调用,可以有条件调用,可以在中断中使用。可以多次调用。

// 

// 程序接口:

//  区 地址的区域编码。I=0;Q=1;M=2;S=3;SM=4;V=8。请不要输入其他数值。

//  字节 该区域中的字节偏移量。

// 位 该字节中的位号。

//  以上数值请不要输入超过寻址范围的值,会发生间接寻址错的报警。

//  执行过程:

//  原理上把输入的区参数、字节参数填入间接寻址指针中。先找到该字节。然后移位指令把目标位移到0位,然后0位进行输出。

//  补充说明:

//  程序不能对全部区全部字节进行寻址。

// 程序因调试条件局限,可能不能适应你的程序使用,请在使用前自行检查程序后再使用。

//  程序密码:

//  作者:芳季2019-8-18

VAR_INPUT

区:BYTE; // I 0;Q 1;M 2;S 3;SM 4

字节:BYTE;

位:BYTE;

END_VAR

VAR_OUTPUT

Q:BOOL;

END_VAR

VAR

tempD:DWORD;

END_VAR

BEGIN

Network 1 

//  建立IB0的指针在tempD。

//  把字节编号注入到指针。

//  用新的指针进行间接寻址,右移字节到临时字节。

//  取得临时字节的最低位,就是意图中寻址的输入点。

LD     SM0.0

MOVB   LB0, LB4

MOVW   0, LW5

MOVB   LB1, LB7

MOVB   *LD4, LB8

SRB    LB8, LB2

A      L8.0

=      L3.0

END_SUBROUTINE_BLOCK


希望这个是你需要的。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33295条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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