技术论坛

200smar打开200程序后,自由口通讯报错

作者 主题
新手

经验值: 50
发帖数: 3
精华帖: 0
主题:【求助】200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 楼主 2020-05-09 17:24:51

zypump1.zip


    将214-2BD23-0XB8的程序直接下载到288-1SR20-0AA0中使后,200的自由口通讯程序正常使用但是200smart中就是报错:对端口0同时执行XMT/RCV指令。
    希望大神能指导下555~


 
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 1楼 2020-05-09 17:38:39

,看到了。

我下载试试。


 
以下网友喜欢您的帖子:

  
新手

经验值: 50
发帖数: 3
精华帖: 0
回复:200smar打开200程序后,自由口通讯报错


只看楼主 楼主 2楼 2020-05-09 17:40:51
以下是引用WWCWWC在2020-05-09 17:38:39的发言 >1楼

,看到了。

我下载试试。

好哒,谢谢大神


 
以下网友喜欢您的帖子:

  
至圣

经验值: 13019
发帖数: 1815
精华帖: 22
回复:200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 3楼 2020-05-09 17:55:38

      看看特殊寄存器赋值是否正确,波特率对吗,大概看下建议 1:既然已经连了发送完成,接受完成OB,主程序里可以仅处理流程,主程序里可以不写一句发送接收指令 2:自由口最自由灵活方式是字符中断,这个可以考虑。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 4楼 2020-05-09 18:04:25

大致看了一下,没有实际plc测试。

你按我图示修改试试,图示:

我修改的主要目的是:

你的发送指令由M1.0(M2.0)驱动的,而M1.5也有M1.0驱动的(主程序网络4处),这样的逻辑显的不够严谨。

这个问题的原因分析:

当第一次发送指令由M1.0驱动,执行XMT指令。当发送指令完成后,进入发送完成中断。而你在这个这个中断子程序中才复位M1.0,这样就有可能出现2个指令同时激活的可能。从你的描述上也可能看出,虽然程序看似“正常”,因为进入发送完成中断后,马上就可以纠正可能的发送指令M1.0的置位。当然,你还有M2.0还需要分析它的逻辑状况。我这里没有分析。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 5楼 2020-05-09 18:08:06

你试试将XMT指令放在初始化通讯的最后面,就是用SM0.1驱动的那段,目的是规避同时激活(XMT/RCV)指令。

另外,程序稍微再整理一下,逻辑不够严谨。如初始化均写到一起,赋值也同样写在一起,方便阅程序。

程序管理不够严谨,容易出现你不想要的问题。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 6楼 2020-05-09 18:14:46

我在4楼的程序可能仍然会报警,主要还是没有实际测试,因为该通讯是异步的。

建议你发送指令先按5楼的方式测试一下。

自由口通讯发送接收指令我一般是这样写的。

在发送完成中断中写接收指令,在接收完成中断中写发送指令。

而你的发送指令写在OB1,且触发XMT指令的M1.0及M2.0与接收完成指令存在plc周期的差异,另外XMT指令用沿触发。


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4092
发帖数: 565
精华帖: 4
回复:200smar打开200程序后,自由口通讯报错
推荐帖


只看楼主 7楼 2020-05-09 23:47:12


测试看看,太晚了我还没测试


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 4092
发帖数: 565
精华帖: 4
回复:200smar打开200程序后,自由口通讯报错


只看楼主 8楼 2020-05-10 00:27:28

这样应该就不会有问题了:

1



2


3


总感觉源程序怪怪的,为什么启动两个接收指令,还用时间脉冲控制

用中断不是很好嘛,在接收完成后中断程序发下一次请求的数据。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 9楼 2020-05-10 09:36:04

,我知道这里一定会有爱好者出现的。

我一直感觉,让我看别人的程序是一件非常非常痛苦的事情,

我建议:

1)在OB1中定义好通讯初始化,赋值后,启动发送XMT;

2)在发送完成中断子程序中编辑接收指令;

3)在接收完成中断子程序中编辑发送指令。

这样,可以规避这个问题。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 10楼 2020-05-10 09:38:57

@sangshunyang:在原程序基本上修改虽然可以,但需要化一定的时间去认识原程序,到不如按自己的思路重新编辑快。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 11楼 2020-05-10 12:00:12

我测试了一下,用串口调试软件监控,第一次XMT发送指令可以的。





 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 12楼 2020-05-10 12:28:25

你这样测试一下,取消在OB1网络25中的M2.0触发XMT指令,改到中断_1子程序中,图示:

你测试一下,这样的控制是否可以。



 
以下网友喜欢您的帖子:

  
至圣

经验值: 72010
发帖数: 8043
精华帖: 145
回复:200smar打开200程序后,自由口通讯报错


只看楼主 13楼 2020-05-10 13:01:55

我这样让你测试的先决条件是在接收指令完成前,必须给M2.0使能。

不然,还不能够这样简单的处理。


 
以下网友喜欢您的帖子:

  
新手

经验值: 50
发帖数: 3
精华帖: 0
回复:200smar打开200程序后,自由口通讯报错


只看楼主 楼主 14楼 2020-05-10 14:41:21
以下是引用sangshunyang在2020-05-10 00:27:28的发言 >8楼

这样应该就不会有问题了:

1



2


3


总感觉源程序怪怪的,为什么启动两个接收指令,还用时间脉冲控制

用中断不是很好嘛,在接收完成后中断程序发下一次请求的数据。


还是老错误,真是搞不懂为什么会这样哦


 
以下网友喜欢您的帖子:

  
至圣

经验值: 18067
发帖数: 1524
精华帖: 2
回复:200smar打开200程序后,自由口通讯报错


只看楼主 15楼 2021-02-20 16:42:50

学习一下,谢谢。


我回来了!继续努力!
以下网友喜欢您的帖子:

  
侠士

经验值: 1941
发帖数: 106
精华帖: 0
回复:200smar打开200程序后,自由口通讯报错


只看楼主 16楼 2021-02-22 07:35:32

学习了,谢谢


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1926
发帖数: 181
精华帖: 0
回复:200smar打开200程序后,自由口通讯报错


只看楼主 17楼 2021-04-07 09:20:28

学习了,值得分享


工控菜鸟
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
200smar打开200程序后,自由口通讯报错
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。