西门子博途SCL语言学习——IF指令、CASE OF指令

发布时间:2024-10-16 20:15:48  

一、IF(条件执行)指令

1.第一种表达式---IF分支

IF "Tag_1" THEN
“Tag_2” := 3*3;
END_IF;

干货★★★★★资料

图片

使用博途仿真运行,程序运行效果图如图1、图2所示:

图片


图1 条件不成立

图片


图2 条件成立
程序说明: 如果条件“Tag_1”为1,那么执行计算指令“3 * 3 ”,将运算结果9赋值给“Tag_2”;如果条件“Tag_1”为0,那么程序将从 END_IF 后的下一条指令开始继续执行。

2.第二种表达式---IF 和 ELSE 分支

IF "Tag_3 " >= 10 AND "Tag_3 " < 15 THEN
“Tag_4” := 10 / 2 ;
ELSE
“Tag_4” := "Tag_3 " ;
END_IF;
使用博途仿真运行,程序运行效果图如图3、图4所示:

图片


图3 条件不成立

图片


图4 条件成立
程序说明: 如果条件"Tag_3" >= 10 AND "Tag_3"成立,那么执行计算指令“10/2”,将运算结果5赋值给“Tag_4”;如果条件"Tag_3" >= 10 AND "Tag_3"不成立,那么程序将执行 ELSE 后编写的指令,将"Tag_3" 赋值给“Tag_4”。

3.第三种表达式---IF、ELSIF 和 ELSE 分支

IF ("Tag_5" > "Tag_6") AND "Tag_6" <> 0 THEN
“Tag_7” := 10 - 2 ;
ELSIF "Tag_6" > "Tag_5" THEN
“Tag_7” := 10 ** 2 ;
ELSE
“Tag_7” := 2 * 3 + 5 ;
END_IF;
使用博途仿真运行,程序运行效果图如图5、图6、图7所示:

图片


图5 ("Tag_5" > "Tag_6") AND "Tag_6" <> 0条件成立

图片


图6 "Tag_6" > "Tag_5"条件成立

图片


图7 条件全部不成立
程序说明: 如果条件("Tag_5" > "Tag_6") AND "Tag_6" <> 0成立,那么执行计算指令“10 -2”,将运算结果8赋值给“Tag_7”,执行完本条指令后,程序将从“END_IF”后继续执行;如果条件("Tag_5" > "Tag_6") AND "Tag_6" <> 0不成立,那么将执行第二个条件,即“ELSIF”后的条件,如果条件"Tag_6" > "Tag_5"成立,那么执行计算指令“10 ** 2”(10的平方),将计算结果100赋值给“Tag_7”,执行完本条指令后,程序将从“END_IF”后继续执行;如果("Tag_5" > "Tag_6") AND "Tag_6" <> 0与"Tag_6" > "Tag_5"条件全部不成立,那么将执行“ELSE”后的指令,那么执行计算指令“2 * 3 + 5”,将计算结果11赋值给“Tag_7”,再执行 END_IF 后的程序部分。
在 IF 指令内可以嵌套任意多个 ELSIF 和 THEN 组合。可以选择对 ELSE 分支进行编程。
注:Tag_1如果是开关量可以不用表达出“=”“<”“>”等条件(因为开关量非0即1),如果是模拟量则需要进行条件设定。本文章仅供参考,具体情况还需根据实际工艺需求进行程序编写。

二、CASE OF(创建多路分支)指令

使用“创建多路分支”指令,可以根据数字表达式的值执行多个指令序列中的一个。 表达式的值必须为整数 。执行该指令时,会将表达式的值与多个常数的值进行比较。如果表达式的值等于某个常数的值,则将执行紧跟在该常数后编写的指令。其中常数值可以为以下值:
a.整数(例如,5)
b.整数范围(例如,15 到20 ,表达方式为 15..20)
c.由整数和范围组成的枚举(例如,10、11、21 到 25,表达方式为10,11,21..25)
CASE “Tag_8” OF
5:
”Tag_9” := 2;
10,11:
”Tag_9” := 3;
15...20:
”Tag_9” := 4;
25,27,29...32:
”Tag_9” := 5;
ELSE
”Tag_9” := 6;
END_CASE;
使用博途仿真运行,程序运行效果图如图8、图9、图10、图11、图12所示:

图片


图8“Tag_8”为5时

图片


图9“Tag_8”为11时

图片


图10“Tag_8”为18时

图片


图11“Tag_8”为29时

图片


图12“Tag_8”为0时
程序说明: 如果表达式“Tag_8”的值为5,那么程序将执行指令,将常数“2”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_8”的值为0或11,那么程序将执行指令,将常数“3”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_1”的值为15到20中的任意一个整数,那么程序将执行指令,将常数“4”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_9”的值为25或27或29到32中的任意一个整数,那么程序将执行指令,将常数“5”赋值给“Tag_9”,程序将从 END_CASE 后继续执行;如果表达式“Tag_9”的值不是以上条件内任何一个整数,那么程序将执行ELSE后的指令,将常数“6”赋值给“Tag_9”。
注:CASE 指令也可通过使用 CASE 替换一个指令块来进行嵌套。END_CASE 表示 CASE 指令结束。ELSE 是一个可选的语法部分,可以省略。

图片


博途仿真程序图
不足之处还望海涵,请多多指教。
图片
进入大家庭 圈  回复: 交流

往期精彩回顾

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>