技术论坛

200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?

作者 主题
游士

经验值: 162
发帖数: 26
精华帖: 0
主题:【求助】200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 楼主 2020-03-25 15:54:40

在西门子官网中200smart 自由口中断历程中,MAIN XMT发送指令完成后调用INT0中的RCV指令,在INT1中启用了定时中断SMB34,定时完成后执行INT2,执行发送指令,然后循环执行接收。。。。

请教下在XMT和rcv之间增加的定时中断SMB34的作用?是为了在发送与接收之间增加缓冲时间避免数据叠加吗???请了解的高手答疑解惑。不用定时中断可以吗?

图1至4 分别为main、int0、int1、int2程序


 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1615721&b_id=64&s_id=0&num=12

奇侠

经验值: 5526
发帖数: 642
精华帖: 0
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 1楼 2020-03-25 16:11:18

可以不用定时中断。用其它条件也可以,例如接收的数据定义一个结束符,当收到结束符是在转到发送。


业精于勤荒于嬉
以下网友喜欢您的帖子:

  
至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 2楼 2020-03-25 17:03:20

通讯口从接收到发送转换需要时间,好像不同波特率时间还不一样。

今天晚上本论坛有个串口课程,你可以听听。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17197
发帖数: 2948
精华帖: 6
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?
推荐帖


只看楼主 3楼 2020-03-26 16:16:50

 200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?

可以不用。最简单是使用定时器来启动通讯,当然在某些情况下会损失一点点快速性。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72017
发帖数: 8045
精华帖: 145
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?
推荐帖


只看楼主 4楼 2020-03-26 16:47:58

  先不说通讯那一些事情,来说说定时中断,所谓定时中断即在规定的控制字节SMB34(定时中断_0或者SMB35定时中断_1)设置中断时间1~255mS。当所设置的时间到,plc会优先执行定时中断。当然,如果有其它中断同时到达,系统会根据中断的优先权高低,执优执行权限高的中断子程序,这里不展开讨论。

  回到本话题,如果在通讯程序中加入定时中断,那么,可以想象无论通讯在什么阶段(不亚于发送、接收、空闲3个阶段),当定时中断时间到,被要求执行发送指令,问题就在此了,即通讯链路上只能允许有一条指令有效,要不发送有效,要不接收有效,绝对不允许2条以上的指令有效!

  在西门子200(smart)系统中,允许有几个关于通讯的中断,即发送完成中断和接收完成中断,其中,prot口的发送完成中断(中断事件9)、接收完成中断(中断事件23)。

  为规避上面可能的错误,可以在发送完成中断中编辑接收指令,在接收完成中断中编辑发送指令。至于问题是发送a、b、c呢?还是发送e、f、g呢?这个完全可以在控制程序中实现。上述仅是对调用定时中断在此处应用的一点认识,不足之处请斧正。





 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 5楼 2020-03-26 17:49:46

要看另一方设备是否能够及时从发送切换成接收。这个计时是为这个而设的。


 
以下网友喜欢您的帖子:

  
游士

经验值: 162
发帖数: 26
精华帖: 0
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 楼主 6楼 2020-03-27 10:24:30

谢谢各位的回复,


 
以下网友喜欢您的帖子:

  
游士

经验值: 162
发帖数: 26
精华帖: 0
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 楼主 7楼 2020-03-27 10:42:49
以下是引用WWCWWC在2020-03-26 16:47:58的发言 >4楼

  先不说通讯那一些事情,来说说定时中断,所谓定时中断即在规定的控制字节SMB34(定时中断_0或者SMB35定时中断_1)设置中断时间1~255mS。当所设置的时间到,plc会优先执行定时中断。当然,如果有其它中断同时到达,系统会根据中断的优先权高低,执优执行权限高的中断子程序,这里不展开讨论。

  回到本话题,如果在通讯程序中加入定时中断,那么,可以想象无论通讯在什么阶段(不亚于发送、接收、空闲3个阶段),当定时中断时间到,被要求执行发送指令,问题就在此了,即通讯链路上只能允许有一条指令有效,要不发送有效,要不接收有效,绝对不允许2条以上的指令有效!

  在西门子200(smart)系统中,允许有几个关于通讯的中断,即发送完成中断和接收完成中断,其中,prot口的发送完成中断(中断事件9)、接收完成中断(中断事件23)。

  为规避上面可能的错误,可以在发送完成中断中编辑接收指令,在接收完成中断中编辑发送指令。至于问题是发送a、b、c呢?还是发送e、f、g呢?这个完全可以在控制程序中实现。上述仅是对调用定时中断在此处应用的一点认识,不足之处请斧正。




有个疑问,我发的程序实例中,当INT0接收完成后调用INT1,在int1中执行MOVB 10,SMB34这个指令,是每次int1被调用后,才这个定时才开始计时吧,不然也不会是每次按定时时间延迟10ms执行XMT发送,不知道这样理解对不。

如果不是按照定时时间10ms发送,这个指令MOVB 10,SMB34,放在主程序初始化一次就行吧?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 17408
发帖数: 6225
精华帖: 18
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 8楼 2020-03-27 11:38:50

int1中执行MOVB 10,SMB34

那么在定时中断里要DTCH这个中断,要不就乱了。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72017
发帖数: 8045
精华帖: 145
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 9楼 2020-03-27 11:54:09
以下是引用手机18043155123在2020-03-27 10:42:49的发言 >7楼

有个疑问,我发的程序实例中,当INT0接收完成后调用INT1,在int1中执行MOVB 10,SMB34这个指令,是每次int1被调用后,才这个定时才开始计时吧,不然也不会是每次按定时时间延迟10ms执行XMT发送,不知道这样理解对不。

如果不是按照定时时间10ms发送,这个指令MOVB 10,SMB34,放在主程序初始化一次就行吧?

以下是引用WWCWWC在2020-03-26 16:47:58的发言 >4楼:  先不说通讯那一些...

引用4楼详细内容:

  先不说通讯那一些事情,来说说定时中断,所谓定时中断即在规定的控制字节SMB34(定时中断_0或者SMB35定时中断_1)设置中断时间1~255mS。当所设置的时间到,plc会优先执行定时中断。当然,如果有其它中断同时到达,系统会根据中断的优先权高低,执优执行权限高的中断子程序,这里不展开讨论。

  回到本话题,如果在通讯程序中加入定时中断,那么,可以想象无论通讯在什么阶段(不亚于发送、接收、空闲3个阶段),当定时中断时间到,被要求执行发送指令,问题就在此了,即通讯链路上只能允许有一条指令有效,要不发送有效,要不接收有效,绝对不允许2条以上的指令有效!

  在西门子200(smart)系统中,允许有几个关于通讯的中断,即发送完成中断和接收完成中断,其中,prot口的发送完成中断(中断事件9)、接收完成中断(中断事件23)。

  为规避上面可能的错误,可以在发送完成中断中编辑接收指令,在接收完成中断中编辑发送指令。至于问题是发送a、b、c呢?还是发送e、f、g呢?这个完全可以在控制程序中实现。上述仅是对调用定时中断在此处应用的一点认识,不足之处请斧正。




@手机18043155123:

  首先先解释一下中断,当定义一个或者多个中断后,中断的执行是一个循环周期的,把它理解为一个沿脉冲后面的程序段是类似的道理。定时中断:每进行到定义的时间就循环执行一次。

  你在int_0是接收中断所连接的子程序,并且在这个中断子程序中定义定时中断_0(SMB34) = 10 mS,这个10mS时间你是用来执行发送XMT指令的,那么,当执行中断INT_0后的10mS后,系统每10mS被执行一次发送。这样的逻辑一定是有问题了,这是逻辑的错误,也是我看到在4楼想要单独说明的问题。

  你另一个问题是在INT_0子程序中定义定时中断,中断的定义仅仅只需要一次,如特殊标志位SM0.1使能就可以,当然,你在INT_0中使能加中断次数也是可以的,目的只是定义中断初始化仅仅只需要一次。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72017
发帖数: 8045
精华帖: 145
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 10楼 2020-03-27 14:11:54

@手机18043155123:

   官方有此例子?请标明出处(链接)。


 
以下网友喜欢您的帖子:

  
游士

经验值: 162
发帖数: 26
精华帖: 0
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 楼主 11楼 2020-03-27 14:51:42
以下是引用WWCWWC在2020-03-27 14:11:54的发言 >10楼

@手机18043155123:

   官方有此例子?请标明出处(链接)。

http://www.ad.siemens.com.cn/service/article/s7-200/s7-200freeport/default.aspx   这个下方有个发送历程,就是我发的程序


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?


只看楼主 12楼 2020-03-27 15:32:08

要不要定时中断?这个不一定,延时还是要的。

具体延时多少,由两个因素决定:

延时的最短时间由通讯的接收/发送转换时间决定,必须要大于这个转换时间

最长时间由通讯伙伴的超时时间决定,必须在这个时间内做出响应,否则通讯伙伴会认为你没有接收到信号


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
200SMART 自由口通讯,发送与完成中断间需要增加定时中断吗?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。