CPU 通过以太网通信,如何将接收的数据打包处理
作者&投稿:辕友 (若有异议请与网页底部的电邮联系)
一般不会这样实现,首先是硬件的缓冲区很小,操作系统TCP IP驱动一般会尽可能地将数据从硬件里取出来放入到系统缓冲区里,你调用recv只不过是把数据从系统缓冲区存入到你的用户空间缓冲区而已
当然,系统缓冲区也是会满的,这个怎么办,我就拿TCP和UDP来说吧
对于TCP,如果系统缓冲区已经满了,再发来的数据就会丢掉,并且TCP协议栈对向对方发一个包,告诉对方,我的窗口已经满了,请不要继续发送数据,等用户调用recv将数据取走后,对方才可以继续发送数据,所以TCP其实是通过一个窗口大小这样东东来控制收发速度和用来确认数据传输有效性的
对于UDP就不是这样了,缓冲区满了直接把数据丢了,它也不管是否接收成功
已经按很简单的解释了。。。能理解吧。。。
如果你对Modbus稍有了解,对VB编程有一定基础,以下的解答会有帮助。
Modbus是应用层协议,它定义了一个与基础通信层无关的简单协议数据单元(PDU):功能码+数据单元。Modbus要用于特定的总线或网络上,必须在PDU上引入一些附加域组成应用数据单元(ADU),例如用于以太网时,其传输模式是Modbus TCP,这时ADU=MBAP报文头+PDU。编程组成符合ADU格式的帧,就是常说的“数据打包”,一般在用户定义的发送缓冲区(使用字节数组)中完成。对于接收到的数据帧,需要按ADU格式去理解并编程处理,这就是常说的“数据解包”。
在VB中编程实现Modbus TCP通信,使用以太网通信控件,端口号是502。至于TCP/IP协议如何实现,不需要费心。编程重点还是ADU数据帧的打包、解包及事务处理。
务昂瑞新: 一般不会这样实现,首先是硬件的缓冲区很小,操作系统TCP IP驱动一般会尽可能地将数据从硬件里取出来放入到系统缓冲区里,你调用recv只不过是把数据从系统缓冲区存入到你的用户空间缓冲区而已 当然,系统缓冲区也是会满的,这个怎么...
揭东县18056469856: 如何实现两个S7 - 1200 CPU之间的以太网通信.pdf - ?
务昂瑞新: S7-1500 CPU 和 S7-1200 CPU 之间可以实现 Modbus/TCP 的通信.在 S7-1500 CPU 和 S7-1200 CPU 中调用 “MB_CLIENT” 和 “MB_SERVER” 指令并参数化. “MB_CLIENT” 指令把 CPU 的以太网连接实现为 Modbus/TCP 客户机通...
揭东县18056469856: 怎么通过以太网访问cpu?
务昂瑞新: 详见:《WINCC与S7-300/400的以太网通讯》下载:http://www2.ad.siemens.com.cn/Download/Upload/AS/application/A0152.pdf参见下载:http://www2.ad.siemens.com.cn/Download/Upload/AS/application/A0098.pdf
揭东县18056469856: 欧姆龙CJ2M,CPU - 13如何与上位机通信,用的是以太网,不知道是用什么协议? - ?
务昂瑞新: 1、如上位机支持,可直接采用以太网通讯 2、采用OMRON网关软件FinsgateWay,然后上位机与Finsgateway通讯
揭东县18056469856: s7300之间如何通过以太网通讯 - ?
务昂瑞新: 打开SIMATIC Manager,根据我们系统的硬件组成,进行系统的硬件组态, 插入2 个S7300 的站,进行硬件组态: 分别组态2 个系统的硬件模块: 设置CP343-1、CP343-IT 模块的参数,建立一个以太网,MPI、IP 地址: 组态完2 套系统的硬件...
揭东县18056469856: 西门子CPU224XP与AB的1769 - L35E怎么通过以太网交换机进行通讯?
务昂瑞新: CP243-1 为什么其它厂家的CPU也支持以太网TCP/IP协议,却不能与西门子的CPU用以太网通信? 1一个开放式系统互连是建立在7个协议层上的:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层.一般地,网络中的指定通信...
揭东县18056469856: PC和DSP通过以太网收发数据怎么实现? - ?
务昂瑞新: 这个可以通过DSP的spi功能连接一个以太网模块,这个模块网上都有卖的,叫ENC28J60模块,他们也会给你这个芯片的驱动程序,你嵌入到DSP程序中就可以和电脑通过以太网通讯了.DSP开发板收到的数据有两个存储方式,如果是断电消失的放在ROM闪存里,如果是断电还保持的可以放在EEPROM里.至于编程注意的问题可多了,各人情况不同,无法概括的说,还得自己摸索.
揭东县18056469856: cpu之间通过以太网怎么通讯 - ?
务昂瑞新: 是用的343-1网卡模块吗?我这几天做了类似的项目,通过343-1通讯,刚成功.如果装了模块带的光盘,在STEP7文件夹下有个examples,里面的exie工程就是一个以太网通讯的例子,您可以参考一下.另外我这个有个关于通讯的PDF文件,您说下邮箱我可以发给您.
揭东县18056469856: 在S7 CPU中如何进行全局数据的基本通讯?在通讯时需要注意什么? - ?
务昂瑞新: 全局数据通讯用于交换小容量数据,全局数据(GD)可以是: 输入和输出 标记 数据块中的数据 定时器和计数器功能 数据交换是指在连入单向或双向GD环的CPU之间以数据包的形式交换数据.GD环由GD环编号来标识. 单向连接:某一CPU可以向多个CPU发送GD数据包. 双向连接:两个CPU之间的连接:每个CPU都可以发送和接收一个GD数据包. 必须确保接收端CPU未确认全局数据的接收.如果想要通过相应通讯块(SFB、FB或FC)来交换数据,则必须进行通讯块之间的连接.通过定义一个连接,可以极大简化通讯块的设计.该定义对所有调用的通讯块都有效且不需要每次都重新定义.
揭东县18056469856: 两个S7 - 300 PLC怎样实现CPU之间的以太网通讯请辅导程序说明求解 - ?
务昂瑞新: 两个300CPU距离1000左右,之间需要进行数据交换,想走两路通讯,DP和以太网互为备用.请附带以太网通讯的程序说明