什么是自由分配 I/O 地址?
地址的自由分配意味着您可对每种模块(SM/FM/CP)自由的分配一个地址。地址分配在 STEP 7 里进行。先定义起始地址,该模块的其它地址以它为基准。
自由分配地址的优点:因为模块之间没有地址间隙,就可以优化地使用可用地址空间。在创建标准软件时,分配地址过程中可以不考虑所涉及的 S7-300 的组态。
18:诊断缓冲器能够干什么?
更快地识别故障源,因而提高系统的可用性。评估STOP之前的最后事件,并寻找引起STOP的原因。
诊断缓冲器是一个带有单个诊断条目的循环缓冲器,这些诊断条目显示在事件发生序列中;第一个条目显示的是最近发生的事件。如果缓冲器已满, 最早发生的事件就会被新的条目所覆盖。根据不同的CPU,诊断缓冲器的大小或者固定,或者可以通过HW Config中通过参数进行设置。
19:诊断缓冲器中的条目包括哪些?
1) 故障事件
2) 操作模式转变以及其它对用户重要的操作事件
3) 用户定义的诊断事件(用SFC52 WR_USMSG)
在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。
如何确定MMC的大小以便完整地存储STEP 7项目?
为了给项目选择合适的MMC,需要了解整个项目的大小以及要加载块的大小。可以按照如下所述的方法来确定项目的大小:
1) 首先归档STEP 7项目。然后在WINOOWs资源浏览器中打开已归档项目,并确定其大小(选中该项目并右击)。这会告诉您归档文件的大小。
2) 将块加载入CPU。现在仍然需要选择"PLC > Module Information > Memory"。在此,在" Load memory RAM EPROM"中,可以看到分配的加载内存的大小。
3) 必须将该值和已经确定的归档项目的大小相加。这样就可以得出在一个MMC上保存整个项目所需的总内存的大小。
21:CPU全面复位后哪些设置会保留下来?
复位CPU时,内存没有被完全删除。整个主内存被完全删除了,但加载内存中数据,以及保存在Flash-EPROM存储卡(MC)或微存储卡(MMC)上的数据,则会全部保留下来。除了加载内存以外,计时器(CPU 312 IFM除外)和诊断缓冲也被保留。具有MPI接口或一个组合MPI/DP接口的CPU只在全部复位之前保留接口所采用的当前地址和波特率。另一方面,另一个PROFIBUS地址也被完全删除,不能再访问。
重要事项:重新设置PG/PC之后,与CPU之间的通讯只能通过MPI或MPI/DP接口来建立。
22:为什么不能通过MPI在线访问CPU?
如果在CPU上已经更改了MPI参数,请检查硬件配置。可以将这些值与在"Set PG/PC interface"下的参数进行比较,看是否有不一致。
或者可以这样做:打开一个新的项目,创建一个新的硬件组态。在CPU的MPI接口的属性中为地址和传送速度设置各自的值。将"空"项目写入存储卡中。把该存储卡插入到CPU 然后重新打开CPU的电压,将位于存储卡上的设置传送到CPU。现在已经传送了MPI接口的当前设置,并且像这样的话,只要接口没有故障就可以建立连接。 这个方法适用于所有具有存储卡接口的S7-CPU。
23:错误OB的用途是什么?
如果发生一个所描述的错误(见文件1),则将调用并处理相应OB。如果没有加载该OB,则CPU进入STOP(例外:OB70、72、7 3和81)
S7-CPU可以识别两类错误:
1) 同步错误: 这些错误在处理特定操作的过程中被触发,并且可以归因于用户程序的特定部分。
2) 异步错误: 这些错误不能直接归因于运行中的程序。这些错误包括优先级类的错误,自动化系统中的错误(故障模块)或者冗余的错误。
在DP从站或CPU315-2DP型主站里应该编程哪些“故障 OBs”?
在组态一个作为从站的CPU315-2DP站时,必须在STEP7程序中编程下列OB以便评估分布式I/O类型的错误信息:
OB 82 诊断中断 OB 、OB 86 子机架故障 OB 、OB 122 I/O 访问出错
1) 诊断OB82:如果一个支持诊断,并且已经对其释放了诊断中断的模块识别出一个错误,它既对进入事件也对外出的事件向 CPU 发出一个诊断中断的请求。操作系统然后调用 OB82。在 OB82 自己的局部变量里包含有有缺陷模块的逻辑基地址和 4 个字节的诊断数据。如果你还没有编程 OB82, 则 CPU 进入“停止”模式。你可以阻断或延迟诊断中断 OB ,并通过 SFC 39 - 42 重新释放它。
2) 子机架故障OB86:如果识别出一个 DP 主站系统或一个分布式 I/O 站有故障(既对进入事件也对外出的事件),该 CPU 的操作系统就调用 OB 86 。如果没有编程 OB 86 但出现了这样一个错误, CPU 就进入“停止”模式。你可以阻断或延迟 OB86 并通过 SFC 39 - 42 重新释放它。
3) I/O 访问出错OB122:当访问一个模块的数据时出错,该CPU的操作系统就调用OB 122。比方说,CPU在存取一个单个模块的数据时识别出一个读错误,那么操作系统就调用OB 122。该OB 122以与中断块有相同的优先级类别运行。如果没有编程OB 122,那么CPU由“运行”模式改为“停止”模式。
25:为什么在某些情况下,保留区会被重写?
在STEP 7的硬件组态中,可以把几个操作数区定义为“保留区”。这样可以在掉电以后,即使没有备份电池的话,仍能保持这些区域中的内容。如果定义一个块为 “保留块”,而它在 CPU 中不存在或只是临时安装过,那么这些区域的部分内容会被重写。在电源接通/断开之后,其他内容会在相关区里找到。
26:为何不能把闪存卡的内容加载入S7 300 CPU?
你的项目在闪存卡上。现在要用它加载 S7 300 。但加载结束后发现 CPU 的 RAM 中仍是空的。 出现此问题的原因是你的程序里有无法处理的,"错误的"组织块(比如说, OB86 没有 DP 接口)。 在重新设置和重新启动 CPU 后, RAM 仍是空的。 诊断缓冲区对这个"无法加载"的块会提示一些信息。
PLC的用户程序执行过程
对于用户来说,在编写用户程序或选择设备时,必须清楚下面介绍的三个阶段,即用户程序执行过程的原理。
PLC采用集中处理的方法,即对输入扫描信号、执行用户程序和输出刷新都采用集中分批处理的工作方式。
(1)输入扫描 在这一阶段中,PLC以扫描方式读入所有输入端子上的输入信号,并将输入信号存入输入映像区,输入映像存储
器被刷新。在程序执行阶段和输出刷新阶段中,输入映像存储器与外界隔离,其内容保持不变,直至下一个扫描周期的输入扫描
阶段,才被重新读入的输入信号刷新。可见,PLC在执行程序和处理数据时,不直接使用现场当时的输入信号,而使用本次采样
时输入到映像区中的数据。如果输入设备能使PLC输入端形成闭合回路,对应输入端编号的内部输入继电器内保存为“1”,即相
当于继电器线圈导通。在程序执行过程中,该编号对应的触点动作;如果输入设备能使输入开路,则对应输入端编号的内部输入
继电器内保存为“0”,即相当于继电器线圈没导通,在程序执行过程中,该编号对应的触点不动作。如果在PLC处于非输入扫描
的阶段,PLC外的输入设备状态发生了变化,内部输入继电器也不会发生变化,要等到下一个输入扫描阶段才能根据此时的输入
状态来刷新。所以,对于少于十几毫秒的输入信号,经常采集不到。
(2)执行程序 在执行用户程序过程中,PLC按梯形图程序顺序自上而下、从左至右逐个扫描执行,即按助记符指令表的先后顺
序执行。但遇到程序跳转指令,则根据跳转条件是否满足来决定程序跳转地址。程序执行过程中,PLC从输入映像区中取出输入
变量的当前状态,然后进行由程序确定的逻辑运算或其他运算,根据程序指令将运算结果存入相应的内部继电器中,包括输出继
电器、内部辅助继电器、定时器、计数器等。输出继电器的信号存放在输出映像区,即输出继电器与PLC外部的同编号的输出点
对应。
在程序执行过程中,同一周期内,前面的逻辑结果影响后面的触点,即后执行的程序可能用到前面的最新中间运算结果;但同一
周期内,后面的运算结果不影响前面的逻辑关系。该扫描周期内除输入继电器以外的所有内部继电器的最终状态(导通与否),
将影响下一个扫描周期各触点的开与闭。
(3)输出刷新 程序执行阶段的运算结果被存入输出映像区,而不送到输出端口上。在输出刷新阶段,PLC将输出映像区中的输
出变量送入输出锁存器,然后由锁存器通过输出模块产生本周期的控制输出。如果内部输出继电器的状态为“1”,则输出继电
器触点闭合。全部输出设备的状态要保持一个扫描周期。