恭喜,你发布的帖子
发布于 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
希望这个是你需要的。
请填写推广理由:
分享
只看
楼主