您的位置:商铺首页 >> 行业资讯 >> 详情

西门子一级代理商

时间:2018-09-29 17:00

  选择的优势:

  1、 采购总部位于德国,德国总公司直接欧美厂家采购,5000多家优质供应商。

  2、 技术力量强大,有专业技术人员,相关品牌可提供产品的技术资料。

  3、 德国公司集中采购,发货及时库存充足。

  4、 货期及时,拼单货运。每周从德国发货。

  5、 合作过程简约,直接源头采购成本低。

  联系人  郑鑫  135八五七五四八零三

  问题:在S7-CPU中使用嵌套程序需要注意什么,如何使用?

  回答:S7-CPU支持嵌套程序,但对于不同的CPU类型,在使用时需要注意一些问题。

  1. 不同的CPU类型,支持的嵌套程序深度不同,用户可在CPU的技术数据中查到此参数,以6ES7315-2AG10-0AB0为例。

  图1:CPU的嵌套深度参数

  2. 用户可以按照如下方式使用嵌套功能:

  a) 在某个优先级组织块中调用多个嵌套FC/FB。例如,在OB1 (优先级为1)调用FC1,FC1中调用FC2,FC2中调用FC3,等等,一直到FC7,与OB1共8层深度。如果在FC7 中又调用了FC8 ,此时会导致CPU 停机,在CPU在线信息界面中可查看到此情况,如图2所示。用户也可在OB35(优先级为12)调用FC11,FC11中调用FC12,FC12中调用FC13,等等,一直到FC17。

  图2:嵌套调用

  b) 在某个优先级中调用某个FC,此FC多次调用自身。例如,在OB1 (优先级为1)调用FC1,FC1中仍然调用FC1,用户在FC1 的程序中必须编程累计FC1被调用的次数,如果达到了7次,则需要从FC1 中跳出调用(此方法即为软件行业广泛应用的递归编程方法)。如果在FC1 调用自身次数超出了CPU允许的嵌套深度,此时会导致CPU 停机。

  3. 当用户在使用嵌套功能时,可能出现几种错误:

  a) The nesting depth of block calls (U-Stack) is too high(嵌套深度太高)。例如:

  • 用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(a) 部分所描述。

  • 用户在某个优先级(如OB1)中调用嵌套程序深度超出所使用CPU支持深度,如第2节(b) 部分所描述。

  此时CPU将报16#4575错,如图3所示:

  图3:同步错误嵌套1

  b) The nesting depth of synchronous errors is too high(同步错误嵌套深度太高)。例如:

  • 用户在OB1中使用L DB1.DBB0 语句(CPU中并未下载DB1),

  • 此时CPU出现编程错误,将调用OB121。

  • 如果用户在下载的OB121中又使用了L DB1.DBB0 指令,将导致CPU停机

  此时CPU将报16#4573错,如图4所示:

  图4:同步错误嵌套2

  c) Error during allocation of local data (分配本地数据错误) 。对于S7-CPU每个优先级都有对本地数据大小的限制,如果用户使用的范围超出了此限制,CPU将出现错误。以6ES7315-2AG10-0AB0为例,其每个优先级下的本地数据大小为512 BYTE。如下错误使用都可能导致此错误:

  • OB1 调用FC1,FC1 中定义的local data(TEMP数据类型)与OB1中定义的local data(TEMP数据类型)总和超出了CPU 对此优先级分配的local data 数量。

  • OB1 中嵌套调用多个FC, 这些FC 使用的local data 与OB1中定义的local data(TEMP数据类型)总和超过了分配给此优先级的local data 数量。

  此时CPU将报16#3576错,如图5所示:

  图5:分配本地数据错误

  • 对于S7-400CPU, 用户可以在硬件配置中调节每个优先级下的本地数据大小,以6ES7412-2XG04-0AB0为例,如图6所示:

  图6:分配本地数据

  4. 当用户在使用嵌套功能出现错误时,对于支持OB88的CPU(例如S7-400CPU),可用通过下载OB88来防止CPU停机,此时CPU将处于SF状态,但OB88不可以再出现嵌套使用错误,否则CPU将进入停机状态。对于不支持OB88的CPU(例如S7-300CPU),当出现嵌套调用错误时,无法避免CPU进入停机状态。问题3:S7-200 CPU内的程序是否具有掉电保持特性?

  回答:S7-200 CPU内的程序块下载时,会同时下载到EEPROM中,也就是说程序下载后,将永久保持。同样,系统块和数据块下载时,也会同时下载到EEPROM中。

  问题4:S7-200 CPU内部的数据的掉电保持特性?

  回答:S7-200系统手册第四章——“PLC基本概念”一章中“理解S7--200如何保存和存储数据”一节详细介绍了S7-200 CPU内数据的掉电保持特性,建议用户仔细阅读。

  S7-200 CPU内的数据分为RAM区和EEPROM区。

  其中,RAM区数据需要CPU内置的超级电容或者外插电池卡才能实现掉电保持特性。

  对于CPU221和CPU222的内置超级电容,能提供典型值约50小时的数据保持。

  对于CPU224,CPU224XP,CPU224XPsi和CPU226的内置超级电容,能提供典型值约100小时的数据保持。

  超级电容需要在CPU上电时充电。为达到上述指标的数据保持时间,需要连续充电至少24小时。

  当该时间不够时,可以购买电池卡,以获得更长时间的数据保持时间。

  EEPROM区能实现数据永久保持,不依靠超级电容或者电池就可以保持数据。

  问题5:S7-200 CPU内部数据的工作顺序?

  回答:S7-200 CPU一上电后,CPU先去检查RAM区域中的数据,如果在超级电容或者电池有电的情况下,数据并未丢失,则使用该RAM区的数据;如果超级电容或者电池没电了,导致数据丢失,则CPU去读EEPROM中相应的区域(包含数据块中的数据定义内容),如果在EEPROM中存有永久保持的数据,则CPU将EEPROM中的数据写回到RAM区中,再进行下面的工作。

  如果EEPROM中也没有对应存储区的数据了,则该存储区的数据将变成0。

  问题6:S7-200 CPU电池卡的使用注意事项?

  回答:新版S7-200 CPU电池卡有两种型号。

  对于CPU221和CPU222,由于其中没有实时时钟,则对应的为时钟电池卡,订货号为:6ES7297--1AA23--0XA0。

  对于CPU224,CPU224XP,CPU224XPsi和CPU226,电池卡仅提供电池功能,订货号为:6ES7 291--8BA20--0XA0,该款电池卡型号又叫做BC293。

  电池卡的寿命典型值约为200天,当插上电池卡后,如果CPU处于工作状态或者超级电容有电的情况下,并不消耗电池卡的电量。当电池卡的电量消耗完毕之后,该电池卡就报废了。

  S7-200电池卡不能充电,使用完毕就不能再用了,只能购买新的电池卡了。

  S7-200没有检测电池卡内剩余电量的状态位和这种功能。

  新版S7-200 CPU电池卡不能用于老CPU,即订货号为6ES7xxx-xxx21-0XB0和6ES7xxx-xxx22-0XB0以及更老版本的CPU。

  图1

  以上为两种电池卡以及所在插槽位置。

  电池卡的使用完整限制条件,请参考《S7-200系统手册》附录A 技术规范—可选卡件一节。

  问题7:S7-200 CPU内EEPROM的使用方法?

  回答:EEPROM的写入分为如下几种情况:

  1、MB0—MB13的设置,只需要在系统块—断电数据保持中设置即可。

  默认情况下,系统块设置如下图蓝框中所示,即MB14—MB31,这些区域没有对应的EEPROM区域,无须考虑EEPROM写入次数限制。

  图2

  MB0—MB13如果在系统块中设置成掉电保持区域,如图2红框中所示,并将系统块下载到CPU之后,则这14个字节的数据在掉电的瞬间会将数值写入EEPROM中,如果掉电时间超过超级电容和电池的保持时间之后,再上电时,CPU会将EEPROM中存储的数据数值写回到RAM中对应的存储区,实现永久保持数据的目的。

  注意:实现该功能一定要将修改过的系统块下载到CPU中。

  2、数据块中定义的数据,如图3所示,当下载数据块的时候,同时会将定义的数据下载到EEPROM中,这样,当掉电时间超过超级电容和电池的保持时间之后,再上电时,CPU会将EEPROM中存储的数据块中定义的数据数值写回到RAM中对应的存储区,实现永久保持数据的目的。也就是恢复成数据的初始设置值。

  注意:实现该功能一定要将定义好数据的数据块下载到CPU中。

  图3

  3、使用SMB31和SMW32控制字来实现将V区的数据存到EEPROM中

  特殊存储器字节31 (SMB31)命令S7-200将V存储区中的某个值复制到永久存储器的V存储区,置位SM31.7提供了初始化存储操作的命令。特殊存储器字32 (SMW32)中存储所要复制数据的地址。如图4为S7-200系统手册内关于SMB31和SMW32的使用说明。

  图4

  采用下列步骤来保存或者写入V存储区中的一个特定数值:

  1. 将要保存的V存储器的地址装载到SMW32中。

  2. 将数据长度装载入SM31.0和SM31.1。具体含义如图4所示。

  3. 将SM31.7置为1。

  图5

  注意:如果在数据块中定义了某地址的数据,而又使用这种办法存储同样地址的数据,则当CPU内超级电容或电池没电时,CPU再上电时将采用SMB31和SMW32存储的数据。

  问题8:EEPROM写入次数的统计?

  回答:每次下载程序块/数据块/系统块或者执行一次SMB31.7置位的操作都算作对EEPROM的一次写操作,所以请注意在程序中一定不要每周期都调用SMB31/SMW32用于将数据写入EEPROM内,否则CPU将很快报废。

  问题9:不使用数据块的方法,如何在程序中实现不止一个V区数据的存储?

  回答:由于SMB31/SMW32一次最多只能送入一个V区双字给EEPROM区域,因而当有超过一个双字的数据需要送入EEPROM中时,需要程序配合实现。具体操作方法可参照如下的例子,即使用SMB31/SMW32送完一个数据(字节/字/双字)之后,通过一个标志位(如M0.0)来触发下一个SMB31/SMW32操作,之后需要将上一个标志位清零,以用于下一次的存储数据的操作。

  由于SM31.7在每次操作结束之后都自动复位,因而不能使用它作为第二次触发操作的条件。

  以上程序仅供参考。