技术论坛

 回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

返回主题列表
作者 主题
孤独天空
侠圣

经验值:2081
发帖数:280
精华帖:2
楼主    2018-05-24 11:11:50
主题:1200 TCP/TP自由口通讯传输速率,速度快会丢数据 精编帖 

CPU 1212DC,项目要求用PLC控制伺服,并且每隔固定时间将其中某些数据传输给上位机做显示,形成时间波形。

这个时间间隔要求越小越好,要达到个位数MS级,WINCC试了下最快采集速度100MS不满足要求,并且上位机软件有现成的,Visual Studio编写的,PLC只是其中一小部分。

后来与软件测试了TCP/IP通讯,通讯做通了,但软件那边反馈有两个问题,

1延时,打个比方我这边一次性循环发100次后停止,我这边停了,软件那边延时好几秒,才发现停止接收数据。可能软件那边显示控件反应跟不上,先不做讨论。

2丢数据,我这边发送100次,那边接收总数会少几个。

然后建了一个新的最简单的项目,并且把通讯资源调到了50,专门来测试这个TCP/IP通讯,请大侠指正。

程序很简单,循环中断OB30,时间5MS,M2.0 5MS导通,5MS关闭,就是10MS发送一次,将浮点数1.0(16#3F 80 00 00)(4个字节),循环发送。并且计数发送次数。

发现计数10682次,接收到的字节为41812/4=10453个,少了200个。

然后我把OB30改为10MS,即每20MS发送一次,有改善,丢的数据很少。把OB35改为20MS,即每40MS发一次,就没有丢数据现象了。


本人PLC,通讯,原理都不甚了解。PLC控制部分尚没做好,上位机采集这块也不行,

请教各位大侠,我这样的方式是否正确,怎么才能优化改善每10MS发一次数据并且不丢失。之前用的232自由口通讯,数据更是丢的一大糊涂,换成TCP/IP依然没能做到完美。

孤独天空
侠圣

经验值:2081
发帖数:280
精华帖:2
3楼    2018-05-24 15:15:11
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

是这个速率问题,上位机收发频率我不清楚。所以我用了网络调试助手,这个助手的时钟频率我也不清楚,只是发现丢数据现象。不知道采用什么方案才能达到要求。

yming
至圣

经验值:138360
发帖数:23136
精华帖:880
5楼    2018-05-28 10:53:12
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
TCP/IP有丢包是很可能的。完全看网络带宽。阻塞了就会被丢弃。一般只能保证数十毫秒的交换。所以高速采集要用一些方法。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
yming
至圣

经验值:138360
发帖数:23136
精华帖:880
6楼    2018-05-28 11:01:33
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
1200在ProfiNet下也仅只支持RT 10毫秒级的响应。更快的则需要专用的、能辨识PN报文的交换机了。
尽管你可能看到3-5毫秒的响应。但那是没谱的。只要有其他TCP通讯就会慢下来。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
yming
至圣

经验值:138360
发帖数:23136
精华帖:880
7楼    2018-05-28 11:18:41
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
最后要说,楼主的这种发送方式叫流,就是每次发送不管收到否,打上IP标扔出去就不管了。通常视频流才会这样用。
我的方式就是使用缓冲区,5毫秒的采样放入缓冲区。200个数据,每秒交换一次。
甚至更大的缓冲区。发送间隔更大一些。
在另一侧则用每5毫秒显示一个。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
孤独天空
侠圣

经验值:2081
发帖数:280
精华帖:2
8楼    2018-05-28 14:54:39
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

感谢大家回复,yming意思是,存储200次数据打包一次性发送,这样发送间隔增大了,每一次发送的数据量就多了,按照我的例子,一个数据4个字节,这样一次就要发800个字节,另外在上位机上显示就不是实时跟踪了,而是历史数据了。

Zane
版主

经验值:85161
发帖数:21047
精华帖:399
9楼    2018-05-28 23:50:27
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

数字系统本来就是个滞后的系统,你看到的可都是“历史数据”,问题是这点滞后对你有多大的影响,我们能做到的一切也就是让滞后对你的影响减小。


一百个人都要在短时间内从A地到B地,是每个人依次各开一架飞机去呢,还是凑齐人数开一架飞机去呢?那就看你能容忍的最小的凑齐人数的时间了,以及航线等其他因素的承载能力了。


显然,楼主是每个人都开一架飞机去了,然后是有几架飞机找不到了............

Zane 注册自动化系统工程师 Always save before download
Zaxife
至圣

经验值:12614
发帖数:2450
精华帖:31
13楼    2018-05-31 23:26:41
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
1200系列CPU的速度是百纳秒级别,程序周期是1毫秒级别,真的处理不了这么高速的频繁通讯。要么打包发送要么别用PLC。
虽然是100M以太网接口,但是就算PLC作为客户机什么程序都不写数据交换速度到1M/S就顶天了。再快就PLC那弱鸡的72MHz主频绝对处理不过来。
PLC是有固件的,是居于低层系统运行的,并不像采集卡那样可以高速实时性的。再说了实时性这种说法,就连数字示波器都是采集缓存后显示的,你想用PLC、WinCC这种龟速软硬件来实现真是太天真。
你需要的是DSP……

最后…数据什么的都是用来分析的,缓存历史数据更有价值。
Zane
版主

经验值:85161
发帖数:21047
精华帖:399
14楼    2018-06-01 08:47:49
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
呵呵,方法不对,导致技术难度增加从而难以实现,建议参考yming版主的方案
Zane 注册自动化系统工程师 Always save before download
yming
至圣

经验值:138360
发帖数:23136
精华帖:880
15楼    2018-06-01 09:13:02
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

你想错了。

如果上位机是采集。这样做才不会丢数据。

如果上位机仅显示,只需按5毫秒显示一个数据即可。(这个5毫秒,我都存疑,显示器支持200Hz刷新么?),滞后的一秒是系统误差,而系统误差是可以矫正的。

你以为航天的检测是实时的呐?光发送到接受就要数秒,不是么?但只要知道 传输迟滞时间 就能预判 实际姿态。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
孤独天空
侠圣

经验值:2081
发帖数:280
精华帖:2
16楼    2018-06-01 09:53:32
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

感谢yming的指导,确实是目前最好的方案了。接下来试验下,怎么通过TCP/IP发送数组。TCP/IP通讯确实方便好用,PLC端组态配置一下就可以了,上位机变得更加灵活。

yming
至圣

经验值:138360
发帖数:23136
精华帖:880
17楼    2018-06-01 14:27:27
精编帖  主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据

嗯,最好有时标,比如放在数组【0】; 而且,要有适当的 重叠。

具体的应按照实际情况来决定。有些远程都是通过移动转联通;再到有线,中间不知到多少路由网关。只有ping过才知道大概其延迟,再决定缓冲区要多大合适。

慢慢研究吧,祝顺利!

学而时习之,不亦说乎?温故而知新,不亦乐乎?
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。