[西门子] 西门子博途字逻辑指令

[复制链接]
查看66772 | 回复0 | 2024-5-23 17:09:13 | 显示全部楼层 |阅读模式
1、AND:“与”运算

AND:“与”运算指令是将输入 IN1 的值和输入 IN2 的值按位进行“与”运算,并在输出 OUT 中查看运算结果。

在执行该指令时,输入 IN1 的值的位 0和输入 IN2 的值的位 0 进行“与”运算。结果存储在输出 OUT 的位 0中。对指定值的所有其它位都执行相同的逻辑运算,按位一一对应进行“与”运算。对于IN可以是单个BYTE字节型数据,也可以是WORD字型数据。如下图所示:



指令初始状态必须要有IN1和IN2两个参数,可点击图中3位置※添加多个输入参数;

图中5位置为指令参数类型;

只有该逻辑运算中的两个位的信号状态均为“1”时,结果位的信号状态才为“1”。如果该逻辑运算的两个位中有一个位的信号状态为“0”,则对应的结果位将复位。



下面看一下实际运行监视情况:



有图中可以得出:只有”DB_1”.B_1和”DB_1”.B_2对应的位都是1结果才为1.

2、OR:“或”运算

可以使用“或”运算指令将输入 IN1 的值和输入 IN2 的值按位进行“或”运算,并在输出 OUT 中查询结果。

执行该指令后,将 IN1 输入的值的位 0和 IN2 输入的值的位 0进行“或”运算。结果存储在输出 OUT 的位 0中。对指定变量的所有位都执行相同的逻辑运算。“或”运算和“与”运算一样,都是位一一对应进行。

可以在指令功能框中展开输入的数字。在功能框中以升序对相加的输入进行编号。指令该执行时,将对所有可用输入参数的值进行“或”运算。结果存储在输出 OUT 中。

只要该逻辑运算中的两个位中至少有一个位的信号状态为“1”,结果位的信号状态就为“1”。如果该逻辑运算的两个位的信号状态均为“0”,则对应的结果位将复位。



同样IN可以是BYTE字节型也可以是WORD字型数据。可以是两个IN也可以为多个数据。

下面是参数表:



实际运算展示:



有实际运行验证:进行“或”运算时只要对应的位其中一个为1结果就是1,只有当对应的位都是0结果才会是0.

3.XOR:“异或”运算

“异或”运算指令将输入 IN1 的值和输入IN2 的值按位进行“异或”运算,并在输出 OUT 中查询结果。

执行该指令后,将 IN1 输入的值的位 0 和 IN2 输入的值的位 0进行“异或”运算。结果存储在输出 OUT 的位 0中。对指定值的所有其它位都执行相同的逻辑运算。一一对应关系。

可以在指令功能框中展开输入的数字。在功能框中以升序对相加的输入进行编号。指令该执行时,将对所有可用输入参数的值进行“异或”运算。结果存储在输出 OUT 中。

当该逻辑运算中的两个位中有一个位的信号状态为“1”时,结果位的信号状态为“1”。如果该逻辑运算的两个位的信号状态均为“1”或“0”,则对应的结果位将复位。两个位状态不一样结果为1,一样为0.



此指令和“与”、“或”可执行的数据类型一样不再赘述。



运行展示:



4.INVERT:求反码

使用“求反码”指令对输入 IN 的各个位的信号状态取反。在处理该指令时,输入 IN 的值与一个十六进制掩码(表示 16 位数的 W#16#FFFF 或表示 32 位数的 DW#16#FFFF FFFF)进行“异或”运算。这会将各个位的信号状态取反,并且结果存储在输出 OUT 中。

下面是指令格式及可执行的数据类型:



下面参数表:



程序运行展示:诸位取反



5、DECO:解码

使用“解码”指令,将输入值指定的输出值中的某个位置位。

“解码”指令读取输入 IN (默认的数据类型为UINT)的值,并将输出值中位号与读取值对应的那个位置位。输出值中的其它位以零填充。因输出数据类型位数最多为DWORD也就是32位数据,所以当输入IN 的值大于 31 时,则将执行以 32 为模的指令。

下面看一下指令格式:



如上图所示:输入数据类型不可更改为UINT,输出数据类型最多位为32位。

下面是参数表:



以下是不同输入值时对应的结果:



下面针对内部实际转换过程分解如下图示:



依次类推,当IN=15时,也就是2的15次方,二进制表示:1000 0000 0000 0000也就对应着16#0000_8000

当IN的数值超过15时,输出数据就变成双字DWORD为32位数据,同理推算验证结果。

当输出数据为BYTE型时,如下图所示:

IN=5,也就是2的5次方,二进制表示:0010_0000所以对应的M10.5也就为ON;

其它数值可自行设置转化验证。



6、ENCO:编码

使用“编码”指令读取输入值中最低有效位的位号并将其发送到输出 OUT。

“编码”指令选择输入 IN 值的最低有效位(最低位为1有效),并将该位号(为1的位位置号)写入到输出 OUT 的变量中。

“编码”指令与“译码”指令其实互为逆过程,编程中一般也会成对出现。

指令格式如下所示:



参数表



实例展示:



运行解析:



此指令可用于电梯设计中,当有多人按了楼梯按钮时,电梯按最低有效位去接人,依次顺序接人。也可作为仓储功能,做到先进先出等等,“编码”和“译码”指令应用比较多也很方便,可多加练习不同数据类型之间的运算过程。

7、SEL:选择

“选择”指令根据开关(输入 G)的情况,选择输入 IN0 或 IN1 中的一个,并将其内容复制到输出 OUT。如果输入 G 的信号状态为“0”,则移动输入 IN0 的值。如果输入 G 的信号状态为“1”,则将输入 IN1 的值移动到输出 OUT 中。

所有参数的所有变量都必须具有相同的数据类型。





==END

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则