0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解SCL语句如何赋值

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2021-04-16 09:43 次阅读

当一个值被指定,变量的当前值被通过表达式指定的新的值代替。此表达式也能够包含函数标识符,其被语句激活,然后返回相应的值(返回值)。

如下图所示,在赋值符右边的表达式被求值,且得到的值作为结果设定给其名字写在赋值符左边的变量。函数允许的变量如下图所示:

8bddf868-9e40-11eb-8b86-12bb97331649.png

能够将同类型的不同变量指定给基本数据类型的每个变量和每个表达式。

例子(Example)

FUNCTION_BLOCK FB12

VAR 声明变量类型

SWITCH_1 : INT ; 整数

SWITCH_2 : INT ;

SETPOINT_1 : REAL ;浮点数

SETPOINT_2 : REAL ;

QUERY_1 : BOOL ; 位

TIME_1 : S5TIME ;时间计时器

TIME_2 : TIME ;时间

DATE_1 : DATE ;日期

TIMEOFDAY_1 : TIME_OF_DAY ;时间和日期

END_VAR

BEGIN

// 给变量赋予常量值

SWITCH_1 := -17 ;

SETPOINT_1 := 100.1 ;

QUERY_1 := TRUE ;

TIME_1 := T#1H_20M_10S_30MS ;

TIME_2 := T#2D_1H_20M_10S_30MS ;

DATE_1 := D#1996-01-10 ;

// 给变量赋予变量值

SETPOINT_1 := SETPOINT_2 ;

SWITCH_2 := SWITCH_1 ;

// 给变量赋予表达式

SWITCH_2 := SWITCH_1 * 3 ;

END_FUNCTION_BLOCK

STRUCT和UDT类型变量的赋值

STRUCT和UDT类型变量是表示一个完整结构或一个结构元素的结构化变量。

下面是有效结构变量的例子:

Image //结构的标识符

Image.element //结构元素的标识符

Image.arr //在一个结构中的一维数组标识符

Image.arr[2,5] //在一个结构中的数组元素的标识符

赋值一个完整结构

一个完整结构只能赋值给另一个完整结构,两个结构内部的名称和数据类型应完全匹配。下面的赋值是有效的:

structname_1 := structname_2 ;

赋值结构元素

能够将一个同类型变量、同类型表达式或另一个结构部件赋值给任何结构元素。

能够通过说明结构的标识符来引用结构元素,结构元素的标识符用一个句点分开。下面的赋值是有效的:

structname_1.element1 := Value ;

structname_1.element1 := 20.0 ;

structname_1.element1 := structname_2.element1 ;

structname_1.arrname1 := structname_2.arrname2 ;

structname_1.arrname[10] := 100 ;

例子:

FUNCTION_BLOCK FB3

VAR

AUXVAR : REAL ;

MEASVAL : STRUCT //目标结构

VOLTAGE :REAL ;

RESISTANCE :REAL ;

SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;

END_STRUCT ;

PROCVAL : STRUCT //源结构

VOLTAGE : REAL ;

RESISTANCE : REAL ;

SIMPLEARR : ARRAY [1..2, 1..2] OF INT ;

END_STRUCT ;

END_VAR

BEGIN

//赋值给一个完整结构

MEASVAL := PROCVAL ;

//赋值给地个结构元素

MEASVAL.VOLTAGE := PROCVAL.VOLTAGE ;

//将一个结构元素赋值给同类型变量

AUXVAR := PROCVAL.RESISTANCE ;

//将一个常量赋值给结构元素

MEASVAL.RESISTANCE := 4.5;

//将一个常量赋值给一维数组元素

MEASVAL.SIMPLEARR[1,2] := 4;

END_FUNCTION_BLOCK
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    17111

原文标题:SCL 语句的赋值

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用TLV5625在主函数里面的FOR循环中对两通道赋值,一个通道不能更新数据是怎么回事?

    问题:我在使用TLV5625时出现如下问题,在主函数里面的FOR循环中对两通道赋值,2通道DA可以正常更新输出,但是同样的语句放到定时器中断中,只有一个通道正常,另一个通道不能更新数据,请指教
    发表于 01-08 08:23

    数组名之间可以直接赋值

    数组之间的赋值能不能直接使用等于号?比如这样的代码。 int main(){ int a[5] = {1, 2, 3, 4, 5}; int b[5] = {0}; b = a
    的头像 发表于 11-26 11:23 170次阅读

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识。
    的头像 发表于 10-24 15:00 480次阅读
    Verilog HDL的基础知识

    CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?

    正在使用芯片:CY8C4025LQI,主要使用Capsense和EZI2C功能,其中引脚P0.4(SCL)和P0.5(SDA)用于I2C通信,并且P0.4需要加入SCL总线下拉功能来唤醒别的模块
    发表于 05-31 07:39

    鸿蒙TypeScript入门学习第6天:【条件语句

    条件语句用于基于不同的条件来执行不同的动作。 TypeScript 条件语句是通过一条或多条语句的执行结果(True 或 False)来决定执行的代码块。
    的头像 发表于 04-01 13:51 772次阅读
    鸿蒙TypeScript入门学习第6天:【条件<b class='flag-5'>语句</b>】

    为什么指针之间不要随意赋值呢?

    指针之间也不能随意赋值
    的头像 发表于 03-28 17:13 714次阅读
    为什么指针之间不要随意<b class='flag-5'>赋值</b>呢?

    mapgis如何给区属性赋值

    MapGIS是一款功能强大的地理信息系统软件,它提供了丰富的功能和工具,使用户能够对地理数据进行快速、高效的管理和分析。其中一个重要的功能就是给区属性赋值,即对地图中的区域进行分类和标记,以便更好
    的头像 发表于 02-23 17:49 2329次阅读

    proteus属性赋值工具怎么用

    Proteus是一种电路设计和仿真软件,在进行电路设计和仿真时,属性赋值是非常重要的步骤。属性赋值工具可以帮助用户快速有效地配置电路元件的属性,从而实现电路的准确仿真。下面是关于Proteus属性
    的头像 发表于 02-23 17:19 4743次阅读

    assign语句和always语句的用法

    Assign语句和Always语句是在硬件描述语言(HDL)中常用的两种语句,用于对数字电路建模和设计。Assign语句用于连续赋值,而Al
    的头像 发表于 02-22 16:24 2647次阅读

    verilog同步和异步的区别 verilog阻塞赋值和非阻塞赋值的区别

    Verilog是一种硬件描述语言,用于设计和模拟数字电路。在Verilog中,同步和异步是用来描述数据传输和信号处理的两种不同方式,而阻塞赋值和非阻塞赋值是两种不同的赋值方式。本文将详细解释
    的头像 发表于 02-22 15:33 1769次阅读

    为什么TC397对外设赋值这么慢?

    现在遇到了一个问题,再给GTM.ATOMX.CHX的SR0或SR1赋值时一句赋值语句的周期要130ns左右,相当于几十个指令周期;而TI的DSP芯片对相应PWM寄存器赋值一条
    发表于 02-05 09:05

    西门子SCL PLC高级编程教程

    借助SCL,可以简化控制技术领域复杂的计算、算法、数据管理和数据组织等编程工作。
    发表于 01-22 10:27 744次阅读
    西门子<b class='flag-5'>SCL</b> PLC高级编程教程

    深入探讨嵌入式C编程的goto语句

    什么是goto语句? goto 语句被称为 C 语言中的跳转语句。 用于无条件跳转到其他标签。它将控制权转移到程序的其他部分。 goto 语句一般很少使用,因为它使程
    发表于 01-21 10:41 622次阅读
    深入探讨嵌入式C编程的goto<b class='flag-5'>语句</b>

    西门子博途中的LAD、FBD与SCL编程

    选择要在其后插入新程序段的程序段。 在快捷菜单中,选择命令“插入 STL 程序段”(Insert STL network) 或“插入 SCL 程序段” (Insert SCL network)。
    发表于 01-16 09:33 3008次阅读
    西门子博途中的LAD、FBD与<b class='flag-5'>SCL</b>编程

    M0 PORT如何给端口整体赋值

    如题所示,如何给端口整体赋值;例如51中端口赋值方式,P2 = 0x55,谢谢!
    发表于 01-16 07:10