课程中心
HOME
课程中心
正文内容
plc编程阶乘 PLC结构化文本编程入门(四)
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC结构化文本编程入门(四)

第六章 ST语言的其他语句介绍

1.CASE语句

CASE语句是选择语句的一种。在CASE语句中,控制变量与几个值作比较,如果表达式的结果与其中一个值相同,那么就执行相应的语句;如果表达式的结果与任何一个值都不相同,那么就执行ELSE后面的程序:“表达式” 可以是一个表达式或者变量, 其数据类型必须为整数(如INT)

CASE 表达式 OF

数值1:

语句1;

数值2:

语句2;

数值3:

语句3;

。。。。

ELSE

语句4;

END_CASE;

流程图如下图所示:

CASE语句中,可对执行相同语句的分支进行简写;

例如数值3和数值4均是执行语句3,数值5到数值6之间的值均是执行语句组4

CASE 表达式 OF

数值1:

语句组1;

数值2:

语句组2;

数值3,数值4:

语句组3;

数值5 .. 数值6:

语句组4;

......

ELSE

语句5;

END_CASE;

举例:

CASE 考试名次 OF

1: //第一名,获特等奖,奖学金10000

获奖等级:=‘特等奖’;

奖金:=10000;

2: //第二名,获一等奖,奖学金8000

获奖等级:=‘一等奖’;

奖金:=8000;

3, 4: //第三、四名,获二等奖,奖学金5000

获奖等级:=‘二等奖’;

奖金:=5000;

5 .. 10: //第五至第十名,获三等奖,奖学金1000

获奖等级:=‘三等奖’;

奖金:=1000;

ELSE //第十一名及以后,无获奖,无奖学金

获奖等级:=‘无’;

奖金:=0;

END_CASE;

其实case也可以用IF来写,但用CASE会来得更加简洁易读。

2.循环语句

循环语句也称为迭代语句,它重复执行操作直到满足某个条件才结束循环。

循环语句有FOR、 WHILE、 RAPEAT:

循环语句

1)FOR语句

按指定的循环次数循环执行。

应用场合:如果预先可以确定循环次数,则适合采用FOR循环语句。

FOR 控制变量:=初值表达式 TO 终值表达式 BY 增值表达式 DO

语句组;

END_FOR;

FOR循环语句格式中,控制变量是在循环过程中不断变化的变量,在每次循环执行后,该变量的的值增加增量表达式所计算的值,即控制变量:=控制变量+增量表达式。

初值表达式是控制变量起始值,终值表达式是控制变量终止值,增值表达式是控制变量的每次增量。每次循环执行后控制变量的值变化,如果其值没有超过终止值,则继续执行循环,反之,

如果超过终止值或执行过程中执行到EXIT语句,则循环执行终止。

控制变量的初值、终止值和增量的数据类型应一致且为整数类型(如SINT、 INT)。

控制变量的初值和终止值,在执行过程中只计算一次。

控制变量起始值和增量在不指定的情况为1,也即是FOR语句可简化写成:

FOR 控制变量 TO 终值表达式 DO

语句组;

END_FOR;

2)WHILE语句

先判断表达式条件是否为真(满足),如果为真才执行循环有关语句,反之则不执行。

应用场合:循环次数不确定,且需要先判断条件再确定是否执行。

WHILE循环WHILE 条件表达式 DO

语句组;

END_WHILE;

WHILE循环语句格式中,条件表达式的结果必须是BOOL型。

范例: 计算1到100的累加和SUM和阶乘Factorial:

变量1 := 0;

SUM:=0;

Factorial:=0; //参数初始化

WHILE 变量1 < 100 DO

变量1 :=变量1 +1; //变量1从1~100变化

SUM :=SUM + 变量1; //计算累加

Factorial := Factorial * 变量1; //计算阶乘

END_WHILE;

3)REPEAT语句

REPEAT语句先执行循环有关语句,再判断条件表达式条件是否为真(满足),如果为真则结束循环,反之如果为假,则执行循环有关语句。

应用场合:循环次数不确定,且需要先执行,再判断条件。

REPEAT循环语句格式中,条件表达式的结果必须是BOOL型。

REPEAT

语句组;

UNTIL 条件表达式

END_REPEAT;

范例: 计算1到100的累加和SUM和阶乘Factorial:

变量1 := 0;

SUM:=0;

Factorial:=0; //参数初始化

REPEAT

变量1 := 变量1 +1; //变量1从1~100变化

SUM := SUM + 变量1; //计算累加

Factorial := Factorial * 变量1; //计算阶乘

UNTIL 变量1 = 100 //当变量1=100时,结束循环

END_REPEAT;

注意:除了for不会出现死循环外,repeat,while都会出现死循环。所以使用循环语句时要注意,防止出现死循环,导致看门狗报警。还有for循环嵌套不宜太多,不然也会导致看门狗报警。

3.EXIT语句

EXIT语句通常在执行循环有关语句的过程中立即中断循环语句的执行。

当EXIT位于嵌套循环语句内时,其执行时,其所在的循环回路立即中断,但更外层的循环不受其影响。

A3 := 0;

FOR A1:=1 TO 100 BY 1 DO

FOR A2:=1 TO 100 BY 1 DO

IF A2=50 THEN

EXIT; //当A2的值=50时,跳出循环。

END_IF;

END_FOR;

A3 := A3+1;

END_FOR;

程序执行完后,变量A2的值为50,变量A3的值为101。

4.跳转语句

GOTO语句用于无条件跳转到使用跳转标号标记的代码行, 仅限于在其所在POU中跳转。

GOTO语法格式如下:

<label名称1>:

语句1;

……

<label名称2>:

语句n+1;

……

GOTO <目标label名称>;

语句m+1;

……

<label名称3>:

语句p+1;

……

“label名称”可以是任意的字符串,但同一个POU中不能重复, 它必须放在程序行的开始(程序行最左端)。

GOTO指令后面一定紧跟<目标label名称>,当程序执行到GOTO指令时,将自动跳转到<目标label名称>所在程序行,并从那一行继续执行程序。

由于GOTO语句本身是无条件执行的,为了避免死循环,建议将GOTO语句置于条件语句中通过条件选择语句控制GOTO语句的执行。

5.注释:

注释是对程序内部进行标注说明的内容;

详细的注释可方便维护人员对程序进行维护,也方便编写程序人员之后更改程序, 所以经常需要在程序中适当地书写注释。

注释内容不是执行程序,编译时,不会编译注释内容;

单行注释:以“//” 开始,表示“//” 之后到这一行结束都是注释内容;

区段注释:使用“(*” 和“*)” 括起来的内容就是注释。这种方法进行注释时不能嵌套注释。

该如何学习单片机

一、前言

很多单片机初学者与我交流时总说的一句话是我现在是单片机初学者,我怎样才能更快的学好单片机,我该从哪方便入手。对于这个问题,现在就我自己如何学单片机,如何入门,如何熟练谈谈想法。

先说单片机,现在用的比较多的以 51为内核的 8 位单片机(考虑到成本及引脚资源在实际开发中用的 51单片机型号不一),它的学习资料非常多,且学习成本非 常低,可能有些初学者会说企业里用的不是 51单片机,更多的是松翰、义隆什么,但是我想说的是那些单片机的辅助开发工具你有吗。51单片机对于智能电子技 术的入门学习是非常有优势,成本低,开发简单,一线下载程序,ARM太神秘,PLC太高贵,想来想去还是 51,曾经有过AVR和PIC,但是现在 51也不 赖。

那怎样才能更快更好的学好单片机呢?

单片机作为集电子技术与计算机编程技术为一体是一项非常重视动手实践的科目,如果你是单片机高手,那么说明你也是计算机编程和电子技术高手。

二、学习单片机一定要看书

不能总是看书,但是学习它首先必须得看书,那这不很矛盾?因为从书中你需要了解单片机各个功能寄存器(比如引脚控制寄存器、定时、中断、串口相关寄存 器),控制单片机的核心是用程序去控制单片机的各个功能寄存器,给寄存器赋值二进制数据 0或者 1,对于像中断、定时器、串口、AD转换等内部资源寄存器, 单片机也可以通过二进制数据 0 和 1进行设置和使用。比如单片机引脚寄存器P1,语句P1=0xfe;(MOV P1,#0FEH)指控制单片机P1口的第 一个引脚输出低电平,其他引脚输出高电平, 外设电路根据高低电平工作。比如中断允许寄存器IE, 语句IE=0x(MOV IE,#81H) 则说明 控制中断打开总81;开关和外部中断 0 的子开关。当然了,单片机的寄存器还可以接受位控制,这样编程更方便。

至于看书,只需大概了解单片机各管脚、各个功能寄存器是干什么的能实现什么功能就够了?这个非常重要,这也许是看单片机参考书最主要目的之一。

第一次,第二次你可能看不明白,但这不要紧,因为还缺少实际的感观认识。通过接下来的实验就可以非常感观的认识,在这个过程一定要花时间,学习程序不能硬背,但是学习寄存器一定要下功夫,理解他的功能所在,适当的时候当单词背下来。

推荐一本书,就这一本就足够了,书名是《列说 8051》,有汇编语言和C语言两种版本,现在已经是第三版本了。非常强悍的一本书,没有广告,没有局限,不 像培训手册,更不像教科书,完全是一本非常好的参考书。我用一个五一假期的时间看完了这本书,真的当时看完后,觉得自己已经是单片机高手了,很多曾经抽象 的知识不在抽象。书中图文并茂,内容安排紧张有序,并非市面上很多说教的技术文档式的书,什么学完概念,学指令,学完指令学接口,学完接口才知道,原来学 习单片机像在学天书,因为前面的章节已经使你头昏脑胀了,自己看还好,一讲更有问题。

那如何看书呢?第一步先根据书本的安排循序渐进的看完前两章,在你脑子开始发热,觉得自己已经是工程师的时候,接下来一定是实践,一定是实践啊,这是非常 非常关键的,当然了实践并非一定是左手电烙铁右手万能板的那种,也可以是仿真软件 Proteus,或者是自己自己电路原理路的简单单片机实验板(千万不要 用那种有贴片器件很多,看半天看不清电路连接的那种)。三国期间,诸葛亮挥泪斩马谡的重典告诉我们纸上谈兵害人害己,学习单片机也一样,很多相关专业的研 究生甚至博士生直到毕业都不清楚单片机的 IO 口的分布,不知分布谈何开发。

只要过了第一关,后面的路就好走,万事起步难啊。

第二:你身边如果有单片机入门者,动手能力比较强,请他帮忙,搭个简单的单片机最小电路,哪怕是控制一个LED闪烁的电路。只要在你眼皮底下经过电路设 计、程序编写、程序下载都通过了,那你就要感谢他一辈子,因为你已经在入门了。对于他们来说,做个单片机的最小系统板是轻而易举,而对于初学者可就难多, 中间的一层窗户纸破了什么都简单了。因为在这个过程中,你学会了如何下载程序到单片机内部,如何识别单片机,如何设计单片机最小电路。为什么有很多电子和 计算机专业的学生不好找工作,因为他们中很多同学在将自己简历设计的眉飞色舞的时候,他还没有见过单片机单片机。

因为只有对硬件了解,才能熟练运用。只有知道程序是如何被下载的,才会清楚为什么要写单片机控制程序,这个动力来自于哪里,来至于心里有底。

单片机编程就是与单片机对话,如果不知道对方谁,有没有再听,你还会有说话的冲动吗。当然了如果没有这样的人,还是那句话,在网上多找几个最小电路电路原 理图,在面包板上焊接就可以了。当然了这个也不会的,那建议你一定要买一块功能简单的实验板,以后单片机的学习实及项目测试验都用的上。

四、如何迈入单片机开发世界

有了单片机实验板你就要多练习,最好是自己有台电脑,少下载几部电影,少网络游戏,把实验板和电脑连好,安装上必备的软件 (Keil Proteus STCisp),下载参考程序,并修改参考程序,从最简单的交通灯实验开始,等你发现你能控制交通灯,并了解交通的软硬设计 的时其实你已经入门了,你会发现单片机是多么迷人的东西啊,这不是在学习知识,而是在提升自身的价值。

用途那么广的交通设计都不在话下,你还会为自己身无绝技而烦扰吗?还会觉得自己什么都不会吗?计算机编程、电子技术的专业知识都用上了啊。

当你编写的程序按你的意愿实现时,比做什么事都开心,那种学习的收获感和成就感还有充实感是非常难得的。然后让数码管亮起来显示你所需要的数字,都到这一步,你已经不能自拔了,你已经开始考虑你这辈子要走哪一行了。

入门入门,什么才叫入门,要对得起自己啊。

我的要求很简单,单片机是否入门只有三点:

1、独立掌握 Keil+Proteus 两大软件的使用方法并设计出仿真版的交通灯。

2、独立在面包板上搭接单片机最小电路,并通过下载器将控制一个 LED闪烁的 HEX 文件下

载进去看到效果。

3、清楚自己单片机学的动力所在,并为自己的学习做一个规划。

但是在写程序的时候你肯定会遇到很多问题,而这时你再去翻书找,这其中你会找你之前学过的编程的书,还有数电模电的书,你会发现原来之前学的知识还是有用 的。遇到不懂再去找以前学过的书本查阅,这才是 “温故而知新,可以为师矣”的大道理啊。知识必须用于现实生活中,解决实际问题,用单片机设计个简易的家 电定时器、红外遥控器什么,这样才能发挥它的作用,好好想想,上了这么多年大学,探索了那么久,犹豫徘徊,天天上课,在课堂上学到了什么?、

是不是为了期末 60分的考试而忙碌,侥幸靠了 90分,很高兴啊,在别人面前吹自己专业知识如何如何学习的好,殊不知,大学考试不像高中考试啊,拿到奖学金 又怎么样。下学期开学回来一想,所学的知识已经忘得一干二净。学到什么了?为什么要推荐学习单片机,因为单片机是工科生学的,集合计算机编程电子技术及多 门控制语言为一体的学科,与其说是在学习单片机,不如说是在学习一个大学科。

五、学习单片机是汇编编程还是 C语言编程

关于用汇编和 C语言编程的问题。

这个问题困恼很多人,但是我觉得学习汇编语言和 C语言就像一个人进入社会要学习方言和普通话一样。都要掌握,孰重孰轻自己把握。可能主要是学校教学和部分 教材引导,大一开了 C语言编程,没等学生知道到底 C语言有什么实际用途,马上其他的语言一下子过来了。即使开设了专门单片机课程,但是课程的内容与技术文 档很相识,程序虽然很多,但完整的不多,所以学完了也不知道,到底为什么要学习编程。

很多同学大一就开设了 C语言的课,我也上过,但是那时就是天天几乘几,几加几啊,求个阶乘啊,用 C语言去解决小学数学问题,每周两次上机,对着书本不停的敲打,完全在练习打字速度。下课了也不知道自己到底掌握了什么,掌握了这个有什么用途。学完了有什么用?

如果在面试的时候,老板问,你学过编程吗,你脑子里马上是什么“C语言,VC什么 VB。很多,什么 C语言是基础是面向工程的,什么 VC是高级面向对象 的”,但是老板又问,你能将你所学习的 C语言应用到实际开发中,比如设计一个定时报警器的 C语言。这下傻了,老师没教过啊。

单片机编程用C语言或汇编语言都可以,但是我建议用C语言比较好,模块化管理编程方便,移植性强,适合编写大程序。如果原来有C语言的基础那学起来会更 好,如果没有,也可以边学单片机边学C语言。虽然很多人是从汇编语言开始接触单片机的,但是写小程序汇编语言还是简单的,如果要实现一些算法,那汇编语言 就不简单了。说C语言编译以后代码量明显比汇编长,而且执

行效率也没有汇编语言高,但是在以前单片机开发中芯片工艺的限制,及单片机主频的限制,很多单片机内部存储器小的可伶,主频也小得可伶。但是现在不一样了,芯片内部的存储器根不不在乎这点差别。主频也越来越高。

那汇编语言是不是不学了呢?不是的,一定要学习,有两方面首先入门单片机的时候要用汇编语言,它的语法简单。第二如果你要做单片机的程序的高级设计师,那 汇编语言是非掌握不可的,很多像高级单片机 ARM都是汇编语言作为引导代码的,还有就是很多新出品的单片机起先也是先有汇编语言编译器之后才有 C语言编译 器。所以,我觉得对于单片机学习汇编语言入门,C语言精通,汇编语言再精通。

有句话很有道理“单片机 C语言高手绝对是汇编语言高手,但是汇编语言高手不一定是 C语言高手”

最后,对于单片机的学习,入门为先,入门了以后就要去关注市场,关注企业,企业需要什么样的人才,我想有了基础以后在面试之前了解下企业所需要的单片机类型,很快就上手了,毕竟学习是相同的。

相关问答

c计数法表示什么?

本文介绍了三菱FX系列plc的计数器C的功能、结构,计数过程及工作原理。功能:对内部元件X、Y、M、S、T、C的信号进行计数。结构:线圈、触点、设定值寄存器、...

 贺友直  沈丽君miki 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部