SIEMENS西门子 ET200S输入模块 6ES71344GB620AB0
运算符和运算符的优先级 运算符及其运算顺序 通过运算符可以将表达式连接在一起或相互嵌套。表达式的运算顺序取决于运算符的优先级和括号。基本原则如下所示: • 算术运算符优先于关系运算符,关系运算符优先于逻辑运算符。 • 同等优先级运算符的运算顺序则按照从左到右的顺序进行。 • 赋值运算的计算按照从右到左的顺序进行。 • 括号中的运算的优先级Zui高。 下表列出了运算符及其优先级的总览信息:
赋值运算 定义 可通过赋值运算,可以将一个表达式的值分配给一个变量。赋值表达式的左侧为变量,右侧 为表达式的值。 函数名称也可以作为表达式。赋值运算将调用该函数,并返回其函数值,赋给左侧的变量。 赋值运算的数据类型取决于左边变量的数据类型。右边表达式的数据类型必须与该数据类型 一致。STRUCT 数据类型或 PLC 数据类型的赋值运算 如果结构相同而且结构中成员的数据类型和名称也相同,则可以将整个结构分配给另一个结 构。 可以为单个结构元素分配一个变量、一个表达式或另一个结构元素。 ARRAY 数据类型的赋值运算 如果两者的 ARRAY 元素数据类型以及 ARRAY 限值都匹配,则可以将整个 ARRAY 分配给另一 个 ARRAY。 可以为单个 ARRAY 元素分配一个变量、一个表达式或另一个 ARRAY 元素。 STRING 数据类型的赋值运算 可将整个 STRING 赋值给另一个 STRING。WSTRING 数据类型的赋值 (S7-1200/1500) 可将整个 WSTRING 赋值给另一个 WSTRING。 可以为单个 WSTRING 元素分配另一个 WSTRING 元素。 ANY 数据类型的赋值运算 只能将 ANY 数据类型的变量赋值给以下对象: • 同样为 ANY 数据类型的 FB 的输入参数或临时本地数据。 • 同样为 ANY 数据类型的 FC 的临时本地数据。 请注意,使用 ANY 指针时,只能指向“标准”访问模式的存储区。 POINTER 数据类型的赋值运算 在 SCL 的赋值运算中不能使用 POINTER。 REF_TO 数据类型的赋值运算 引用可相互赋值,如同普通的变量。分配引用变量的地址,而不是其值。只有数据类型相同 的引用可以相互赋值,而不进行隐式数据类型转换。 引用 PLC 数据类型时,数据类型也必须相同。两种 PLC 数据类型如果只是结构相同,并不满 足要求。 工艺对象的引用需指向相同类型或派生类型的工艺对象。 此外,也可将引用赋值给 VARIANT。此时,必须将 VARIANT 声明为临时变量 (Temp)。 示例 下表举例说明了单赋值运算的操作:在 SCL 中使用浮点数(REAL 和 LREAL)进行计算 浮点数的精度表示 例如,数据类型 REAL 在程序中以 6 位小数的精度进行指定和计算。在计算浮点数(REAL 和 LREAL)时,请注意此精度通常应用于每个计算步骤。 在加减浮点数时,将会调整指数。 因此在加减过程中,基数和指数将保持不变,仅增加尾 数。 有关浮点数结构的详细信息,请参见“另请参见”。 编程示例 在以下编程示例中,将对两个 REAL 数量类型的操作数进行相加,然后再减去一个数。 在计 算的下一步中,用常量 1 除以前面的结果。 为执行此操作,创建一个全局数据块,在其中 声明用于进行计算编程的操作数和函数。2. 可能的解决方案 要计算上述公式,请使用 LREAL 数据类型来代替 REAL 数据类型。由于此数据类型是以 15 位 小数的精度进行处理,因此不会产生上述问题。 1. 在全局数据块“DB_GlobalData”中,使用相同的值创建三个全为 LREAL 数据类型的新变量。 2. 在 FC“FC_Calculate”的块接口中,另外声明两个 LREAL 数据类型的新变量。 3. 在程序代码中对公式使用新的 LREAL 变量并建立在线连接以查看结果:使用 SCL 中的常量进行计算 有类型和无类型常量的解释 常量是具有固定值的数据,其值在程序运行期间不能更改。常量在程序执行期间可由各种程 序元素读取,但不能被覆盖。常量值有指定的表示法,具体取决于数据类型和数据格式。分 为有类型和无类型的表示法。 建议在数学函数中不要混用有类型和无类型常量,否则可能会发生不需要的隐式转换,从而 导致生成不正确的值。 编程示例 在以下编程示例中,可以看到使用有类型和无类型常量的运算。 1. 创建一个 SCL 函数块并将其命名为“FB_MathsFunctions”。 2. 在块接口的“Temp”部分声明“Variable_DINT”变量。要查看结果,请转至在线。 1. 通过右键单击“编译 > 软件(仅更改)”(Compile > Software (only changes) 命令执行此命令 来编译 SCL 函数块“FB_MathsFunctions”。 2. 使用“下载到设备 > 软件(仅更改)”(Download to device > Software (only changes)) 命令 下载块。 3. 转至在线并监视块。 有类型常量的数据类型定义加法的数据类型。 这意味着加法是在 INT 数据类型区域中执行。 在第一步中,无类型常量 50000 将隐式转换为 INT 数据类型。 但这种转换会导致生成负值 (-15536)。 然后该值将添加到有类型常量 (INT#1)。 结果是 -15535。由于将写入加法运算结 果的变量被声明为 DINT 数据类型,因此数字 -15535 将隐式转换为 DINT 数据类型,并写入 到变量“Variable_DINT”。 但结果仍为负数。 1. 可能的解决方案 避免得到错误结果的一种方法是两个常量都采用有类型常量。 如果两个常量都采用有类型 常量,较长的数据类型将确定计算结果。 1. 在“FB_MathsFunctions”SCL 函数块中编写以下程序代码: 在此计算操作中,将有类型常量 INT#1 与有类型常量 DINT#50000 相加。 要查看结果,请转至在线。 1. 通过右键单击“编译 > 软件(仅更改)”(Compile > Software (only changes) 命令执行此命令 来编译 SCL 函数块“FB_MathsFunctions”。 2. 使用“下载到设备 > 软件(仅更改)”(Download to device > Software (only changes)) 命令 下载块。 3. 转至在线并监视块。 常量 INT#1 将转换为 DINT 数据类型,并且两个常量的相加将在 DINT 数据类型区域中执行。2. 可能的解决方案 避免得到错误结果的另一种方法是两个常量都采用无类型常量。 如果两个常量都采用无类 型常量,它们在当前 CPU 上将被解释为Zui宽的可能数据类型。这意味着在 S7-1500 系列 CPU 上,这两个常量都解释为 LINT 数据类型。 1. 在“FB_MathsFunctions”SCL 函数块中编写以下程序代码: 在此计算操作中,将无类型常量 1 与无类型常量 50000 相加。 要查看结果,请转至在线。 1. 通过右键单击“编译 > 软件(仅更改)”(Compile > Software (only changes) 命令执行此命令 来编译 SCL 函数块“FB_MathsFunctions”。 2. 使用“下载到设备 > 软件(仅更改)”(Download to device > Software (only changes)) 命令 下载块。 3. 转至在线并监视块。 常量 1 和 50000 将解释为 LINT 数据类型,相加的结果将再次转换为 DINT 数据类型。编辑器设置 组 设置 说明 视图 操作数表示法 程序编辑器中操作数的表示方式。可选择以下方式: • 符号和juedui表示法 • 符号 变量信息 在程序编辑器中显示所用变量的更多信息。选择“具有 层级注释的变量信息”(Tag information with hierarchical comments) 选项时,还将显示结构化变量的更高结构层 次的注释。 高亮显示关键字 SCL 编程语言中表示关键字的标记。可以选择使用大小 写字母或者与 Pascal 编程语言规定相应的表示法。 左对齐实参 将块调用中的实参左对齐。仅当在“常规 > 脚本/文本编 辑器 > 缩进”(General > Script/text editors > Indent) 中选 择“智能”(Smart) 选项时,才有效。 新块的默认设置 如果创建新块,则按下列默认值进行设置。以后可在块属性中修改这些设置。 组 设置 说明 编译 创建扩展状态信息 可以监视块中的所有变量。但是,使用此选项后,对程 序的存储器的要求以及执行时间都会增加。 检查 ARRAY 的限值 1) 在运行期间检查数组下标是否在 ARRAY 声明的范围之 内。如果数组的下标超出了所允许的范围,则将块的使 能输出 ENO 置位为“0”。 自动设置 ENO 在运行期间检查某些指令是否在执行过程中出错。如果 发生运行时错误,则块的使能输出 ENO 将置位为“0”。 块接口 视图 定义新创建块的块接口显示为表格形式,还是文本形式。 1)S7-300/400 系列 CPU:超出 ARRAY 限值时,使能输出 ENO 将置位为 FALSE。 S7-1200/1500 系列 CPU:超出 ARRAY 限值时,使能输出 ENO 不会置位为 FALSE。有关错误查询选项,请参见 “寻址 ARRAY 元素 ”。改设置 步骤 要更改设置,请执行如下操作: 1. 在“选项”菜单中,选择“设置”命令。 将在工作区中显示“设置”窗口。 2. 在区域导航中,选择“PLC 编程”组。 3. 更改设置。 结果 可直接装载设置更改,无需显式保存。编程窗口由下列部分组成: 部分 含义 ① 侧栏 在侧栏中可以设置书签和断点。 ② 行号 行号显示在程序代码的左侧。 ③ 轮廓视图 轮廓视图中将突出显示相应的代码部分。 ④ 代码区 在代码区域,可对 SCL 程序进行编辑。 ⑤ juedui操作数的显示 在此表格中列出了赋值给juedui地址的符号操作数。