第7步 - 如何调用循环中断

时间:2014-07-01 12:23:53

标签: logic plc

我想从OB1调用循环中断,我想生成中断的持续时间。我知道我可以将某种计数器/计时器放入FB中并以某种方式生成该计时器的值。但是我不知道如何在循环中执行它,所以我不必按下按钮或开关。

谢谢。

编辑: 我认为自己是一名PLC初学者。 :)

我最初不打算使用真正的SIMATIC站,因此我将使用PLCSIM来测试我的应用程序(程序)。循环中断我的意思是像OB30 - OB38。

它应该像这样工作:

  1. 我将输入设置为“Logical 1”,这将初始化循环。 (我不确定是否有必要)

  2. 现在一个非常简单的程序将在循环中执行(设置/重置线圈) - 这只是一个例子,并且程序现在正在做什么并不重要。

  3. 在执行过程中的某个地方会发生中断。我认为这可能是一个函数,我将设置一个随机生成持续时间值的计时器。

  4. 在函数执行之后/期间(从“3”开始),我需要将生成的值保存在DB中。

  5. 现在“2”到“4”应该在“永不结束”的循环中执行,直到我从“1”设置输入。逻辑0。

3 个答案:

答案 0 :(得分:1)

无法从OB1调用中断。只有循环,故障和硬件中断可用。 通过使此函数调用/块的使能输入为高电平,在定时器就绪时使用正在调用的FC或FB。它不会像中断一样被直接调用,但足够快。

我认为你将PLC与微控制器混淆了。 为什么在输入高时需要直接执行代码?这是安全需求还是运动?

答案 1 :(得分:1)

我来这里寻找类似的东西。 由于我找不到我需要的东西,我只是冒险并在正在运行的工厂上尝试。好事没什么可吹的,所以一切都很好。

现在,回答简单:

  • 在S7的硬件配置上配置循环中断。

  • 我将OB35用于我的目的,即创建1ms的分辨率时间计数。(CPU 315计时器分辨率仅为10ms)

  • 在硬件配置中双击CPU然后循环中断并将执行时间设置为1(1毫秒,这是我的情况,你的可能会有所不同)。

  • 然后我创建了一个基本的基本计时器,正是我所需要的,因为我在西门子门户网站上看到,如果OB35上的代码太多,可能会在此时间内解决CPU停止问题。

    < / LI>
  • 最后,OB35的第一个梯级是临时变量的'add'1指令,第二个是在达到给定的ms数时重置。

  • 如果您需要添加执行条件,那么只需在第一行上设置启用位即可停止计数。

请注意,OB35不需要被“调用”CPU将以选定的时间间隔为您调用它(在硬件配置下设置)

问候

答案 2 :(得分:0)

据我所知,循环中断由PLC本身以预先规定的间隔(或通过使用硬件中断)调用。这不是你可以在程序中使用计时器调用的东西(我理解你的问题)。

如果我做对了,你想连续运行一个循环,然后不时地中断循环以生成一些数据,然后在循环结束之前存储这些数据。

在这种情况下,我可以建议您将数据包含在内并将代码存储到循环中吗?您也可以使用在这种情况下计划的相同触发器。您只需使用它跳过执行数据生成/存储位的代码,当它不活动时。

与进行真正的中断相比,在这里你最多会失去一些MS的时间,如果这在某种程度上是不可接受的,那么你应该考虑使用其他类型的设备而不是PLC。