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

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

3天内不再提示

浅析SCL语句的赋值

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-08-04 09:42 次阅读

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

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

f628ecee-3206-11ee-9e74-dac502259ad0.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




审核编辑:刘清

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

    关注

    0

    文章

    37

    浏览量

    11120
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    16884
  • Struct
    +关注

    关注

    0

    文章

    29

    浏览量

    10817

原文标题:SCL 语句的赋值

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

收藏 人收藏

    评论

    相关推荐

    炼狱传奇-赋值语句之战

    Verilog HDL语言中存在两种赋值语言:● 非阻塞型赋值语句● 阻塞型赋值语句1. 非阻塞型语句
    发表于 03-22 10:23

    Verilog过程赋值语句提问

    `在书上看到的,讲解阻塞型赋值语句时,举了一个例子说的是,本想采用触发器的方式,设计一个延时来使得dreg的输出比areg慢3个时钟节拍,但是结果是dreg的输出只比areg慢一个时钟节拍输出程序
    发表于 09-20 15:10

    【梦翼师兄今日分享】 赋值语句的运用

    立即学习>>梦翼师兄FPGA培训(纯视频),手把手带你入门FPGA写在前面的话开发过程中,我们用的最多的恐怕就是赋值语句了,我们常用的赋值方式有两种:阻塞赋值和非阻塞
    发表于 12-22 14:21

    FPGA视频教程之Verilog中两种不同的赋值语句的资料说明

    本文档的主要内容详细介绍的是FPGA视频教程之Verilog中两种不同的赋值语句的资料说明免费下载。
    发表于 03-27 10:55 6次下载
    FPGA视频教程之Verilog中两种不同的<b class='flag-5'>赋值</b><b class='flag-5'>语句</b>的资料说明

    verilog中阻塞赋值和非阻塞赋值到底有什么区别

    1、阻塞赋值操作符用等号(即 = )表示。“阻塞”是指在进程语句(initial和always)中,当前的赋值语句阻断了其后的语句,也就是说
    发表于 04-25 08:00 0次下载
    verilog中阻塞<b class='flag-5'>赋值</b>和非阻塞<b class='flag-5'>赋值</b>到底有什么区别

    Verilog中的赋值语句的区别

    连续赋值语句总是处于激活状态。只要任意一个操作数发生变化,表达式就会被立即重新计算,并且将结果赋给等号左边的线网。
    的头像 发表于 11-26 10:04 3166次阅读
    Verilog中的<b class='flag-5'>赋值</b><b class='flag-5'>语句</b>的区别

    Verilog HDL语言中连续赋值的特征

    数据流模型化 本章讲述Verilog HDL语言中连续赋值的特征。连续赋值用于数据流行为建模;相反,过程赋值用于(下章的主题)顺序行为建模。组合逻辑电路的行为最好使用连续赋值
    的头像 发表于 03-05 15:38 3756次阅读
    Verilog HDL语言中连续<b class='flag-5'>赋值</b>的特征

    详解SCL语句如何赋值

    当一个值被指定,变量的当前值被通过表达式指定的新的值代替。此表达式也能够包含函数标识符,其被语句激活,然后返回相应的值(返回值)。
    的头像 发表于 04-16 09:43 1w次阅读
    详解<b class='flag-5'>SCL</b><b class='flag-5'>语句</b>如何<b class='flag-5'>赋值</b>

    简述Verilog HDL中阻塞语句和非阻塞语句的区别

      在Verilog中有两种类型的赋值语句:阻塞赋值语句(“=”)和非阻塞赋值语句(“=”)。正
    的头像 发表于 12-02 18:24 5137次阅读
    简述Verilog HDL中阻塞<b class='flag-5'>语句</b>和非阻塞<b class='flag-5'>语句</b>的区别

    Verilog赋值和结构说明语句

    从仿真结果可以看出:在顺序块中,15ns的时候,l1被赋值为8’h2,在25ns的时候,l2被赋值为8’h8;而在并行块中,10ns的时候,k2被赋值为8’h8,在15ns的时候,k1被赋值
    的头像 发表于 03-15 11:51 1557次阅读

    verilog中阻塞赋值和非阻塞赋值的区别

    阻塞赋值操作符用等号(即 = )表示。“阻塞”是指在进程语句(initial和always)中,当前的赋值语句阻断了其后的语句,也就是说后面
    发表于 12-19 16:49 5229次阅读

    Python变量和简单赋值语句

    1. 变量的声明和赋值 变量的声明和赋值:用于将一个变量绑定到一个对象上,格式: 变量 名 = 表达式 注意: 同Java一样, 变量在使用前必须先被初始化(先被赋值)! 最简单的表达式就是字面
    的头像 发表于 03-05 17:11 1039次阅读
    Python变量和简单<b class='flag-5'>赋值</b><b class='flag-5'>语句</b>

    博途中SCL赋值运算

    可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧为表达式的值。
    的头像 发表于 06-19 10:57 4233次阅读

    oracle sql 定义变量并赋值

    赋值可以通过使用PL/SQL语句块或使用SQL*Plus工具来实现。下面将详细介绍这两种方法以及它们的具体用法。 使用PL/SQL语句块定义和赋值变量: 在Oracle SQL中,P
    的头像 发表于 12-06 10:46 736次阅读

    assign语句和always语句的用法

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