为什么会编程错误?

下面是一篇有意思的“代码大全”,可谓 逆软件工程

让自己稳拿铁饭碗 ;-)

永远不要(把自己遇到的问题)归因于(他人的)恶意,这恰恰说明了(你自己的)无能。 — 拿破仑

为了造福大众,在Java编程领域创造就业机会,兄弟我在此传授大师们的秘籍。这些大师写的代码极其难以维护,后继者就是想对它做最简单的修改都需要花上数年时间。而且,如果你能对照秘籍潜心修炼,你甚至可以给自己弄个铁饭碗,因为除了你之外,没人能维护你写的代码。再而且,如果你能练就秘籍中的全部招式,那么连你自己都无法维护你的代码了!

你不想练功过度走火入魔吧。那就不要让你的代码一眼看去就完全无法维护,只要它实质上是那样就行了。否则,你的代码就有被重写或重构的风险!

  • web服务一个特点是提供个性化服务,为很多客户端提供服务,那么每个用户不同,服务自然不同,所以要记住用户及其状态,这也很多应用软件的通用功能. 由于http是无状态的,Session和Cookie是两 ...

  • 乔磊<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何 ...

}

编程错误后退出去就成这个鬼样了

按着别的大神的步骤一步步操作还是出现错误信息

被烦的头痛,不懂真是搞不懂了

有点怀疑直接是不是太愚钝了,依葫芦画瓢都会错

哪里操作不但还望哪位大神指点一下,帮小弟解除困惑

}

1:使用CPU 315F和ET 200S时应如何避免出现“通讯故障”消息?

使用CPU S7 315F, ET 200S以及故障安全DI/DO模块,那么您将调用OB35 的故障安全程序。而且,您已经接受所有监控时间的默认设置值,并且愿意接收“通讯故障”消息。 OB 35 默认设置为100毫秒。您已经将F I/O模块的F监控时间设定为100毫秒,因此至少每100毫秒要寻址一次I/O模块。但是由于每100毫秒才调用一次OB 35,因此会发生通讯故障。要确保OB35的扫描间隔和F监控时间有所差别,请确保F监控时间大于OB35的扫描间隔时间。

使用CPU的PROFIBUS接口上的DP从站操作PROFIBUS网络时,希望在启动期间检查期望的组态与实际的组态是否匹配。在 CPU属性对话框中的Startup选项卡上给出了两个不同的时间。

3:如何判断电源或缓冲区出错,如:电池故障?

如果电源(仅S7-400)或缓冲区中的一个错误触发一个事件,则CPU操作系统访问OB81。错误纠正后,重新访问OB81。电池故障情况下,如果电池检测中的BATT.INDIC开关是激活的,则 S7-400仅访问OB81。如果没有组态OB81,则CPU不会进入操作状态STOP。如果OB81不可用,则当电源出错时,CPU仍保持运行。

4:为S7CPU上的I/O模块(集中式或者分布式的)分配地址时应当注意哪些问题?

请注意,创建的数据区域(如一个双字)不能组态在过程映象的边界上,因为在该数据块中,只有边界下面的区域能够被读入过程映像,因此不可能从过程映像访问数据。 因此,这些组态规则不支持这种情况:例如,在一个 256 字节输入的过程映像的 254 号地址上组态一个输入双字。 如果一定需要如此选址,则必须相应地调整过程映像的大小(在CPU的Properties中)。

5:在S7 CPU中如何进行全局数据的基本通讯?在通讯时需要注意什么?

(1)全局数据通讯用于交换小容量数据,全局数据(GD)可以是:

(2)数据交换是指在连入单向或双向GD环的CPU之间以数据包的形式交换数据。GD环由GD环编号来标识。

单向连接:某一CPU可以向多个CPU发送GD数据包。

双向连接:两个CPU之间的连接:每个CPU都可以发送和接收一个GD数据包。

必须确保接收端CPU未确认全局数据的接收。如果想要通过相应通讯块(SFB、FB或FC)来交换数据,则必须进行通讯块之间的连接。通过定义一个连接,可以极大简化通讯块的设计。该定义对所有调用的通讯块都有效且不需要每次都重新定义。

7:尽管LED灯亮,为什么CPU 31xC不能从缺省地址124和125读取完整输入?

对于下列型号的CPU ,请检查 24V 电压是否接入引脚 1。LED由输入电流控制。引脚 1 上的 24V 电压需要做进一步处理。

8:配置CPU 31x-2 PN/DP的PN接口时,当PROFINET接口偶尔发生通信错误时,该如何处理?

请确定以太网(PROFINET)中的所有组件(转换)都支持 100 Mbit/s全双工基本操作。避 免中心分配器割裂网络,因为这些设备只能工作于半双工模式。

9:在硬件配置编辑器中,“时钟”修正因子有什么含义呢?

在硬件配置中,通过CPU > Properties > Diagnostics/Clock,你可以进入“时钟”> 域内指定一个修正因子。这个修正因子只影响CPU的硬件时钟。时间中断源自于系统时钟,并且和硬件时钟的设定毫无关系。

10:如何通过PROFIBUS DP用功能块实现在主、从站之间实现双向数据传送?

11:可以从S7 CPU中读出哪些标识数据?

通过SFC 51“RDSYSST”可读出下列标识数据:

可以读出订货号和CPU版本号。为此,使用SFC 51和SSL ID 0111并使用下列索引:

为了通过一个S7连接在使用CPU 317-2PN/DP的两个S7-300工作站之间进行数据交换,其中该S7连接是使用NetPro组态的, 在S7通信中,必须调用通讯功能块。模块FB14('GET') 用于从远程CPU取出数据,模块FB15('PUT')用于将数据写入远程CPU。 功能块包含在STEP 7 V5.3的标准库中。

FB14和FB15是异步通讯功能。 这些模块的运行可能跨越多个OB1循环。 通过输入参数REQ激活FB14或FB15。 DONE、NDR或ERROR表明作业结束。PUT和GET可以同时通过连接进行通信。

在用户程序中,不可以同时编程SEND作业和FETCH作业。

64)时,同时可以处理一个被动作业(SERVE作业、SFB 65)。

可以,但在动力和精度方面,对组态轴的要求差别非常大。在高要求情况下,伺服驱动SIMODRIVE 611U、MASTERDRIVES MC或SINAMICS S必须和CPU 317T一起运行。在低要求情况下,MICROMASTER系列也能满足动力和精度要求。

15:如何在已配置为DP从站的两个CPU模块间组态直接数据交换(节点间通信)?

两个CPU站配置为DP从站,而且由同一个DP主站操作,它们之间的通信通过配置交换模式为DX可以完成直接数据交换。

对于单向基本通信,使用系统功能 SFC67 (X_GET)从一个被动站读取数据,使用系统功能SFC68(X_PUT)将数据写入一个被动站(服务器)。这些块只有在主动站中才调用。对于一个双向基本通信,调用站中的系统功能SFC65 (X_SEND),在该站中想将数据发送到另一个主动站。在同样为主动的主动接收站中,数据将通过系统功能SFC66 (X_RCV)记录。

两种类型的基本通信中,每次块调用可以处理最多 76 字节的用户数据。对于S7-300 CPU,数据传送的数据一致性是 8 个字节,对于S7-400 CPU则是全长。 如果连接到S7-200,必须考虑到S7-200只能用作一个被动站。

17:什么是自由分配 I/O 地址?

地址的自由分配意味着您可对每种模块(SM/FM/CP)自由的分配一个地址。地址分配在 STEP 7 里进行。先定义起始地址,该模块的其它地址以它为基准。

自由分配地址的优点:因为模块之间没有地址间隙,就可以优化地使用可用地址空间。在创建标准软件时,分配地址过程中可以不考虑所涉及的 S7-300 的组态。

18:诊断缓冲器能够干什么?

更快地识别故障源,因而提高系统的可用性。评估STOP之前的最后事件,并寻找引起STOP的原因。 、诊断缓冲器是一个带有单个诊断条目的循环缓冲器,这些诊断条目显示在事件发生序列中;第一个条目显示的是最近发生的事件。如果缓冲器已满, 最早发生的事件就会被新的条目所覆盖。根据不同的CPU,诊断缓冲器的大小或者固定,或者可以通过HW Config中通过参数进行设置。

19:诊断缓冲器中的条目包括哪些?

2) 操作模式转变以及其它对用户重要的操作事件

在操作模式STOP下,在诊断缓冲器中尽量少的存储事件,以便用户能够很容易在缓冲器中找到引起STOP的原因。因此,只有当事件要求用户产生一个响应(如计划系统内存复位,电池需要充电)或必须注册重要信息(如固件更新,站故障)时,才将条目存储在诊断缓冲器中。

20:如何确定MMC的大小以便完整地存储STEP 7项目?

为了给项目选择合适的MMC,需要了解整个项目的大小以及要加载块的大小。可以按照如下所述的方法来确定项目的大小:

1) 首先归档STEP 7项目。然后在Windows资源浏览器中打开已归档项目,并确定其大小(选中该项目并右击)。这会告诉您归档文件的大小。

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) 异步错误: 这些错误不能直接归因于运行中的程序。这些错误包括优先级类的错误,自动化系统中的错误(故障模块)或者冗余的错误。

24:在DP从站或CPU315-2DP型主站里应该编程哪些“故障 OBs”?

在组态一个作为从站的CPU315-2DP站时,必须在STEP7程序中编程下列OB以便评估分布式I/O类型的错误信息:

1) 诊断OB82:如果一个支持诊断,并且已经对其释放了诊断中断的模块识别出一个错误,它既对进入事件也对外出的事件向 CPU 发出一个诊断中断的请求。操作系统然后调用 OB82。在 OB82 自己的局部变量里包含有有缺陷模块的逻辑基地址和 4 个字节的诊断数据。如果你还没有编程 OB82, 则 CPU 进入“停止”模式。你可以阻断或延迟诊断中断 OB ,并通过 SFC

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 仍是空的。 诊断缓冲区对这个'无法加载'的块会提示一些信息。

在组态一个 CPU315-2DP 站时,你使用 S7 工具 “H/W CONFIG” 来分配诊断地址。如果发生一个故障,这些诊断地址被加入诊断 OB 的变量 “OB82_MDL_ADDR” 里。 你可在 OB82 里分析此变量,确定有故障的站并作出相应的反应。

下面是如何分配诊断地址的例子:

第 1 步: 通过 CPU315-2DP 组态从站并赋予一个诊断地址,比如 422。

第 3 步: 把组态好的从站链接到主站并赋予一个诊断地址,比如 1022。

28:需要为S7-300 CPU的DP从站接口作何种设置,才可以使用它来进行路由选择?

如果使用CPU作为I-Slave,并且该CPU也起S7 路由器的作用,那么请注意如下事项:

对于S7 路由连接,有 4 种可用的连接资源-与其它任何连接资源无关。没有使用PG/OP的连接资源或S7基本通信。

如果必须通过DP接口来建立一个与位于其机架上的通信伙伴连接时(如在 CP 343-1 中),也要使用一个路由连接。而对于通过MPI接口与一个位于其机架上的通信伙伴的连接,则不使用路由连接资源,因为在这种情况下,能够直接到达伙伴。注意事项:这不适用于CPU 318。

29:为什么当使用S7-300 CPU的内部运行时间表时,没有任何返回值?

当对CPU 312IFM到316-2DP参数化系统功能块 SFC2, SFC3 和 SFC4 时,为一个运行时间表规定了一个大于 'B#16#0'的标识符,那么将出错并且所需的功能也无法用。 此种情况下,将在块的' RETVAL'输出处输出标识符 '8080h' 。

说明:对于这些 CPU,只有一个计时器可用。因此你应该只用标识符 'B#16#0'。 在一个周期块(OB1, OB35)里一定不能调用系统功能 SFC2 'SET_RTM',而是应该在重启动OB(OB100)调用它。你也可以通过外部触发器来启动该块。不然的话,该块将老是复位运行计时表,永远完成不了计数。

30:变量是如何储存在临时局部数据中的?

L 堆栈永远以地址“0”开始。 在 L 堆栈中,会为每个数据块保留相同个数的字节,作为存放每个块所拥有的静态或局部数据。

当某个块终止时,那么它的空间随之也被重新释放出来。 指针总是指向当前打开块的第一个字节。

31:在CPU经过完全复位后是否运行时间计数器也被复位?

使用S7-300时,带硬件时钟(内置的 “实时时钟”)和带软件时钟的 CPU 之间有区别。对于那些无后备电池的软件时钟的 CPU,运行时间计数器在 CPU 被完全复位后其最后值被删除。而对于那些有后备电池的硬件时钟的 CPU,运行时间计数器的最后值在 CPU 被完全复位后被保留下来。同样, CPU 318 和所有的 S7-400 CPU 的运行时间计数器在 CPU 被完全复位后其最后值被保留。

32:如何把不在同一个项目里的一个S7 CPU组态为我的S7 DP主站模块的DP从站?

缺省情况下, 在STEP 7里只可以把一个S7 CPU组态为从站,如果说该站是在同一个项目中的话。该站然后在“PROFIBUS-DP > 已经组态的站”下的硬件目录里作为“CPU 31x-2 DP”出现。用这种途径,可以设置起 DP 主站与 DP 从站间的链接。

还存在一个选项,可把一个与主站不在同一个项目里的S7 CPU组态为从站。进行如下:

打开“选项 ; 安装新的 GSD...”,把刚下载的 GSD 文件插入硬件目录 。 (注意:此过程中在 HW Config 中无须打开任何窗口)

通过“选项; 更新目录”来更新硬件目录。

注意:如果是手动来结合该 DP 从站, 要确保总线参数,该 DP 从站的 PROFIBUS 地址 和它的 I/O 组态在两个项目里必须相同。

33:无备用电池情况下断电的影响与完全复位一样吗?

不一样。在CPU被完全复位的情况下,其硬件配置信息被删除(MPI地址除外),程序被删除, 剩磁存储器也被清零。

在无备用电池和存储卡的情况下关电,硬件配置信息(除了MPI地址) 和程序被删除。然而,剩磁存储器不受影响。如果在此情况下重新加载程序,则其工作时采用剩磁存储器的旧值。比方说,这些值通常来自前 8 个计数器。如果不把这一点考虑在内,会导致危险的系统状态。

建议:无备用电池和存储卡的情况下断电后,总是要做一下完全复位。

34:以将 2 线制传感器连接到紧凑型CPU的模拟输入端吗?

可以将 2 线制和 4 线制的传感器连接到CPU 300C的模拟输入端。使用一个 2 线制传感器时,在硬件组态中将“I = 电流”设置为测量类型,与 4 线制传感器的设置一样。

注意事项:请注意紧凑型CPU仅支持有源传感器( 4 线制传感器)。如果使用无源传感器( 2 制传感器),必须使用外部电源。

警告:请注意所允许的最大输入电流。2 线制传感器在出现短路时可能会超出最大允许电流。技术数据中规定的最大允许电流是50mA(破坏极限)。对于这种情况(例如,对 2 线制传感器加电流限制或与传感器串联一个PTC热敏电阻),确保提供足够保护。

35:SM322-1HH01也能在负载电压为交流 24 V的情况下工作吗?

是的,您也可以在负载电压为交流 24 V的情况下使用SM322-1HH01。

36:要确保SM322-1HF01 接通最小需要多大的负载电压和电流?

SM322-1HF01 继电器模块需要 17 V和 8 mA才能确保开闭正常。对于触点的寿命来说,这样的值比手册上提供的这个模块的值(10 V和 5 mA)更好。手册的规定值应该认为是最低要求值。

24V数字量输入模块的电源插针连接 (L+ / M) 。

39:SM323数字卡所占用的地址是多少?

下面。在模块的接线视图中,输入字节“X”位于左边的顶部,输出字节“X”在右边的顶部。

对于 8 位类型的模块,输入和输出各占用一个字节,它们有相同的字节地址。若用固定的插槽赋址,SM323 被插入槽 4, 那么输入地址为I 4.0 至 I 4.7,输出地址为 Q 4.0 至 Q 4.7。

SM321-1CH20 和SM321-1CH80 模块的技术参数是相同的。区别仅在SM321-1CH80 可以应用于更广泛的环境条件。因此您无需更改硬件配置。

41:进行I/O的直接访问时,必须注意什么?

需要注意在一个S7-300组态中,如果进行跨越模块的I/O直接读访问(用该命令一次读取几个字节),那么就会读到不正确的值。 可以通过hardware中查看具体的地址。

43:在 STEP 7 硬件组态中如何规划模拟模块 SM374?在硬件目录中如何找到此模块?

模拟模块SM374可用于三种模式中:作为 16 通道数字输入模块,作为 16 通道数字输出模块,作为带 8 个输入和 8 个输出的混合数字输入/输出模块。

现在把SM374按照您需要模拟的模块来组态,就是说;

如果把 SM 374 用作为一个混合输入/输出模块,则组态一个混合输入/输出模块( 8 个输入,8 个输出) - 推荐使用:SM 323: 6ES-0AA0。

44:当测量电流时,出现传感器短路的情况,模块6ES7 331-1KF0.-0AB0的模拟量输入I+是否会被破坏?

当测量电流时,出现传感器短路的情况,模块6ES7 331-1KF0.-0AB0的模拟输入 I+不会被破坏。该模块具有内置的过流保护功能。模块中每个50欧姆的电阻器前面具有一个PTC元件,用于防止模块的输入通道被破坏。

请注意,输入电压允许的长期最大值为12V,短暂(最多1秒)值为30V。

45:如果切断CPU,则 2 线制测量变送器是否继续供电?

如果变送器模块插入位置“D”,且模块在引脚 1 和引脚 20 上由外部电压供电,则 2 线测量变送器继续供电。即使切断CPU,其供电电流仍维持不变。

46:用S7-300模拟量输入模块测量温度(华氏)时,可以使用模块说明文档中列出的绝对误差极限吗?

不可以直接使用指定的误差极限。基本误差和操作误差都以绝对温度和摄氏温度说明。必须乘以系数1.8将其转换为华氏温度单位。

例:S7-300 AI 8 x RTD:指定的温度输入操作误差是+/-1.0摄氏度。当以华氏温度测量时,可接受的最大误差是+/-1.8华氏度。

47:为什么用商用数字万用表在模拟输入块上不能读出用于读取阻抗的恒定电流?

几乎所有的S5/S7 模拟输入设备仍然以复杂的方式工作,即,所有的通道都依次插到仅有的一个AD转换器上。该原理也适用于读取阻抗所必需的恒定电流。因此,要读的流过电阻的电流仅用于短期读数。对于有一个选定接口抑制'50Hz'和 8 个参数化通道的SM331-7KF02-0AB0 ,这意味着电流将会约每180ms流过一次,每次有20ms可读取阻抗。

48:为什么S7-300 模拟输出组的电压输出超出容差?端子S+和S-作何用途?

下列描述适用于所有模拟输出模块SM 332:

当使用模拟输出模块 SM 332 时,必须注意返回输入S+和S-的分配。它们起补偿性能阻抗的目的。当用独立的带有S+ 和S-的电线连接执行器的两个触点时,模拟输出会调节输出电压,以便使动作机构上实际存在的电压为所期望的电压。

如果想要获得补偿,那么执行器必须用 4 根电线连接。这意味着对于第一个通道,需要:

输出电压通过针脚 3 和针脚 6 连接到执行器。

分配执行器的针脚 4 和针脚 5。

如果不想获得补偿,只需在前面的开关上简单的跨接针脚3-4和针脚5-6。

注意事项:因为打开的传感器端子 (S+ 和S-),输出电压被调节到最大值 140 mV (用于 10V)。g 对于此分配,无法保持0.5 %的电压输出使用误差限制。

电位计的采样端和首端连接到 M+,末端连接 M-,并且 S- 和M-连接到一起。

注意: 最大的可带电阻是6K,如果电位计支持直接输出一个可变的电压,那么电位计的首端应该连接V+,M端连接M-。

50:如何把一个PT100温度传感器连接到模拟输入模块SM331?

PT100热电阻随温度的不同其电阻值随之变化。如果有一恒定电流流经该热电阻,该热电阻上电压的下降随温度而变化。恒定电流加在接点Ic+ 和 Ic-上。模拟模块SM331在M+和M-电测定电流的变化。通过测定电压就可以确定出温度。

PT100 到模拟输入组有三类连接:4 线连接可得到最精确的测定值。

2)在 S7-300 系列中,存在一些通过多次测定的模拟输入端。它们规定出公共返回线的线电阻并作数学补偿。所获精确度几乎与 4 线连接可比美。这样模块的一个例子就是SM331(MLFB号6ES7 331-7PF00-0AB0)。

3)所给出的公式仍然适用于主要的物理关系,但并不包含确定 PT100 电阻的有效测定过程。

51:可以将 HART 测量转换器连接到 SIMATIC S7-300 系列常规的模拟输入模块吗?

如果不需要 HART 测量转换器的其它 HART 特性,还可以使用其它 S7-300 模拟输入模块。例如,可以使用模块 6ES7 331-7KF0x-0AB0 或一个带隔离的 4 通道模块(如 6ES7 331-7RD00-0AB0)。为此,将积分时间要设置为 16.66ms,20ms 或 100ms。对于连接到手持式设备,或与手持式设备通信,电路中必须串接一个

52:如何避免SM335模块中模拟输入的波动?

检查是否正在使用的安装在绝缘机架上的未接地传感器或检查您的传感器是否接地。

安装在绝缘机架上的传感器:尽可能通过最短路径(可能的话,直接连接到前端的连接器)将接地端子 Mana (针6)连接到测量通道M0(针10),M1(针12),M2(针14)和M 3(针16)以及中央接地点(CGP)。

接地传感器:确保传感器有良好的等电位连接。然后把从 M 到 Mana和到中央接地点的连接隔离起来。请将屏蔽层置于两侧。

53:在S7-300F中,是否可以在中央机架上把错误校验和标准模块结合在一起使用?

在S7-300F的中央机架上,可以混合使用防错和非防错(标准)数字E/A模块。为此,就像在ET200M中一样,需要一个隔离模块(MLFB: 6ES-0XA0),用来在中央和扩展机架中隔离防错模块和标准模块。

请遵守以下安装原则:标准模块(IM、SM、FM、CP)必须插到隔离模块左侧的插槽中,防错数字E/A模块必须插到隔离模块右侧的插槽中。

54:可以将来自防爆区 0 或防爆区 1 的传感器 / 执行器直接连接到 S7-300 Ex(i) 模块吗? 不能连接来自防爆区 0 的传感器/执行器。但可以直接连接来自防爆区 1 的传感器/执行器。 Ex(i) 模块是按照 [EEx ib] IIC 测试的。因此,模块上有两道防爆屏障。然而,必须获得[EEx ia]认可才能用来自防爆区 0的传感器 /执行器。(模块上将应该有三道防爆屏障)。

举个例子,如果您想在一个冗余的ET 200M站中使用FM 355 或者FM 355-2 ,那么请注意以下的重要事项:

有两个功能块可用于连接FM 355。举个例子,如果需要使用“运行过程中更换模块” (热插拔)功能,您可以使用订货号为 6ES7 153-2BA00-0XB0 的IM 153-2 HF 接口模块的高级特性。在这种情况下,当使用“硬件配置”软件进行组态时,您必须激活“运行过程中更换模块”( 热插拔)功能。IM 153-2 和所有的SM/FM/CP 都要插在激活的总线模块上

56:将第一个FM 352-5 的输出与第二个FM 352-5 的输入直接相连时,有哪些注意事项?

6ES7 352-5AH00-0AE0 有 M 型沉没输出,该输出只有在每个输出端先加一个插拔电阻时才可用,推荐插拔电阻的规格: 2,2 kOhm / 0,5 W. 确保开关盒内有短路连接。此种情况下的操作频率可高达 100 kHz。

步骤:当完成了FM和系统的启动后,必须创建一个系统数据块(SDB >=1000)并将它储存在 PG 上。在这个SDB中储存FM的全部参数化数据(DB/横移程序,机器数据,递增尺寸表等)。 把此SDB传送到 CPU 或者传送到 CPU 的存储卡上。

58:在 FM 350-2 上如何通过访问 I/O 直接读取计数值和测量值?

FM 350-2 允许最多 四个计数值或测量值直接显示在模块I/O上。可通过使用“指定通道”功能来定义哪个单个测量值要显示在 I/O 区。根据计数值或测量值的大小,必须在“用户类型”中将数据格式参数化为“Word”或“Dword”。如果参数化为“Dword”,每个“用户类型”只能有一个计数值或测量值。如果参数化为“Word”,可以读进两个值。在用户程序中,命令 L

59: FM357-2 用绝对编码器时应注意什么?

FM357-2的固件版本为V3.2/V3.3在下列情况下绝对编码器的采样值可能会不正确, FM357-2固件版本为V3.4时这些问题将被解决。

1) FM357-2启动失败。例如,在启动窗口中定义的时间内掉电。

2) FM357-2在运行中拔插编码器的电缆。

3) 模拟的情况下。例如,FM357-2 在无驱动的情况下准备运行。

60:如何把一个初始值快速下载进计数器组 FM350-1 或 FM450-1 中?

对于有些应用场合,重要的是,当达到某个比较值时要尽快地把计数器复位为初始值。此外,通常在复位时需要进行一系列计算,以确定下一个比较值(以便优化原料的交点)。没有标准功能FC CNT_CTRL也可以选择进行一次复位。

为了快速把计数器复位,如下进行来组态计数器: 在计数器模块的“属性”对话框中的“基本参数”区内,将选项 生成中断设成“是”,然后将中断选择设成“过程”。这样,在复位时会生成一个中断。 在“输出”参数标志中组态数字输出DQ0,以便在达到比较值时激活它。 在“输入”参数标志中的“设置计数器”域中,设置选项“多个”。

注意事项:在关联通道数据块中,必须将位 DBX 27.0 或 DBX 27.1 ( CTRL_DQ0) 设置为 1,以便使设置按正确的方向进行。在“中断释放”参数标志中,选择选项“设置计数器”,以便在数字输入 SET处出现一个上升沿时触发该中断。 功能模块 FM 350-1 / FM 450-1 的数字输入 I2是用于把计数器重置为初始值的。该输入与数字输出 Q0

注意事项:在关联通道的数据块中,必须预先将数据双字DBD 14(LOAD_VAL)设置为初始值(如 L#0)。数据双字 DBD18 (CMP_V1)必须设置成比较值。必须通过在 FC 上置相应的触发位一次来用 FC CNT_CTRL 把这些值传送到 FM 去。

要检查一下,首先在软件组态中要选择编码器类型(为24V),再检查一下,FM350-1侧面的跳线开关,因为缺省的开关设置为5V编码器,一般用户没有设置,开机后,SF灯就会常亮 。另外,还可以看看在线硬件诊断,可以看看错误产生的原因,是否模板坏了。

62: FM350-1的锁存功能是否能产生过程中断?

FM350-1的锁存功能是不能产生过程中断,但是可以产生过零中断。

FM350-1的装载值必须为零,随者锁存功能的执行(DI的上升沿开始),当前的计数值被储存到另一地址然后置为初始值零,产生过零中断,在OB40中可以读出中断并相应的值。锁存值也可以从FM350-1的硬件组态地址的前4个字节中读出。

63: 在FM350-1中,怎样触发一个比较器输出?

FM350-1中自带的输出点具有快速性、实时性,不必要经过CPU的映像区处理。输出点一般对应于比较器,首先在硬件组态中定义比较器输出类型,如:输出值为1或为脉冲输出,然后在程序中设置比较值。在FM350-1中,地址在通讯DB(UDT生成)块中为18(比较值1)、22(比较值2),类型为DINT,然后激活输出点28.0(DQ0)、28.1(DQ1),这样比较器就可以工作了。

64:在FM350-2中,工作号的作用是什么?

工作号是S7-300CPU与FM进行通讯的任务号,每次的交换数据只是部分数据交换,而非全部数据,这样可以减少FM的工作负载,工作号又分写工作号和读工作号,例如在FM350-2中指定DB1为通讯数据块,如果把写工作号12写入到DB1.DBB0中,把200写入到DB1.DBD52中,再调用FC3写功能,这样第一个计数器的初始值为200,这里工作号10的任务号是写第一个计数器的初始值,DB1.DBB0为写工作号存入地址,DB1.DBD52为第一个计数器装载地址区,同样读工作号100为读前4路,101为读后4路计数器,读工作号存入地址为DB1.DBB2。 但写任务不能循环写,只能分时写入。

65:如果对于4-20 mA模拟量输入模块来说,小于4 mA后转换的数字量是多少?

如果小于4ma,那么将会是输出负值,例如 -1对应的是3.9995mA,而1.185 mA 时,这个数值是-4864 (10进制)但是如果小于1.185mA,如果禁止断线检测,这个值是8000(16进制)如果有断线检测,会变成7FFF(16进制)。

66:怎样对模拟量进行标准化和非标准化?

1.在块FC164中,x和y都是整数。

67:S7系列PLC之间最经济的通讯方式是什么?

MPI通讯是S7系列PLC之间一种最经济、数据量最小的一种通讯,需要做连接配置的站通过GD通讯,GD通讯适合于S7-300之间,S7-300、S7-400、MPI之间一些固定数据的通讯。不用作连接的MPI通讯适用于S7-300之间、S7-300与400之间、S7-300/400与S7-200 系列PLC之间的通讯,建议在OB35(循环中断100ms)中调用发送块,在OB1(主循环组织块)调用接收块。

68:整个系统掉电后,为什么CPU在电源恢复后仍保持在停止状态?

整个系统由一个DP主站S7-300/400以及从站组成。而从站通过一个主开关被切断了电源。由于内部的CPU电压缓冲器,CPU 仍继续运行大约50ms到100ms。此阶段里 CPU 识别出所连接的从站的故障。如果没有编程OB86和OB122的话,CPU 就会因为这些有故障的从站而继续保留在停止状态。

69:在点到点通信中,协议 3964(R)和RK 512 之间的区别是什么?

这两个协议的主要区别在于消息报头和响应消息的不同。使用RK 512,提供有最高的数据完整性,程序 3964(R) 当传送信息数据时,程序 3964(R)将控制字符(安全层)添加到信息数据上。这些控制字符激活通信伙伴,检查数据是否全部接收,是否无错误。

70:当一个DP从站出故障,如何在输入的过程映像被清成“0”以前保存它们?

当一个DP从站出故障时,OB86(通过S7-300/400)被调用。可用下列方法“保存”输入的过程映像:

1. 把从站的所有输入循环地复制到一个独立的区里。

2.如果从站出问题,则 OB86 被启动。在此 OB 里你可设一个标志位来可防止进一步的循环复制操作。

3. 当从站返回总线后,你把 OB86 里的标志位复位。

71:对模拟量模块而言,如何处理未使用的通道?

对于SM 331-7NF10-0AB0模块在4通道模式:禁止未用的通道,这些输入端悬空即可

对于Ex模块SM 331-7RD:未使用的通道可以保持悬空72:上位机与plc进行通讯,硬件都需要哪些?

73:当试图通过TeleService建立PRODAVE MPI和样列程序之间的通讯时,为什么会出现出错消息4501?

调制解调器没有响应,并产生了出错消息4501。在这个情况下,工作站的规范不正确。 在TeleService对话框中检查工作站的名称和工作站(standort)规范。此处可能有个不正确的缺省设删除“station”(“standort”)域中的缺省名,或输入正确的工作站名。那么就可以使用调制解调器在PRODAVE MPIY和TeleService之间建立连接。

74:是否可以将数据块的当前值作为初始值从AS传送到项目中?

可以。从AS中“ONLINE,打开相关数据块(DB).使用软盘图标“OFFLINE”保存DB.

75:在通讯任务中,在哪些OB中必须调用SFB?

在启动型OB(如用于S7-300的OB100和用于S7-400的OB100和OB101)和循环模式OB(OB1)中,必须调用数据通讯或程序管理(把PLC切换到STOP或RUN)所需的所有SFB。 OB100是启动型OB,并在重新启动CPU时运行。例如,在该OB中,用标记M1.0和M0.1来释放第一个通讯触发器。

76:怎样编程间接访问一个ARRAY类型变量的元素?

一个位、字节或者字符域的尺寸是按照字节限制排列的——在所有其它情况下是按照字对齐的。表T6-1中给出了一个域的存储示例。操作系统计算域中单个元素末端位置的位地址。域被分配到从下一个字地址(或字节地址)。下一个数据类型从下一个整字开始(或者整字节).

在声明部分,必须定义一个与将被间接寻址的ARRAY有着同一结构的ARRAY。不一定非要将ARRAY声明为IN-OUT变量;也可以声明为TEMP、IN或OUT变量。

域宽度(OFFSET)在网络中定义。ARRAY中的单个元素的最小常规数据宽度是一个字节;即使在两个变量之间定义一个BOOL。有必要确定相关的域的宽度和确定下一个期望域的起始地址。可使用下面的算法: 地址(指数):b = 元素长度*(指数 - 1)

创建具有不同数据类型的结构时,必须注意,在特定的环境下可能会自动插入填充字节。

保存ARRAY数据类型

多维域是按照顺序保存的。在本例中整数 [1,1]后面是整数 [1,2],整数 [1,3]后面是整数 [2,1]。

STEP 7以 6 个字节保存POINTER参数。显示了用于保存POINTER参数类型的内存区域以及每个字节中保存的数据。POINTER参数类型保存了下列信息: DB号(如果DB中没有保存任何数据时为0)。 CPU中的内存区域(表格中列出了不同内存区域的十六进制代码)。 数据的地址(按照Byte.Bit格式)。

如果将形式参数声明为POINTER参数类型,则只需要指定内存区域和地址。STEP 7自动将输入项目的格式转换为指针格式。

78:因为总是要首次调用Alarm8P(SFB35)块,怎样避免OB 1初始化过程花费太长时间?

激活(首次调用)报警块Alarm(SFB33)、A larm_8(SFB34)和Alarm_8P(SFB35)比简单地执行作业检查需要多花费 2 到 3 倍的运行时间。当传送告警时,块的运行时间也会同样长。 然而警报通常不会成群发生,当编程时,需要注意警报块的首次调用,因为此处用到的所有块需要很长的运行时间,因此被调用OB的运行时间在某些情况下将显著增加。将警报块的首次调用移动到OB 100/101/102,可以将较长的运行时间转换到启动过程。此处处理时间也会较长,但是由于与模块的参数设置同时进行,启动时间不会太长。

79:当不能卸载STEP 7时,该怎么办?

设法通过控制面板卸载STEP 7。如果安装文件已损坏,卸载程序常会出错,并伴随出错信息。 另外STEP 7 CD包含文件Simatic STEP7.msi。可以通过这个文件卸载STEP 7。

选项删除MMC卡上原有的内容,这样MMC就可以作为一个未加密的空卡使用了,但无法对MMC卡进行jie密,读取MMC卡中的程序或数据。

81: 以314C为例计数时如何清计数器值?

2:利用写“Job”的方式,写计数值的任务号为1。

83:为什么CP342-5 FO无法建立通讯?如何配置?

84:CP342-5的3中工作方式有什么区别?

No DP方式下:可以用CP342-5通讯口进行S7编程或进行PROFIBUS的FDL连接,连接人机界面;

DP Master方式下:CP342-5除了作为网络中的PROFIBUS主站之外,也可用于S7编程、FDL连接和连接人机界面。DP delay time参数一般不需设定,除非您采用FDL连接时,要与DP的I、O点刷新时间相一致,才根据PROFIBUS网络性能进行调整;

85:CP342-5 最多能完成多少数据交换?

DP主站时,最多链接 124个从站,和每个从站最多可以交换244个输入字节(Input)和244个输出字节(Output),与所有从站总共最多交换2160个输入字节和2160个输出字节。CP342-5 作为从站时,与主站最多能够交换240个输入字节和240个输出字节。CP342-5 可以最多连接16个操作面板(OP)以及最多创建16个S7 Connnection。

86:如何实现在从站断电、通讯失败或从站通讯口损坏等现象出现时,主站能够不停机?

需要在您的STEP7项目中插入相应组织块。插入这些组织块时,不需要编程内容,当从站断电、通讯失败等现象出现时,主站只报总线故障,但不停机。这样,无论从站先上电,还是主站先上电,系统都能正常运行:

87:CP342-5连接上位机软件或操作面板时应该选择什么工作模式?

如果您只是用CP342-5连接上位机软件或操作面板(OP),这时通讯采用的是S7协议,那么建议您选择No DP模式,并且不需要调用FC1(DP_SEND)和FC2(DP_RECV)功能块,它们只是在PROFIBUS DP通讯时才使用;

88:为什么系统上电后,即使CP342-5开关已经拨至Run,但始终处于STOP状态?

应当检查STEP7程序和组态是否正确(删除程序,只下载硬件组态)、检查CP342-5连接的24V电源线是否正常、M端是否与CPU的M端短接、通讯电缆连接是否正确(确认通讯电缆未内部短路),CP的firmware是否正确。如果您确认可以排除以上原因,那么可能您的CP342-5已经损坏,请更换;

1.在STEP7中生成一个新的项目,并插入一个S7-300站。

2.在硬件组态窗口中选择一个S7300的导轨以及相应的CPU。

PROFIBUS从站的通讯,必须调用FC1(DP_SEND)和FC2(DP_RECV)功能块,实现CPU与CP342-5之间的数据交换,而CP342-5与PROFIBUS的数据交换是自动完成的,不用编程。FC3和FC4用于诊断和通讯功能的控制,一般不用调用。

6.点击OK ,存盘编译。.

2.重复以上组态从站步骤的2-4步,注意插入CP342-5时,不能点击”new…”按钮,而直接用鼠标选中以上创建的PROFIBUS(1)网络,点击OK;

91:采用CP342-5的DP通讯口与采用CPU集成的DP通讯口进行通讯有什么不同,这两种通讯口功能有什么不同?

可以通过CPU集成的DP通讯口或CP443-5模板的DP通讯口,调用Load/Transfer指令(语句表编程,如图2)、Mov指令(梯形图编程)或系统功能块SFC14/15访问从站上的I/O数据;

如果您使用342-5模块的DP通讯口进行通讯,那么您就不能使用Load/Transfer指令(语句表编程)、Mov指令(梯形图编程)直接访问PROFIBUS从站的I/O数据。采用CP342进行PROFIBUS通讯包括两个步骤:

1.CPU将数据传输到CP通讯卡的数据寄存器当中;

2.数据从CP342-5的数据寄存器当中写到PROFIBUS从站的Output数据区(反过来就是CPU读取从站Input数据的过程);CP342-5与从站的Input/Output数据区的通讯过程是自动进行的,但是您还必须自己手动的调用功能块FC1(”SEND”)和FC2 (”RECV”),完成CP342-5与CPU之间的数据交换。

92:功能块DP_SEND、DP_RECV'的返回值代表什么意思,如何理解?

'DPSTATUS'四个参数,用来指示数据传输的状态和成功与否。您可以定义相应的数据地址区,存放这些返回值,分析返回的值的意思,当Error=False,STATUS=0,DONE=True,NDR=True时,说明CPU与CP342-5之间的数据交换成功进行。

93: DP从站,CP模板以及CPU之间的数据通讯过程是如何进行的?

,用来存放所有PROFIBUS从站的的I/O数据,较新版本的CP342-5模板内部存储器的Input和Output区分别为2160个字节,Output区的数据循环写到从站的输出通道上,循环读出从站输入通道的数值存放在Input区,整个过程是CP342-5与PROFIBUS从站之间自动协调完成的,您不需编写程序。您可以在PLC的用户程序中调用'DP_SEND'和'DP_RECV'功能块,读写CP342-5这个内部的存储器。

94:通过CP342-5,如何实现对PROFIBUS网络和站点的诊断功能?

用功能块'DP_DIAG' (FC 3) 可以在程序中对cp模块进行诊断和分析,可以通过job类型如DP 诊断列表,诊断单个dp状态,读取dp从站数据,读取cp或cpu的操作模式,读取从站状态等等。

当S7-300系统中的CP342-5作为DP主站,下挂IM153-2 模块时,IM153-2只能作为DP主站,而不是S7从站运行。 可以采取通过GSD文件将ET200从站组态进你的系统。随后IM153模块可作为 DP 标准从站运行。为此,您必须将GSD文件安装到硬件目录中(通过菜单序列Tools > 'Install new GSD

96:在STEP7中打开一些对象时出错是什么原因?

有的时候您在打开某些项目中的对象时,STEP7会弹出报错窗口,错误信息为 ’*.dll’文件无法被装载,代码是257:5,

错误信息是一个或多个对象不能被显示,出现这种错误的原因是您没有安装与要打开对象相关的软件包。

97:如果想通过上位或触摸屏对PLC中S5TIME类型的参数进行设定,有什么方法?

Off)将该值转换为双整形,然后将该值写到类型为TIME的变量里,在程序中调用FC40,将TIME转换成S5TIME即可。

2、 从上位机写WORD到PLC,首先该数值需包含以某时基为单位的时间值,在写入PLC的数据存储区后,用Word Logic下的WOR_W指令将该值与其时基相或,再利用MOVE指令将得到的数值写入S5TIME类型的变量中。

3、 如果使用WinCC作为上位软件,或上位软件支持32位带符号浮点数,可以从上位写32位带符号浮点数到PLC中定义为TIME的变量,然后在程序中调用FC40,将TIME转换成S5TIME即可。

98:STEP 7中相关时间处理和转换的功能块有哪些?

99:如何实现带电拔出或插入模板,即热插拔功能?

硬件要求: 使用普通的S7-300导轨和U型总线连接器是不能实现热插拔功能的,您必须购买有源总线底板,才能实现该功能。另外,您在配置时,必须使用MLFB 6ES7 153-1AA02-0XB0版本以上的接口模块,因为它支持DP协议的DPV1版本,而MLFB IM153-1AA00-0XB0模块是不支持该功能的。目前您能够购买到的IM153接口模块都支持热插拔,只有2-3年以前的IM153接口模块不支持热插拔。

软件要求:您必须在STEP7 5.1版本以上进行配置;

3:选择I/O模块,插入到ET200M站的各个槽位中;

5:属性窗口中提供了ET200M站热插拔功能所需的有源总线导轨的订货号;

6:属性窗口中提供了该型号IM153,插入的I/O模块对应使用的有源总线底板的订货号;

如果您采用S7-300 CPU 或 CP 342-5作为DP主站,那么您只能够通过安装GSD文件的方式将IM153模块组态成DP从站,并双击IM153,打开它的属性窗口,进行设置。否则您在STEP7的硬件组态窗口中直接将PROFIBUS DP目录ET200M文件夹下IM153模块挂在PROFIBUS总线上。

100:我如何做到对自己的程序块进行加密保护?

您能够通过STEP7软件的KNOW_HOW_PROTECT功能实现对您程序代码的加密保护。

如果您双击鼠标打开经过加密的程序块时,您只能看到该程序块的接口数据(即IN, OUT 和 IN/OUT 等类型的参数)和注释信息,而程序块中的代码及代码的注释,临时/静态变量是不能被看到的。同时您也无法对加密保护的程序块做出任何改动。

2. 将要进行加密保护的程序块生成转换为源代码文件(通过选择菜单 File— ;Generate source 生成);

6. 现在就完成了您程序块的加密保护;

101:我如何做到对自己的程序块进行解密?

取消对程序块的加密保护

1. 打开程序块的Source源文件;

现在程序块的加密保护已经取消。

注意: 如果没有 STL source 源文件,您是无法对已经加密的程序块进行编辑的.

}

我要回帖

更多关于 python系统错误 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信