| 作者 | 主题 |
|---|---|
|
孤独天空 侠圣
经验值:2081 发帖数:280 精华帖:2 |
楼主
主题: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楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据是这个速率问题,上位机收发频率我不清楚。所以我用了网络调试助手,这个助手的时钟频率我也不清楚,只是发现丢数据现象。不知道采用什么方案才能达到要求。 |
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
5楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
TCP/IP有丢包是很可能的。完全看网络带宽。阻塞了就会被丢弃。一般只能保证数十毫秒的交换。所以高速采集要用一些方法。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
6楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
1200在ProfiNet下也仅只支持RT 10毫秒级的响应。更快的则需要专用的、能辨识PN报文的交换机了。
尽管你可能看到3-5毫秒的响应。但那是没谱的。只要有其他TCP通讯就会慢下来。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
7楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
最后要说,楼主的这种发送方式叫流,就是每次发送不管收到否,打上IP标扔出去就不管了。通常视频流才会这样用。
我的方式就是使用缓冲区,5毫秒的采样放入缓冲区。200个数据,每秒交换一次。 甚至更大的缓冲区。发送间隔更大一些。 在另一侧则用每5毫秒显示一个。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
孤独天空 侠圣 经验值:2081 发帖数:280 精华帖:2 |
8楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据感谢大家回复,yming意思是,存储200次数据打包一次性发送,这样发送间隔增大了,每一次发送的数据量就多了,按照我的例子,一个数据4个字节,这样一次就要发800个字节,另外在上位机上显示就不是实时跟踪了,而是历史数据了。 |
|
Zane 版主 经验值:85161 发帖数:21047 精华帖:399 |
9楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据数字系统本来就是个滞后的系统,你看到的可都是“历史数据”,问题是这点滞后对你有多大的影响,我们能做到的一切也就是让滞后对你的影响减小。 一百个人都要在短时间内从A地到B地,是每个人依次各开一架飞机去呢,还是凑齐人数开一架飞机去呢?那就看你能容忍的最小的凑齐人数的时间了,以及航线等其他因素的承载能力了。 显然,楼主是每个人都开一架飞机去了,然后是有几架飞机找不到了............
Zane
注册自动化系统工程师
Always save before download
|
|
Zaxife 至圣 经验值:12614 发帖数:2450 精华帖:31 |
13楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
1200系列CPU的速度是百纳秒级别,程序周期是1毫秒级别,真的处理不了这么高速的频繁通讯。要么打包发送要么别用PLC。
虽然是100M以太网接口,但是就算PLC作为客户机什么程序都不写数据交换速度到1M/S就顶天了。再快就PLC那弱鸡的72MHz主频绝对处理不过来。 PLC是有固件的,是居于低层系统运行的,并不像采集卡那样可以高速实时性的。再说了实时性这种说法,就连数字示波器都是采集缓存后显示的,你想用PLC、WinCC这种龟速软硬件来实现真是太天真。 你需要的是DSP…… 最后…数据什么的都是用来分析的,缓存历史数据更有价值。 |
|
Zane 版主 经验值:85161 发帖数:21047 精华帖:399 |
14楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据
呵呵,方法不对,导致技术难度增加从而难以实现,建议参考yming版主的方案
Zane
注册自动化系统工程师
Always save before download
|
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
15楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据你想错了。 如果上位机是采集。这样做才不会丢数据。 如果上位机仅显示,只需按5毫秒显示一个数据即可。(这个5毫秒,我都存疑,显示器支持200Hz刷新么?),滞后的一秒是系统误差,而系统误差是可以矫正的。 你以为航天的检测是实时的呐?光发送到接受就要数秒,不是么?但只要知道 传输迟滞时间 就能预判 实际姿态。
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
|
孤独天空 侠圣 经验值:2081 发帖数:280 精华帖:2 |
16楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据感谢yming的指导,确实是目前最好的方案了。接下来试验下,怎么通过TCP/IP发送数组。TCP/IP通讯确实方便好用,PLC端组态配置一下就可以了,上位机变得更加灵活。 |
|
yming 至圣 经验值:138360 发帖数:23136 精华帖:880 |
17楼
主题:回复:1200 TCP/TP自由口通讯传输速率,速度快会丢数据嗯,最好有时标,比如放在数组【0】; 而且,要有适当的 重叠。 具体的应按照实际情况来决定。有些远程都是通过移动转联通;再到有线,中间不知到多少路由网关。只有ping过才知道大概其延迟,再决定缓冲区要多大合适。 慢慢研究吧,祝顺利!
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|