返回HOME页 发新话题
打印

西门子PLC基础7(非常经典的文章!)

西门子PLC基础7(非常经典的文章!)


数字指令 

在讨论数字指令前先了解一下各种数据格式,关于二进制、十进制及其他数的表示方法,在其他地方都有介绍,这里就不再重复。

一、数据格式(16位):数据类型INT是整数(16位),其中符号(位15)表示是正数或是负数(“0”=正数,“1”=负数),16位整数的数值范围是-32768~+32767。在二进制格式中,整数的负数形式用正数的二进制补码表示。(二进制补码利用取反加1得到) 负数的位格式,对零的位置加权求和,再加1,然后在前面放一个负号。

BCD码:十进制的每一位用四个二进制数表示,因为最大为9,所以需要四位二进制才能表示出来(十进制的9=1001二进制),要注意,从0~9的十进制数的BCD码表示与二进制数表示相同,但BCD码一般用作显示,并非二进制。上面的INT(整数)主要是用来运算。

如BCD码W#16#296,在CPU中表现为0000,0010,1001,0110(直接为+,2,9,6=+296);而整数+296则表示为0000,0001,0010,1000(即28+25+23=296),再例如整数-413表示为1111,1110,0110,0011(因为是负数,所以用补码,取反加1,所以上面的二进制数=-(28+27+24+23+22+1)=“-413”,而在BCD码该数(W#16#F413)则可以简单的表示为1111,0100,0001,0011。

二、数据格式(32位):DINT类型的数据——带符号位的32-位整数,定义为“双整数”或“长整数”,它的表示方法及范围是:L#-2147483648~L#+2147483647;还有一个是实数型REAL型(也叫浮点数),是1.175495*10-38~3402823*1038之间,实数的通用格式为(Sign)*(1.f)*(2e-127),其中Sign为符号位第31位(即最高位),低位的0~22位为f=底数位,23~30为e=指数。STEP 7中的实数是按照IEEE标准表示的。

数据的装入和传递:MOVE(LAD/FBD)或L和T(STL):如果输入EN有效,输入“IN”处的值拷贝到输出“OUT”。装载和传递指令的执行与RLO无关,数据通过累加器交换,装载指令把右边源地址的值写到累加器1(不够32位用0补齐),传递指令拷贝累加器中一些或所有内容到指定的目的地址。如先装载L +5 / L L#523312 / L B#16#EF (分别为装载一个整数+5/一个双整数523312/一个十六进制数EF)到第一累加器(ACCU1),然后再传输到目的地,如T MB5等。累加器是CPU中的辅助存储器,它们用于不同地址之间的数据交换、比较和数学运算操作。S7-300有两个32位的累加器,S7-400有四个32位的累加器。在装载过程中,ACCU 1中的值先移入ACCU 2,在新值写入前先清零,然后在把要装入的值写入ACCU 1,传递时则从ACCU 1中读出。装载和传递指令可以指定32位中的一个字节或是字及双字,如果仅传递一个字节,只使用右边的8位。在LAD/FBD中,我们可以使用MOVE的允许输入(EN)把装载和传递操作和RLO联系起来,在STL中,则总是执行装载和传递操作,而和RLO无关,但是,我们可以利用条件跳转指令来执行和RLO有关的装入和传递功能。

定时器:STEP 7中,CPU为定时器保留了一个特殊存储器,这个区专门为每个定时器地址保留一个16位字。定时器的位0~9包含用二进制表示的时间值,12、13位为时间基准——0表示10ms,1表示100ms,2=1秒,3=10秒,时间基准定义的是一个单位代表的时间间隔。时间值可以直接用常数来表示(此时时间基准自动由系统自动分配),例如S5T#100ms,S5T#2h2m2s20ms。

S5定时器格式:时间的指定可以如上述所说直接输入固定的时间常数,或由操作人员用拨轮按扭改变或和存储器字或数据字中的时间值有关的过程和配方。在使用中可以用L命令(读出)定时器BI输出端的地址(包含10位二进制数表示的时间值,不带时间基准),如 L T5;也可以用LC命令读出定时器BCD端的地址(3位BCD数表示的时间值和12、13位的时间基准)。具体介绍几种常用的定时器:下面只介绍功能,具体符号可以在元件表中找。

接通延时(SD)定时器:当定时器的“S”输入端的RLO从0变到1时,定时器启动。只要输入S=1,定时器起作用,当到达指定的TV值(预设值)时定时器启动(输出Q=1),同时该定位器还有一个复位端R端,当等于1时,就清除定时值并且复位Q输出。当前时间可以在BI输出端以二进制数读出,在BCD端以BCD码形式读出,当前时间值是TV的初始值减定时器启动以来的经过时间。

带保持接通延时定时器(SS):与上面SD定时器基本一致,唯一不同的就是具有保持功能,也就是说:一旦S输入端的RLO从0变到1,定时器便启动,即使定时过程中出现输入S端=0,定时器仍继续记时。但有一点,在保持过程中,如果S输入端再次从0变1,则定时器重新开始。

关断延时定时器(SF):从某些方面说,和上面提到的SD接通延时定时器状态正好相反。当定时器的S输入端的RLO从“1”变到“0”时,定时器启动,输出信号Q=0,其他功能和输出与SD一样。个人理解,是否SD接通延时定时器,较多的用于正逻辑,而SF更多的用于事故安全型(有时也叫反逻辑,就是在正常的工况中,输入输出都为1或是带电情况)中。

脉冲(SP):这个比较好理解,当“S”输入端从0变到1时,启动定时器,输出Q=1(最多一个脉冲。输出Q复位的情况为:定时器时间到或启动信号从1变到0或复位输入R信号=1。

扩展脉冲(SE):当输入端的RLO从0变到1时,定时器启动,输出Q置1,即使当中S端输入变到0,输出Q仍保持1。当定时器正在运行,如果启动信号从0变到1,定时器被再次启动。它的复位情况是定时器时间到或复位R端有信号1。

位指令定时器:所有的定时器也可以用简单的位指令启动,这种方法和前面讨论的定时器功能的相似处在于:启动条件在S端,指定时间值,复位条件在R端输入,信号响应在Q端。不同的是(对LAD/FBD)不能检查当前时间值(没有BI/BCD输出)。

TOP

《对论坛现状献诗一首》评点!

这是一首绝世好诗!前段时间论坛出现了一个标题为《对论坛现状献诗一首》的帖子,该贴一发,立刻有了5~6个回贴,正在写对此诗的评价,等写好之后,便找不见了原帖,可能是被移动或是被删除了。这是一首好诗,有点可惜。不过,我的评点恰好没有丢失,发在这里供大家参考。

原帖:

《对论坛现状献诗一首》

如果我将要死去
我决定死在这里

那样,我就会带走
全部的
论坛群发者一起殉葬

并且不会让
推广小助手的信徒们
看见我怎样重生并开始蹒跚的前行


点评:

一首好诗!先说题目:《对论坛现状献诗一首》足见作诗者思考之多,关注论坛并且经常性思考,对论坛现象特别是影响论坛形象的非正常现象(论坛群发)作出了一种深刻、触及灵魂的思考,又非常谦让地“献诗”一首,诚得诗者谨小慎微谦谦之态。

第一节两句,表达了诗者自己对论坛关注的决心,“死在这里”其心可与苍天齐表,与论坛共生,对论坛献身。何其了得!

第二节,表达了自己对论坛群发软件这种现象的厌恶,我死在论坛里且要论坛群发者一块“殉葬”,把这种充斥论坛的始作蛹者带入另类世界。

第三节中更是表达了对“推广小助手的信徒们”讨厌。不会让他们“看见我怎样重生并开始蹒跚的前行”说明了“我”之与论坛的关系并非靠“推广小助手的信徒们”而成。

诗者非常形象地告诉论坛管理者论坛的管理策略:论坛群发现象易疏不易堵,其深意尽在形象之外思索之中。好诗好诗鼓励鼓励!

编者注:

后来询问论坛管理员得知,其实那是群发软件行业的领头羊:推广小助手发的广告帖子而已。我为一篇广告贴居然这么有雅兴,还评论了这么长一段,也由此有了些许更深的感想,如果我们做网站推广时的广告,都能向这个推广小助手这样,把自己的广告诗歌化,这个广告、这个产品一定成功!

TOP

返回HOME页 发新话题
 
 

上海正航电子 | 51PLC技术网

 支持民族产业发展!