首页 > 其他分享 >XS PLCopen 标准控制器 XS Studio 指令

XS PLCopen 标准控制器 XS Studio 指令

时间:2023-12-16 22:33:28浏览次数:27  
标签:输出 定时器 PLCopen INT iVar1 Studio VAR XS 输入

  1. 基础指令     1-1. 位逻辑指令   1-1-1. 基本位逻辑指令 指令名称            功能介绍 AND                   运算符“与”  OR                    运算符“或” NOT                   运算符“非” XOR                   运算符“异或”     基本位逻辑指令包括有“与”、“或”、“非”、“异或”。在 XS Studio 中,从功能上分可以分为:按位 逻辑运算及布尔逻辑运算。  按位逻辑运算:对两个整型数据的相应位逐一进行布尔逻辑运算,并返回兼容的整数结果。  布尔逻辑运算:对两个布尔类型数据执行逻辑运算。     1-1-1-1. 按位“与”AND 功能:按位“与”运算指令是比较两个整数的相应位。当两个数的对应位都是 1 时,返回相应的结 果位是“1”;当两个整数的相应位都是“0”或者其中一个位是“0”时,则返回相应的结果位是“0”。 例:创建一个 POU,声明两个整型 变量iVar1和iVar2,分别对其进行赋值1和85,并对这两个变量进行按位与运算,输出结果至iResult, 具体实现代码如下所示: VAR iVar1:INT:=1; iVar2:INT:=85; iResult:INT; END_VAR iResult:=iVar1 and iVar2; 10 进制数 1 对应 2 进制数为 0000 0001,10 进制数 85 对应 2 进制数为 0101 0101。根据按位与运算 的定义,将每一个独立位逐一进行“与”运算,得出最终的结果 0000 0001,即 10 进制数值 1。 1-1-1-2. 布尔“与”AND 功能:布尔“与”运算用于计算两个布尔表达式的“与”结果。当两个布尔表达式的结果都为真时, 则返回为真,其中只要有一个为假时,则返回为假. 例:创建一个 POU,利用布尔“与”运算,判断运算返回值,代码如下: VAR B1:BOOL; B2:BOOL; B3:BOOL; END_VAR B3:=B1 AND B2; 当 B1 和 B2 都为 TRUE 时,程序的运行结果是 B3 才为 TRUE。   1-1-1-3. 按位“或”OR 功能:按位“或”运算指令是比较两个整数的相应位。当两个数的对应位有一个是“1”或者都是 “1”时,返回相应的结果位为“1”。当两个整数的相应位都是“0”时,则返回相应的结果为是“0”。   例:创建一个 POU,对变量 iVar1 和 iVar2 进行按位“或”运算,并对这两个变量进行按位或运算, 输出结果至 iResult,具体实现代码如下所示: VAR iVar1:INT:=1; iVar2:INT:=85; iResult:INT; END_VAR iResult:=iVar1 OR iVar2; 程序的最终运行结果为 85。 1-1-1-4. 布尔“或”OR 功能:布尔“或”运算指令用于计算两个布尔表达式的“或”结果。当两个布尔表达式中有一个表 达式返回为真时,则结果为真;当两个布尔表达式的结果都是假时,则结果为假。 例:创建一个 POU,利用布尔“或”运算,判断运算返回值,代码如下: VAR bResult:BOOL; bVar1:BOOL; iVar1:INT:=30; END_VAR bResult:=bVar1 OR (iVar1 <80);   由于 iVar1 的初始值为 30,故 iVar1<80 条件为真,而 bVar1 的初始值为“0”,故为假,一真一假 最终的“或”逻辑结果为真。故等式右边的条件为真,程序的运行结果是 bResult 为 TRUE。 1-1-1-5. 按位“非”NOT 功能:对逻辑串进行取反,将当前的值由“0”变“1”,或由“1”变“0”。按位“非”运算指令 是将变量或常量逐一取非。 例:创建一个 POU,利用按位“非”运算,判断运算返回值,具体代码如下: VAR byVar1:BYTE:=1; byVar2:BYTE; END_VAR byVar2:=NOT byVar1; 由于 byVar1 的值为 1,将其转换为 2 进制后为 0000 0001,进行按位取反后,结果为 1111 1110。最 终的输出结果为 254。 1-1-1-6. 布尔“非”NOT 功能:布尔“非”运算指令用于计算单个布尔表达式的结果。当输入为真时,结果为假;当输入为 假时,结果为真。 例:创建一个 POU,利用布尔“非”运算,判断运算返回值,具体代码如下: VAR bResult:BOOL; bVar1:BOOL; iVar1:INT:=30; END_VAR bResult:=NOT ( 80 < iVar1 ); 80<30 该命题为假,使用 NOT 指令对该布尔表达式取反后,得到的结果为真,故最后 bResult 的结 果为 True。 1-1-1-7. 按位“异或”XOR 功能:按位“异或”运算指令比较两个整数的相应位。当两个整数的对应位是一个“1”而另外一 个是“0”时,返回相应的结果位是“1”。当两个整数的相应位都是“1”或都是“0”时,则返回相应 的结果位是“0”。 例:创建一个 POU,对变量 iVar1 和 iVar2 进行按位“异或”运算,并输出结果,具体实现代码如 下: VAR iVar1:INT:=1; iVar2:INT:=85; iResult:INT; END_VAR iResult:=iVar1 XOR iVar2; 10 进制的 1 对应 2 进制数是 0000 0001,10 进制数 85 对应的 2 进制数是 0101 0101。根据按位“异 或”运算指令的定义,其结果为 84。 按位异或位运算。只有当一个触点的输入状态为“1”,另一个触点的输入状态为“0”时,输出为 “1”,如果两个触点状态同时为“1”或同时为“0”,则输出为“0”。 1-1-1-8. 布尔“异或”XOR 功能:布尔“异或”运算指令用于计算两个布尔表达式的结果,只有当其中一个表达式是真,另外 一个表达式为假时,该表达式返回的结果才是真;当两个表达式的计算结果都是真或者都是假时,则返 回的结果为假。 例:创建一个 POU,利用布尔“异或”运算指令,判断返回值是 TRUE 还是 FALSE,具体实现代 码如下: VAR bResult:BOOL; bVar1:BOOL; iVar1:INT:=30; END_VAR bResult:=bVar1 XOR (iVar1 <80); 程序的运行结果为 TRUE。   1-1-2. 置位优先与复位优先触发器指令 指令名称                       功能介绍 SR                                置位优先触发器:置位双稳态触发器,置位优先 RS                                复位优先触发器:复位双稳态触发器,复位优先   在继电器系统中,一个继电器的若干对触点是同时动作的。在 PLC 中,指令是一条一条执行的, 指令的执行是有先后次序的,没有“同时”执行的指令。所以线圈格式的置位、复位指令有优先级。SR 触发器与 RS 触发器的置位输入和复位输入在同一条指令里,置位和复位输入谁在指令输入端的下面谁 后执行。SR 触发器为“置位优先”型触发器,当置位信号(SET1)和复位信号(RESET)同时为 1 时, 触发器最终为置位状态;RS 触发器为“复位优先”型触发器,当置位信号(SET)和复位信号(RESET1) 同时为 1 时,触发器最终为复位状态。 1-1-2-1. 置位优先触发器 SR 功能:置位双稳态触发器,置位优先。逻辑关系:Q1=(NOT RESET AND Q1) OR SET1,其中 SET1 为置位信号,RESET 为复位信号。 语法:当 SET1 为“1”时,不论 RESET 是否为“1”,Q1 输出都为“1”;当 SET1 为“0”时, 如果 Q1 输出为“1”,一旦 RESET 为“1”,Q1 输出立刻复位为“0”。如果 Q1 输出为“0”,不论 RESET 为“1”或者“0”,Q1 输出保持为“0”。   1-1-2-2. 复位优先触发器 RS 功能:复位双稳态触发器,复位优先。逻辑关系:Q1=NOT RESET1 AND (Q1 OR SET),其中 SET 为置位信号,RESET1 为复位信号。 语法:当 RESET1 为“1”时,不论 SET 是否为“1”,Q1 输出都为“0”;当 RESET1 为“0”时, 如果 Q1 输出为“0”,一旦 SET 为“1”,Q1 输出立刻置位为“1”。如果 Q1 输出为“1”,不论 SET 为“1”或者“0”,Q1 输出保持为“1”。   1-1-3. 数据单元类型   指令名称                                  功能介绍 R_TRIG                                   上升沿触发 F_TRIG                                   下降沿触发   边沿检测指令用来检测 BOOL 信号的上升沿(信号由 0---->1)和下降沿(信号由 1---->0)的变化, 在每个扫描周期中把信号状态和它在前一个扫描周期的状态进行比较,若不同则表明有一个跳变沿。因 此,前一个周期里的信号状态必须被存储,以便能和新的信号状态相比较。 1-1-3-1. 上升沿检测 R_TRIG 功能:用于检测上升沿。 语法:当 CLK 从“0”变为“1”时,该上升沿检测器开始启动,Q 输出先由“1”然后输出变为“0”, 持续一个 PLC 运算周期;如果 CLK 持续保持为“1”或者“0”,Q 输出一直保持为“0”。 1-1-3-2. 下降沿检测 F_TRIG 功能:用于检测下降沿。 语法:当 CLK 从“1”变为“0”时,该下降沿检测器开始启动,Q 输出先由“1”然后输出变为“0”, 持续一个 PLC 运算周期;如果 CLK 持续保持为“1”或者“0”,Q 输出一直保持为“0”。   1-2. 定时器指令   1-2-1. 脉冲定时器 TP 功能:脉冲定时。 语法:在定时器的输入端 IN 从“0”变为“1”时,定时器则启动,无论定时器输入端 IN 如何变化, 定时器的实际运行时间都是用户所定义的 PT 时间,在定时器运行时,其输出端 Q 的输出信号为“1”。 输出端 ET 为输出端 Q 提供定时时间。定时从 T#0s 开始,到设置的 PT 时间结束。当 PT 时间到时,ET 会保持定时时间直到 IN 变为“0”时。如果在达到 PT 定时时间之前输入 IN 已经变成“0”,输入 ET 编程 T#0s,PT 定时的时刻。为了复位该定时器,只需要设置 PT=T#0s 即可。 1-2-2. 通电延时定时器 TON 功能:通电延时定时。 语法:在定时器的输入端 IN 从“0”变为“1”时,定时器则启动,当到达定时时间 PT 且输入端的 信号 IN 始终维持在“1”时,其输出端 Q 的输出信号为“1”,如果在定时器的定时时间到达之前,输 入端 IN 信号由“1”变为“0”时,则定时器复位,下一个 IN 信号的上升沿定时器重启。输出端 ET 提 供定时时间,延时从 T#0s 开始,到设置的 PT 时间结束。PT 到达时,ET 将会保持定时时间直到 IN 变 为“0”为止。如果在达到 PT 定时时间之前,输入 IN 变为“0”,输出 ET 立即变为 T#0s。为了重启定 时器,可以设置 PT=T#0s,也可以将 IN=FALSE。 1-2-3. 断电延时定时器 TOF 功能:断电延时定时。 语法:在定时器的输入端 IN 从“0”变为“1”时,定时器的 Q 输出信号为“1”,定时器的启动输 入端变为“0”时,定时器则启动,只要当定时器在运行,其输出 Q 一直为“1”,当到达定时时间时, 输出端 Q 复位,在到达定时时间之前,如果定时器的输入端返回为“1”,则定时器复位,输出端的 Q 输出信号保持为“1”。输出端 ET 提供定时时间,延时从 T#0s 开始到设置的定时时间 PT 结束。当 PT 时间到时,ET 将保持定时时间直到输入 IN 返回“1”为止。如果在达到 PT 定时时间之前,输入 IN 变 为“1”,输出 ET 立即变为 T#0s。为了复位定时器,可以设置将 PT=T#0s。   1-2-4. 实时时钟 RTC 功能:在给定时间启动,返回当前日期和时间。 语法:RTC(EN, PDT, Q, CDT)表示:当 EN 为“0”,输出变量 Q 以及 CDT 为“0”相关时间为 DT#1970-01-01-00:00:00。一旦 EN 为“1”,PDT 给予的时间将会被设置,并且将会以秒进行计数。一 旦 EN 被复位为 FALSE,CDT 将会被复位为初始值 DT#1970-01-01-00:00:00。请注意,PDT 时间只上升 沿有效。   1-3. 计数器指令 1-3-1. 增计数器 CTU 当计数器输入端 CU 的信号从状态“0”变为状态“1”时,当前计算值加 1,并通过输出端 CV 进 行显示,第一次调用时(复位输入 RESET 信号状态为“0”),输入 PV 端的计数为默认值,当计数达 到上限 32767 后,计数器将不会再增加,CU 也不会再起作用。 当复位输入端 RESET 的信号状态为“1”时,计数器的 CV 和 Q 都为“0”,只要输入端 RESET 状 态为“1”,上升沿对 CU 就不再起作用。当 CV 值大于或等于 PV 时,输出端 Q 为“1”。此时 CV 仍 可继续累加,输出端 Q 继续为输出“1”。 增量功能块。输入变量 CU 和复位 RESET 以及输出变量 Q 是布尔类型的,输入变量 PV 和输出变量 CV是 WORD 类型。CV将被初始化为0,如果复位RESET是 TRUE真的。如果 CU 有一个上升沿从 FALSE 变为 TRUE,CV 提升 1,Q 将返回 TRUE,如此 CV 将大于或等于上限 PV。 1-3-2. 减计数器 CTD 当减计数器输入端的 CD 信号从“0”变为状态“1”时,当前计数值减 1,并在输出端上 CV 显示 当前值,第一次调用时(需要将加载输入端信号 LOAD 初始化,需要将其从“0”变为状态“1”,再变 为状态“0”后功能块才能生效),输入 PV 端的计数为默认值,当计数达到 0 后,计数值将不在会减少, CD 也不再起作用。 当加载输入端信号 LOAD 为“1”时,计数值将设定成 PV 默认值,只要加载输入端信号 LOAD 状 态为“1”,输入端的 CD 上升沿就不起作用。当 CV 值小于或等于 0 时,输出端 Q 为“1”。 1-3-3. 增/减双向计数器 CTUD 当加计数输入端的 CU 信号从“0”变为状态“1”时,当前计数值加 1,并在输出 CV 上显示。 当减计数输入端的 CD 的信号状态从“0”变为状态“1”时,当前计数值减 1,并在输出端 CV 上 显示。如果两个输入端都是上升沿,当前计数值将保持不变。   当计数值达到上限值 32767 后,加计数输入端 CU 的上升沿不再起作用。因此即使加计数输入端 CU 出现上升沿,其数值也不会增加。同理,当计数值达到下极限值 0 后,减计数输入端 CD 也不会在起作 用,因此,即使减计数输入端 CD 出现上升沿,计数值也不会减少。 当 CV 值大于或等于 PV 值时,输出 QU 为“1”。当 CV 值小于或等于 0 时,输出 QD 为“1”。 例:创建一个 POU,使用增/减双向计数器 CTUD,当 bUp 有上升沿信号时,计数值增加,bDown 有上升沿信号时,计数值减小。bReset 用于数据复位,具体代码如下: VAR bUp: BOOL; bDown: BOOL; bReset: BOOL; bLoad: BOOL; CTUD_0: CTUD; END_VAR CTUD_0( CU:= bUp, CD:= bDown, RESET:=bReset , LOAD:= bLoad, PV:= ,QU=> ,QD=> ,CV=> );   1-4. 数据处理指令 1-4-1-1. 二选一指令 SEL 功能:通过选择开关,在两个输入数据中选择一个作为输出,选择开关为 FALSE 时,输出为第一 个输入数据,选择开关为 TRUE 时,输出为第二个数据。 语法:其文本化语言语法格式如下: OUT := SEL(G, IN0, IN1) 参数 G 必须是布尔变量。如果 G 是 FALSE,则返回值的结果是 IN0,如果 G 是 TRUE,则返回值 的结果为 IN1。 例:创建一个 POU,当输入值 bInput 为 FALSE,输出为 3,反之,当其为 TRUE 时,输出为 4,具 体实现程序如下: VAR iVar1:INT:=3; iVar2:INT:=4; iOutVar: INT; bInput: BOOL; END_VAR iOutVar:=SEL(bInput,iVar1,iVar2); 程序运行后输出结果为 3。 1-4-1-2. 取最大值 MAX 功能:最大值函数。在多个输入数据中选择最大值作为输出。 语法:其文本化语言语法格式如下所示: OUT := MAX(IN0, …,INn) IN0,INn 以及 OUT 可以是任何数据类型。 创建一个 POU,iOutVar 的输入值为 iVar1 和 iVar2 中的较大者,具体实现程序如下: VAR iVar1:INT:=30; iVar2:INT:=60; iOutVar: INT; END_VAR iOutVar:=MAX(iVar1,iVar2); 程序运行后输出结果为 60。 1-4-1-3. 取最小值 MIN 功能:最小值函数。在多个输入数据中选择最小值作为输出。 语法:其文本化语言语法格式如下所示: OUT := MIN(IN0, …,INn) IN0,INn 以及 OUT 可以是任何数据类型。 例:创建一个 POU,iOutVar 的输入值为 iVar1 和 iVar2 中的较小者,具体实现程序如下: VAR iVar1:INT:=30; iVar2:INT:=60; iOutVar: INT; END_VAR iOutVar:=MIN(iVar1,iVar2); 程序运行后输出结果为 30。 1-4-1-4. 限制值 LIMIT 功能:限制值输出。判断输入数据是否在最小值和最大值之间,若输入数据在两者之间,则直接把 输入数据作为输出数据进行输出。若输入数据大于最大值,则把最大值作为输出值。若输入数据小于最 小值,则把最小值作为输出值。 语法:其文本化语言语法格式如下, OUT := LIMIT(Min, IN, Max) IN,Min,Max 以及返回值可以是任何数据类型。 例:创建一个 POU,使用限制值指令,无论输入为何值,确保输出值在能在 30~80 的范围内。具 体实现程序如下: VAR iVar:INT:=90; iOutVar: INT; END_VAR iOutVar:=limit(30,iVar,80); 最小值输入值为 30,最大值输入值为 80,实际输入值为 90,大于最大值,故最终输出以最大值 80 为输出,故最终结果为 80。 1-4-1-5. 多选一 MUX 功能:多路器操作。通过控制数在多个输入数据中选择一个作为输出。 语法:其文本化语言语法格式如下: OUT := MUX(K, IN0,...,INn) IN0,...,INn 以及返回值可以是任何变量类型。但是 K 必须为 BYTE、WORD、DWORD、LWORD、 SINT、USINT、INT、UINT、DINT、LINT、ULINT 或者 UDINT。MUX 从变量组中选择第 K 个数据输出。 例:创建一个 POU,使用多选一指令,根据输入控制数 iVar 选择最终要输出的数据。具体实现程 序如下: VAR iVar:INT:=1; iOutVar: INT; END_VAR iOutVar:=MUX(iVar,30,40,50,60,70,80); 最终输出结果为 40,因为数据排序是从第 0 个元素开始累积。 如果数据超出范围,最终数据按最后一个数据为输出,如例子中,将 iVar 的值设定为 10,最终的 输出结果为 80。如果 iVar 为-1,最终输出值还是为 80。    

标签:输出,定时器,PLCopen,INT,iVar1,Studio,VAR,XS,输入
From: https://www.cnblogs.com/longguan/p/17908507.html

相关文章

  • AndroidStudio设置密码可见不可见
    这里我们写一个在登录demo中常见的功能,当点击眼睛图片时,使密码可见或不可见,即形成一种保护,也防止了我们输入错误密码情况的出现,是很友好的一个功能。两张图片:睁眼:闭眼:大家记得复制粘贴到drawable.xml文件中。注意一下命名规则,推荐:see.png和nosee.png。然后,我们去写一下布局的代码:<L......
  • ml.net例子笔记2-概念和Widnows AI Studio
    一机器学习和ml.net1Python机器学习库在Python中,工具和库的生态系统可以分为五个主要领域:数据处理数据可视化数值计算模型训练神经网络这可能不全,因为此外还有其他许多的库,它们负责其他任务,并专注于机器学习的一些特定领域,比如自然语言处理和图像识别。使用Python......
  • 将开源免费进行到底,ThreadX开源电脑端GUIBuilder图形开发工具GUIX Studio
    上个月微软刚刚宣布将ThreadXRTOS全家桶贡献给Eclipse基金会,免费供大家商用,宽松的MIT授权方式,就差这个GUIXStudio没有开源了,而且Windows还经常检索不到,并且也不提供离线包。1、软件包有点大,700MB,直接分享到百度云了:链接:https://pan.baidu.com/s/1tS8IDWrIXGiCTbHxwxEkDA  提......
  • 界面组件DevExpress VCL v23.2新功能预览 - 支持RAD Studio 12.0
    本文即将发布DevExpressVCL 下一个主要更新(v23.2),在之前的文章中(点击这里回顾>>)我们为大家介绍了新的工具提示、图表空间中的标签重叠等,本文将主要介绍DevExpressVCLv23.2中将支持的RADStudio12.0、增强的图像选择器、字体和自定义图标包等。新版即将发布,敬请期待哦~获取De......
  • [THM]跨站点脚本(xss)
    XSS有效负载什么是有效载荷?在 XSS 中,有效负载是我们希望在目标计算机上执行的JavaScript代码。有效载荷分为两部分,意图和修改。目的是你希望JavaScript实际做什么(我们将在下面通过一些示例进行介绍),修改是我们需要对代码进行更改,以使其执行,因为每个场景都是不同的(在完善......
  • 使用Apache POI 导入导出时出现You need to call a different part of POI to process
    问题复现在学习导出功能时使用HSSFWorkbook导出了一个xxx.xlsx格式的文件,然后用XSSFWorkbook的读取方式来拿文件去导入时出现了这个bug这是当时做导出测试代码Workbookwb=newHSSFWorkbook();CreationHelpercreationHelper=wb.getCreationHelper();Sheetsheet=wb.cr......
  • [good]visual studio 2022 创建空的win32程序
    参考这个VS创建空的Win32程序-fenggwsx-博客园(cnblogs.com)   编译运行 ......
  • Visual Studio 好用的主题+字体推荐!!!
    Vs2022主题+字体VisualStudio(VS)是一款功能强大的集成开发环境(IDE),可以用于开发各种类型的应用程序,包括桌面应用、Web应用、移动应用等。它提供了许多主题设置和字体选项,以满足不同开发者对于界面外观和字VS主题与字体设置要设置VisualStudio的主题,可以按照以下步骤进行操作:......
  • DevEco Studio 鸿蒙(HarmonyOS)项目结构
    DevEcoStudio鸿蒙(HarmonyOS)项目结构一、操作环境操作系统: Windows10专业版IDE:DevEcoStudio3.1SDK:HarmonyOS3.1编辑二、项目结构创建简单的HelloWorld移动应用项目结构如下图编辑由上到下说明各个文件夹的作用.hvigor:存储构建配置文件信息。.idea:存储项目的配置信息。A......
  • 使用Visual Studio 2022 创建lib和dll并使用
    对于一个经常写javaWeb的人来说,使用VisualStudio似乎没什么必要,但是对于使用ffi的人来说,使用c或c++编译器,似乎是必不可少的,下面我将讲述如何用VisualStudio2022来创建lib和dll,并使用。静态库的创建并使用首先打开VisualStudio2022,点击创建新项目。选择静态库,然后点击下......