首页 上一页 1 2 下一页 尾页

两台1200使用TCP,编写两条Tsend_C指令遇到的问题 点击:2266 | 回复:22



摆渡人小白

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:31
  • 历史总积分:31
  • 注册:2023年10月16日
发表于:2023-10-16 15:46:55
楼主
求助帖30分-已结帖

问题背景:两台1200PLC,TCP连接,PLC1写了两条Tsend_C指令向PLC2发送数据块F1和F2,然后PLC2接收的数据块R1和R2。

问题描述:正常情况下,R1接收F1,R2接收F2。但是写好程序下载到PLC之后,R1接收的是F2,R2接收的是F1。然后将PLC2停止重启,能够正常接收。(仿真中进行的)

具体看图




楼主最近还看过

攻城狮苏工

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 67回
  • 年度积分:10
  • 历史总积分:110
  • 注册:2023年9月14日
发表于:2023-10-16 16:27:04
1楼

TCP连接可能存在不稳定或网络延迟,导致数据包传输的顺序错误。



郭远林

  • [版主]
  • 精华:3帖
  • 求助:10帖
  • 帖子:113帖 | 2274回
  • 年度积分:58
  • 历史总积分:45582
  • 注册:2011年10月21日
发表于:2023-10-16 20:06:03
2楼

用TCP调试一下看看。是否发送 接收 等等

请叫我王老湿

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:626帖 | 8679回
  • 年度积分:95
  • 历史总积分:343366
  • 注册:2011年4月25日
发表于:2023-10-17 08:49:14
3楼

通信触发最好是上一个完成去触发下一个开始,脉冲延时触发很多时候不太靠谱

havegood

  • 精华:0帖
  • 求助:1帖
  • 帖子:87帖 | 284回
  • 年度积分:235
  • 历史总积分:1452
  • 注册:2016年7月23日
发表于:2023-10-17 13:28:48
4楼

提供一种不用编程,实现PLC之间通讯的方案:

AB-S7-PLC.png

相关案例:https://www.aihe-tech.com/nd.jsp?id=14#_jcp=1

摆渡人小白

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:31
  • 历史总积分:31
  • 注册:2023年10月16日
发表于:2023-10-17 14:34:41
5楼

"请叫我王老湿" 的回复,发表在3楼
        对内容: 【通信触发最好是上一个完成去触发下一个开始,脉冲延时触发很多时候不太靠谱...】进行回复:

        -----------------------------------------------------------------


老师您好,我这边试了将第一条的发送和接收指令的完成位用作第二条的触发,情况依旧——第一次下载到PLC运行结果交叉接收数据,将PLC2停止重启恢复正常。

wen2.PNG

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5675回
  • 年度积分:19
  • 历史总积分:87985
  • 注册:2004年5月28日
发表于:2023-10-17 23:10:42
6楼

发送时第一条DONE完成后再去执行第二条。

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5675回
  • 年度积分:19
  • 历史总积分:87985
  • 注册:2004年5月28日
发表于:2023-10-18 10:35:19
7楼

发送时第一条DONE完成后再去执行第二条。

摆渡人小白

  • 精华:0帖
  • 求助:1帖
  • 帖子:1帖 | 2回
  • 年度积分:31
  • 历史总积分:31
  • 注册:2023年10月16日
发表于:2023-10-19 07:35:09
8楼

"关育谋" 的回复,发表在7楼
        对内容: 【发送时第一条DONE完成后再去执行第二条。】进行回复:

        -----------------------------------------------------------------


按顺序轮询解决了初次下载后运行时数据交叉接收的问题,但是停机重启接收端的PLC,主站不停机,数据交叉,再停止重启,又交叉接收回来,就这样反反复复。感觉还是程序有问题,还有就是两台PLC之间没有写多条Tsend_C的必要了,解决不了,以后就只写一组,收发都写在一个DB块里。无标题.png

关育谋

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5675回
  • 年度积分:19
  • 历史总积分:87985
  • 注册:2004年5月28日
发表于:2023-10-19 16:32:37
9楼

引用 "摆渡人小白" 的回复,发表在8楼
        内容: "关育谋" 的回复,发表在7楼        对内容: 【发送时第一条DONE完成后再去执行第二条。】进行回复:        ------------------------------------...

注意连接ID

JSdanzi

  • 精华:0帖
  • 求助:0帖
  • 帖子:8帖 | 435回
  • 年度积分:79
  • 历史总积分:7637
  • 注册:2012年9月22日
发表于:2023-10-23 16:35:08
10楼

发送时第一条DONE完成后再去执行第二条,利用上升沿触发

AC米兰

  • 精华:0帖
  • 求助:0帖
  • 帖子:135帖 | 1078回
  • 年度积分:5
  • 历史总积分:5962
  • 注册:2016年4月23日
发表于:2024-01-25 15:48:16
11楼

进来学习下,看看如何解决

莫言*莫言

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 7回
  • 年度积分:7
  • 历史总积分:7
  • 注册:2015年4月05日
发表于:2024-01-25 16:56:54
12楼

确保PLC1中的Tsend_C指令和PLC2中的接收指令的执行顺序是同步的。如果PLC2的接收指令先于发送指令执行,那么它可能会接收到错误的数据块。

僻处自说

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 4回
  • 年度积分:1
  • 历史总积分:621
  • 注册:2014年3月01日
发表于:2024-01-25 16:59:32
13楼

程序逻辑错误:

检查PLC1中Tsend_C指令的发送顺序是否正确无误。确认F1确实是在F2之前被发送。

同时,检查PLC2端接收指令(可能是TRCV_C或其他类似的接收指令)的逻辑是否正确配置。

浮游云中

  • 精华:0帖
  • 求助:0帖
  • 帖子:17帖 | 171回
  • 年度积分:4
  • 历史总积分:366
  • 注册:2014年1月06日
发表于:2024-01-26 14:48:38
14楼

可能是通信初始化问题,如果通信的初始化顺序或者方式有误,可能导致数据错乱。例如,如果PLC2的通信初始化早于PLC1,或者在PLC1发送数据前已经完成了接收准备,这可能会导致接收错误的数据块。

向前

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2015年6月04日
发表于:2024-01-26 14:57:37
15楼

有时候程序下载到PLC后,PLC的内存和内部状态可能会保留一些之前的值,这可能会影响程序的初始运行状态。通常重启PLC可以清除这些状态,使得程序从确定的初始状态开始运行。

心在跳

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:3
  • 历史总积分:4
  • 注册:2015年4月25日
发表于:2024-01-29 14:01:54
16楼

这种情况可能是由于程序中的Tsend_C指令的执行顺序或者接收指令的设置不正确导致的。当两台PLC通过TCP连接进行通信时,发送和接收数据的顺序应该是一致的。如果发送和接收的顺序不匹配,就会出现您所描述的情况。

冰山流水

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 5回
  • 年度积分:2
  • 历史总积分:605
  • 注册:2016年7月23日
发表于:2024-01-29 14:13:41
17楼

确认Tsend_C指令的执行顺序是否正确。在PLC1中,确保先执行发送F1的指令,然后再执行发送F2的指令。在PLC2中,确保先执行接收R1的指令,然后再执行接收R2的指令。


solk_yt

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 20回
  • 年度积分:4
  • 历史总积分:620
  • 注册:2015年7月15日
发表于:2024-01-29 15:00:58
18楼

接收指令的设置是否正确。在PLC2中,确保R1和R2的接收缓冲区大小与发送的数据块F1和F2的大小相匹配。

此外,还需要确保接收指令的触发条件和完成事件设置正确,以确保在正确的时间接收数据。


闪啊闪

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 3回
  • 年度积分:0
  • 历史总积分:8
  • 注册:2014年4月19日
发表于:2024-01-29 15:15:12
19楼

看看是否有其他指令或逻辑影响了Tsend_C指令的执行顺序或接收指令的设置。

负债赌博

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:1
  • 历史总积分:4
  • 注册:2014年3月20日
发表于:2024-01-30 09:50:02
20楼

数据冲突吧,如果两台PLC同时写入相同的数据块,可能会导致数据冲突。您可以考虑使用锁定机制,确保在任何时候只有一个PLC写入数据块。


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页