技术论坛

 关于定时中断与中断事件号的对应关系

返回主题列表
作者 主题
WWCWWC
至圣

经验值:71992
发帖数:8037
精华帖:145
楼主    2018-10-23 10:02:31
主题:关于定时中断与中断事件号的对应关系 精华帖 

关于定时中断与中断事件号的对应关系

   在编辑200 smart时基脉冲或者PID控制等操作时,编程者经常性的需要调用系统资源定时中断。这些定时中断或者通过设置对应的定时时基存储区时间常数或者直接赋值,均可以得到相应的循环“脉冲”,当然这些所谓的脉冲还需要稍微编辑一下简易的程序段获得,这不是重点,重点在下面内容。

   今天,看到有这么一则“讨论”,大致含义是设置一个定时中断,且不需要对应系统定义的存储区时间数据存储区地址也可以获得。一直来我都是遵循西门子官方文档的说明进行的,难道这样也可以?吃了晚饭,也借于刚刚在今天下午“奋战”了4天的设备维保有了一点“眉目”的东风(维保日记后续补上),想验证一番今天下午在论坛中的这个说法。

   仍然按论坛讨论的话题,定义一个定时中断0,官方文档指定时间数据存储区地址为SMB34,对应的定时中断号为10。我这里给它特意连接到定时中断事件号11,看所连接的中断_0是否也可以正常计数。

验证PLC:200 smart CR60,软件:200 smart V2.1

定时中断初始化:


非常简洁的定时中断定义。

注意:

1)官方定义SMB34连接的中断为中断事件号10,我特意指定到定时中断事件号11。

2)从来没有留意过定时中断的时间范围注释是5 – 255mS,可能考虑到PLC程序的扫描时间周期原因而这样解释的。

在主程序OB1中调用定时中断初始化子程序:


指定连接的中断子程序(实现加1程序):


  如果这个可以允许,那么,VW0可以按100mS时间间隔被加1处理,看状态图标运行结果:


注意:VW0真的可以被执行加1操作!

   我开始不淡定了,既然软件可以这么默认,那么,我想“天马行空”了,先连接一个中断事件号0(外部输入I0.0上升沿中断)试试。


   没有被执行了,改为与定时中断相似的中断事件号T32(定时中断事件号21)。


   还是没有执行中断子程序。心里踏实了一下,这个如果能够允许任意对应关系,这个指令也就没有存在的价值了。

   仍然不相信上面的验证,再次,重新将定时事件连接到11,验证:


   声明,该程序仅仅只是图示段部分程序内容,没有其它应用程序段参与。还是有一些“不死心”,把定时中断时间数据SMB35对应到中断事件号10,结果会如何?


   也被执行中断连接子程序内容,再次开始不“淡定”了。依据,依据在哪里?只能打开系统手册看是否有关于定时中断具体解释。

首先,看软件帮助对定时中断时间的注释,图示:


软件中“自动”注释为5 – 255mS,软件帮助中定时中断注释为1 – 255mS,这个可以理解。

在上面的验证中既然“不需要对应”,那么,一个定时中断定义可以连接2个中断?


   验证,仍然可以正常执行。如果这样可以,那么,我按官方定义2个不同功能的定时中断岂不会“乱了朝纲”。为了区分是否存在“干扰”,我有意定义SMB34 = 100;SMB35 = 200mS。


结果是能够被区分的。

   真是“不试不知道,一试还真的被吓一跳”啊。可能V2.3版本的软件在这方面有所改进,有机会我在另一台电脑中测试一下。


shine
至圣

经验值:19840
发帖数:8834
精华帖:39
13楼    2018-10-24 10:35:16
精编帖  主题:回复:关于定时中断与中断事件号的对应关系

你的测试,只是说明了一个情况:

SMB35有一个初始值,即使程序没有设定SMB35,只要你连接了中断事件11,也会按照默认的时间触发中断

你省去给SMB34赋值,直接关联中断呢?中断子程序一样会被执行

shine
至圣

经验值:19840
发帖数:8834
精华帖:39
14楼    2018-10-24 10:43:45
精编帖  主题:回复:关于定时中断与中断事件号的对应关系

建议再增加测试内容:

主程序中:

检测I0.0的上升沿,然后启动T32的延时断开继电器,定时5s,同时对VW0清零

然后在T32的下降沿,读取VW0的值到VW2

修改SMB34的值,进行测试,记录不同SMB34设定时对应的VW2的值,比较VW2的值的变化。

如果VW2的值跟着SMB34的变化而变化,说明这是一个bug,否则,只能证明我在13楼的说法

shine
至圣

经验值:19840
发帖数:8834
精华帖:39
22楼    2018-10-24 14:37:10
精编帖  主题:回复:关于定时中断与中断事件号的对应关系

延时断开定时器。en断开后经过PT时间后断开。其实那个上升沿也是多余的。

M0.0接通,给VW0清零,5s后,在T32的下降沿,读取VW0的值,传递到VW2,记录这5s的计数值。

如果设置SMB34=100,连接中断事件11到int0,那么VW2的值应该是50,实际上,VW2的值是5000左右,测试几次,在5001和5002之间跳动,这个应该是中断和主程序异步造成的误差,而且修改SMB34,不影响VW2的值。说明int0实际上是按1ms周期被调用的,和SMB34没有任何关系。smb35=0,你在5楼说了,实际按1ms执行,中断连接并没有任何错乱

WWCWWC
至圣

经验值:71992
发帖数:8037
精华帖:145
27楼    2018-10-26 09:19:44
精编帖  主题:回复:关于定时中断与中断事件号的对应关系

大家好!

  近段时间一直在忙于抢修一台设备,没有及时验证。

这个问题是我没有完全理解定时中断连接所致,因为开始定义定时中断时,SMB34特意对应定时中断事件号11(原本SMB34应该对应的是定时中断事件号10),造成这2个定时中断均没有完整赋值,那样系统就按1mS时间定义,验证时的错误仅仅是看数据而不去想定时中断的时间是否符合定义的100mS。

  

WWCWWC
至圣

经验值:71992
发帖数:8037
精华帖:145
31楼    2018-10-29 17:09:32
精编帖  主题:回复:关于定时中断与中断事件号的对应关系

回y版:

   结论是我基本功没有打扎实,

按常理出牌可以,稍一变换由于基本功没有扎实,出了“洋相”,非常感谢论坛上几位大侠的指点。

我是在后来验证中找到了当初误解的问题所在,当没有完整定义定时中断时(定时中断时间设置及定时中断事件号没有对应的)系统均按1mS执行定时中断。


您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。