产地类别 | 进口 |
---|
制造业作为中国重要的经济支柱,正在面临着*的挑战,例如:如何缩短产品上市时间、提高生产效率、以及大规模的生产如何能够兼顾价格和个性化的产品等。我们凭借创新技术,硬件软件无缝集成,并可基于数据分析进行服务,确保生产过程更加灵活、高效,且缩短产品上市时间。同时,与教育部合作,培养新一代创新型工程人才,推动制造业转型升级。
![]() |
参考价 | ¥88 |
订货量 | 1 |
更新时间:2018-12-13 15:45:26浏览次数:234
联系我们时请说明是化工仪器网上看到的信息,谢谢!
6ES7321-1BH50-0AA0
如何使用西门子S7-300CPU寄存器状态字
1.引言
CPU寄存器状态字的各位给出了有关指令状态或结果的信息以及所出现的错误,我们可以将二进制逻辑操作状态位信号状态直接集成到程序中,以控制程序执行的流程。
2.状态字寄存器
先简单介绍一下CPU中状态字。
●首次检查位:状态字的0位称作首次检查位,如果/FC位的信号状态为“0”,则表示伴随着下一条逻辑指令,程序中将开始一个新的逻辑串。FC前面的斜杠表示对FC取反。
●逻辑运算结果:状态字的第1位为RLO位(RLO=“逻辑运算结果”),在二进制逻辑运算中用作暂时存储位。比如,一串逻辑指令中的某个指令检查触点的信号状态,并根据布尔逻辑运算规则将检查的结果(状态位)与RLO位进行逻辑门运算,然后逻辑运算结果又存在RLO位中。
●状态位:状态位(第2位)用以保存被寻址位的值。状态位总是向扫描指令(A,AN,O,…)或写指令(=,S,R,)显示寻址位的状态(对于写指令,保存的寻址位状态是本条写指令执行后的该寻址位的状态)。
●OR位:在用指令OR执行或逻辑操作之前,执行与逻辑操作的时候,就需要用到OR这一状态位。OR位表示先前执行的与逻辑操作产生的值为“1”,于是,逻辑操作或的执行结果就已被确定为“1”。
●OV位:溢出表示算术或比较指令执行时出现了错误。根据所执行的算术或逻辑指令结果对该位进行设置。
●OS位:溢出存储位是与OV位一起被置位的,而且在更新算术指令之后,它能够保持这种状态,也就是说,它的状态不会由于下一个算术指令的结果而改变。这样,即使是在程序的后面部分,也还有机会判断数字区域是否溢出或者指令是否含有无效实数。OS位只有通过如下这些命令进行复位:JOS(若OS=1,则跳转)命令,块调用和块结束命令。
●CC1及CC0位:CC1和CC0(条件代码)位给出有关下列结果的相关信息:
•算术指令结果
•比较指令结果
•字逻辑指令
•在移位功能中,移出位相关信息。
可以用以下指令来检查条件代码CC1和CC0。
CC1CC0检查完成后,如果:
00A==0结果=0
10A>0结果>0
01A<0结果<0
●BR位:状态字的第8位称为二进制结果位。它将字处理程序与位处理联系起来,在一段既有位操
作又有字操作的程序中,用于表示字逻辑是否正确。将BR位加入程序后,无论字操作结果如何,都不会造成二进制逻辑链中断。在梯形图的方块指令中,BR位与ENO位有对应关系,用于表明方块指令是否被正确执行:如果执行出现了错误,BR位为0,ENO位也为0;如果功能被正确执行,BR位为1,
ENO位也为1。在用户编写的FB/FC程序中,应该对BR位进行管理,功能块正确执行后,使BR位为1,否则使其为0。使用SAVE指令将RLO存入BR中,从而达到管理BR位目的。
状态字的9-15位未使用。
3.具体使用
下面我们结合STEP7中的指针编程来具体介绍条件码CC0/CC0的用法。
不同的指令在CPU中执行时间是不同的。浮点数比定点数执行时间要长;字逻辑指令比位逻辑指令执行时间要长;在某些程序中适当使用状态字来进行编程可以减少CPU程序的执行时间。
例1:比如说要比较一个DB中块的DBBO-DBB99这100个字节是正数是负数还是0,正数用1来表示;负数用-1来表示;0用0来表示。并且将对应结果存入MB200开始的100个字节中。我们通常的做法可能为:
如果利用条件码来进行编程,既可以减少程序的大小还会减少一定的指令执行时间,我们只需要将
中间的比较程序加以优化,即可以达到目的。
例2:根据状态位C0和CC1的状态而跳转的跳转功能指令JZ不改变任何状态位的状态,而且逻辑操作结果RLO值也会“随着”该跳转功能带到跳转程序段中,供用户程序其它逻辑操作之用(不改变/FC状态)。
示例两个整数相减并需进行连续判断:
LMW2
LMW8
-I
JZZERO//如果结果等于“0”,则跳转至标号ZERO处
//结果不等于“0”时所执行的指令
ZERO://结果等于“0”时,所要执行的指令
如果用户不熟悉JZ指令和状态位C0和CC1的具体含义,编程时就需要通过比较指令将比较结果存入一个二进制位中,再根据这个二进制位通过JC/JCN指令来控制程序的执行了。
例3:我们实际应用中可能要利用某些协议转换网关(比如说Hilscher公司的NTTAP系列网关)来和某些串口协议的仪表进行通信时,会遇到CRC校验的问题,关于CRC校验时需要判断溢出位是否为1的问题来进行程序的进一步计算。我们以EURO2408的MODBUS通信时需要的CRC校验为例说明CRC校验的步骤:
1、装载16#FFFF到一个16位CRC寄存器;
2、将CRC寄存器的高8位字节与信息中的*个8位字节相异或,结果返回到CRC寄存器中;
3、将CRC寄存器数据向右移动一位;
4、如果溢出的位等于1,则将CRC寄存器与16#A001相异或,结果返回到CRC寄存器中;
4、如果溢出的位等于0,则重复第3步;
5、重复第3、4步骤,直到已经移位了8次;
6、将CRC寄存器的高8位字节与信息中的下一个8位字节相异或,结果返回到CRC寄存器中;
7、重复第3步到第6步,直到信息中所有字节都与CRC寄存器相异或,并都移位了8次;
8、最后的CRC寄存器中的结果即为CRC校验码,最后被添加到信息(数据)的末尾(交换!低8位
在前,高8位在后;)
在第4步中需要判断溢出的位是否为1,如何判断对于整个程序有着重要的影响。我们可以用A>0指令来判断这个条件,具体代码的编写,有兴趣时大家可以根据上面的步骤编写一个自己的CRC程序。
4.结束语
在一般情况下,我们不必考虑这些状态位,但在某些情况下,利用这些状态位并结合一定的指令,可以给我们的编程带来更大的灵活性,同时对于进一步提高自己的编程水平也有一定的作用。
用途
本手册是在功能块图(FBD)编程语言中创建用户程序的指南。
本手册也包含了描述功能块图中语言要素的语法和函数的参考部分。
所需要的基础知识
本手册供S7程序员、操作员以及维护/维修人员使用。
要了解本手册,需要具有自动化技术的常规知识。
除此之外,还需要具有计算机应用能力和其它类似于PC (例如,编程设备)的、使用MS Windows XP、MS Windows Server 2003或MS Windows 7 版操作系统的工作设备的知识。
手册应用范围
本手册适用于STEP 7编程软件包5.6版本。
符合的标准
FBD即"功能块图"语言,由国际电工技术委员会标准IEC 1131-3定义。欲知更多详细资料,请参见STEP 7文件NORM_TBL.RTF中的标准表。
在线帮助
集成于软件中的在线帮助是对本手册的补充。提供在线帮助的目的是,在使用软件时提供详细的支持。
该帮助系统通过一些界面集成于软件中:
•上下文相关帮助提供关于当前语境(例如,打开的对话框或激活的窗口)的信息。可以通过通过菜单命令帮助 > 上下文相关的帮助,或按下F1键或通过使用工具栏上的问号符来打开上下文相关的帮助。
•可以通过使用菜单命令帮助 > 目录,或在上下文相关的帮助窗口中按"STEP 7帮助"按钮来调用STEP 7中的常规帮助。
•可以通过按"词汇表"按钮,调用所有STEP7应用程序的词汇表。
本手册是"FBD帮助"的摘录。由于手册和在线帮助具有*相同的结构,因此非常容易在手册和在线帮助之间切换。
这个主要是其中的可编程控制器等级不同和模块差别,就是s7-200属于基础入门级,而s7-300和s7-400相对于较高端的运用。就是西门子可编程控制器产品的序列号。
---->S7 200:用于小型的电气控制系统中,着重于逻辑控制;
---->S7 300:用于稍大系统,可实现复杂的工艺控制,如PID、脉宽调制等;
---->S7 400:用于大型控制系统,主要是实现冗余控制。
200属于小型机,300属于中型机,小型机也是多功能机,将所有功能结合在一起,它的控制规模为最大512点,CPU的运算处理速度不及中大型机快,小型机多为整体式的,扩展模块最多可加8块,适用于小型设备,性价比高;中大型机结构是模块化的,最多可加300多块扩展模块,中大型机硬件较贵,成本高,但其运算处理速度快,有很强的通信功能,主要应用于中大型生产线,如化工行业,造纸行业,钢铁行业,汽车生产线,大型中央空调,污水处理等,中国的中大型机以西门子的300和400为主,西门子的产品性能稳定,网络通信功能强大,程序简单,性价比高。
硬件区别
1、最主要地区别就是S7-300/400更模块化了,S7-200系列是整体式的,CPU模块、I/O模块和电源模块都在一个模块内,称为CPU模块;而S7-300/400系列的,从电源,I/O,CPU都是单独模块的。但是这么说容易让人误解200系列不能扩展,实际上200系列也可以扩展,只不过买来的CPU模块集成了部分功能,一些小型系统不需要另外定制模块,200系列的模块也有信号、通信、位控等模块。
2、200系列的对机架没有什么概念,称之为导轨;为了便于分散控制,300/400系列的模块装在一根导轨上的,称之为一个机架,与中央机架对应的是扩展机架,机架还在软件里反映出来。
3、200系列的同一机架上的模块之间是通过模块正上方的数据接头联系的;而300/400则是通过在底部的U型总线连接器连接的。
4、300/400系列的I/O输入是接在前连接器上的,前连接器再接在信号模块上,而不是I/O信号直接接在信号模块上,这样可以更换信号模块而不用重新接线。
5、300/400系列的CPU带有profibus(profibus是一种国际化.开放式.不依赖于设备生产商的现场总线标准)接口。
软件区别
1、200系列用的STEP7-Micro/WIN32软件;300/400使用的是STEP7软件,带了Micro和不带的区别是相当的明显的。
2、200系列的编程语言有三种--语句表(STL)、梯形图(LAD)、功能块图(FBD);300/400系列的除了这三种外,还有结构化控制语言(SCL)和图形语言(S7 graph)。
3、300/400软件最大的特点就是提供了一些数据块来对应每一个功能块( Block-FB),称之为Instance。
4、300/400再也不能随意的自定义Organization Block、sub-routine和Interrupt routine了,现在OB1惟我独尊了,没事系统只能调用它了,其它的什么东东则变成了FB- Block和FC-,其它的也是预定义成了系统的了,System的S给它们(SFB、SFC)定义了自己的身份。
5、300/400中提供了累加器(ACCU)和状态字寄存器、诊断缓冲区
6ES7321-1BH50-0AA0