从硬件方面来说,S7-1500PLC的处理速度更快,联网能力更强,诊断能力和安全性更高,不仅可节省成本,提高生产效率,而且安全可靠,维护简单方便,真正成为工厂客户和现场维护人员的控制器。S7-1500PLC采用新型的背板总线技术,采用高波特率和高传输协议,使其信号处理速度更快;S7-1500所有CPU集成1-3个PROFINET接口,可实现低成本快速组态现场级通信和公司网络通信,而S7-300/400PLC只有个别型号CPU才集成有PROFINET接口;S7-1500PLC的模块集成有诊断功能,诊断级别为通道级,无需进行额外编程,当发生故障时,可快速准确地识别受影响的通道,减少停机时间,这是S7-300/400PLC所无法比拟的。
for语句是我们今后编程的一个常用的语句,这个语句必须得学会其用法,他不仅仅可以用来做延时,还可以用来做一些循环运算。for语句的一般形式如下:
for(表达式1; 表达式2; 表达式3)
(需要执行的语句);
其执行过程是:表达式1首先执行且只执行一次;然后执行表达式2,通常都是一个用于判定条件的表达式,如果表达式2条件成立,就执行(需要执行的语句);然后再执行表达式3;再判断表达式2,再执行表达式3.....一直到表达式2不成立时,跳出循环往下执行。举个例子:
for(i = 0; i<2; i++)
j++;
这里有一个符号++,这个符号表示加1的意思。假如j开始初值是0,首先执行表达式1的i=0,然后判断i小于2这个条件成立,就执行一次j++,j的值就是1了,然后经过表达式3后,i的值也变成1了,再判断条件2,还是符合,j再加一次,j变成2了,表达式3后i也变成2了,再判断条件2,发现2<2这个条件不成立了,所以就不会再执行j++这个语句了。所以执行完毕后,j的值就是2。
for语句除了这种标准用法,还有几种特殊用法,我们上节课的闪烁小灯对for语句的用法for(i=0; i<30000; i++) ;我们没有加(需要执行的语句),没有加的话,就是什么都不操作。但是什么都不操作的话,我们这个for语句循环判断了30000次,程序执行是会用掉时间的,所以就起到了延时的作用。比如我们把30000改成20000,会发现灯的闪烁速度加快了,因为我们延时时间短了,当然,我们该成40000后会发现,闪烁慢了。但是有一点特别注意,C语言的延时时间是不能通过程序看出来的,也不会成比例,比如假如我们这个for循环里边的表达式2使用30000的时候延时3秒的话,那么延时40000的时候,可能不会是4秒,那如何看实际延时时间呢,一会我再教大家。
还有一种写法for( ; ; ),这样写后,这个for循环就变成了死循环了,就不停的执行(需要执行的语句),和我们前边讲的while(1)的意思是一样的。那while这个语法是如何用的呢?
一、计数概念的引入
从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。
二、计数器的容量
从一个生活中的例程看起:一个水盆在水下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器多只计到999….那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,大的计数量是65536。
三、定时
8031中的计数器除了能作为计数之用外,还能用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?
一个闹钟,我将它定时在1个小时后闹响,换言之,也能说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。
<单片机定时器记数器结构>
结论:只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。由此,单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机供给一个非常稳定的计数源。那么供给组定时器的是计数源是什么呢?看图1,原来就是由单片机的晶体震荡器经过12分频后获得的一个脉冲源。晶体震荡器的频率当然很准,所以这个计数脉冲的时间间隔也很准。问题:一个12M的晶体震荡器,它供给给计数器的脉冲时间间隔是多少呢?当然这很不难,就是12M/12等于1M,也就是1个微秒。结论:计数脉冲的间隔与晶体震荡器有关,12M的晶体震荡器,计数脉冲的间隔是1微秒。
四、溢出
让我们再来看水滴的例程,当水持续落下,盆中的水持续变满,终有一滴水使得盆中的水满了。这个时候如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。
水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。至于会引发什么事件,我们下次课再介绍,现在我们来研究另一个问题:要有多少个计数脉冲才会使TF0由0变为1。
五、任意定时及计数的办法 刚才已研究过,计数器的容量是16位,也就是大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?
提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛?对了,我们采用预置数的办法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10毫秒就能了,怎么办?10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就能了。
- 西门子中国授权代理商|伺服电机总代理 2023-10-26
- 西门子中国授权代理商|低压电器总代理 2023-10-26
- 西门子中国授权代理商|低压总代理 2023-10-26
- 西门子中国授权代理商|数控系统总代理 2023-10-26
- 西门子中国授权代理商|驱动器总代理 2023-10-26
- 西门子中国授权代理商|交换机总代理 2023-10-26
- 西门子中国授权代理商|电线电缆总代理 2023-10-26
- 西门子中国授权代理商|变频器总代理 2023-10-26
- 西门子中国授权代理商|触摸屏总代理 2023-10-26
- 西门子中国授权代理商|CPU模块总代理 2023-10-26