当前位置:文档之家› 基于TMS320 C6455的以太网通信程序的设计

基于TMS320 C6455的以太网通信程序的设计

基于TMS320 C6455的以太网通信程序的设计
基于TMS320 C6455的以太网通信程序的设计

基于TMS320 C6455的以太网通信程序的设计

摘要:文中介绍了TMS320 C64155 DSP EMAC接口的构成以及工作原理和关键数据结构,参考相关的以太网驱动程序,完成了基于C6455 DSP的以太网通信程序的设计。该网络通信程序实现了某款信号处理机与上位机之间的高速通信接口。系统测试结果表明,利用C6455实现的以太网通信接口完全满足系统设计要求,并且系统具有组成简单、系统集成度高等优点。该方案在其他多功能信号处理设备方面具有一定的应用价值。

关键词:TMS320 C6455;DSP;以太网通信;网络驱动程序

随着以太网技术的普及和发展,以太网的通信速率从百兆网逐渐进入了千兆网,甚至万兆网,其通信速率已经满足了常用信号处理机所需要的吞吐率。而以前仅用来做信号处理的DSP器件逐渐也加入了以太网通信功能,常见的如TI公司的DM642,C6455,C6678等DSP 器件都带有以太网接口,这给一些需要高速通信接口的信号处理板的设计提供了极大的便利。本文利用某处理板上的TI公司高端DSP器件TMS320 C6455,完成了信号处理板与人机界面之间的高速以太网通信功能。系统测试结果表明,利用C6455实现的以太网通信接口完全满足系统设计要求,并且系统具有组成简单、系统集成度高等优点。

1 硬件平台

信号处理板的主要硬件包括两路高速DAC,两路高速ADC以及一块Xilinx V5的FPGA 和一块TMS320 C6455DSP处理器,其中网络通信接口部分主要包括C6455、PHY芯片和RJ45接口,如图1所示。C6455的EMAC接口与信号板上的PHY芯片以GMII方式连接,支持千兆双工通信模式。

2 C6455 EMAC接口介绍

C6455的EMAC接口主要由3部分构成,包括MDIO模块、EMAC模块、EMAC控制模块。其中MDIO模块通过802.3协议规定的串行通信接口,完成以太网物理层芯片的配置和管理:EMAC模块负责以太网数据包的发送和接收;EMAC控制模块作为DSP核和EMAC接口之间的桥梁,实现DSP核对EMAC模块和MDIO模块的控制。

如图2所示,EMAC接口通过C6455提供的外设总线与DSP核连接,外设总线中的配置总线提供DSP核对EMAC寄存器的访问,数据总线完成DSP核与EMAC接口之间的以太网通信包的交换。此外,EMAC控制模块将EMAC模块和MDIO模块产生的18个中断信号综合在一起,对外提供一个中断信号,发往C6455的中断控制器,成为C6455处理器的第17号系统事件。C6455的DSP核在接到中断信号后,通过查询EMAC控制模块提供的中断状态寄存器判断中断产生的中断源。

包缓存描述符(Packet Buffer Descriptors)在C6455的网络通信中起到关键的作用,应用程序和EMAC接口之间的信息交换主要是通过包缓存描述符来实现。包缓存描述符的结构如图3所示,每个包缓存描述符大小为16个字节,其中各个域的意义如下:Next Descriptor Poin ter表示指向下一个描述符的指针,这样多个包缓存描述符可以形成一个单向链表;Buffer Pointer表示指向接收或者发送数据内存空间的指针,EMAC模块根据该指针,启动内部的DMA引擎将数据放入到内部FIFO以便发送,或者从内部FIFO读出到该地址,以便应用程序处理;Buffer Offset表示从Buffer Pointer指向的地址到有效数据之间的距离;Buffer Length表示该缓存器指向数据的大小;Flags表示该缓存器指向的数据是否是应用程序数据包的起始包,或是结束包;Packets Length表示应用程序数据包的总长度,应用程序包可能是由一个或者多个包缓存描述符构成。

EMAC模块以链表的形式处理包缓存描述符,描述符链表的第一个地址需要写入EMAC的头描述符寄存器(head descriptor pointer),EMAC从头描述符寄存器指向的描述符开始,逐个处理链表中所有的描述符,直到遇到Next Descriptor Pointer为零的描述符。当链表中所有的描述符都处理完成时,EMAC向DSP核发出一个中断,并将处理完的最后一个描述符的地址写入发送/接收完成寄存器,DSP核通过中断和完成寄存器与EMAC进行发送或接收数据的同步。

3 以太网通信程序设计

文中设计的以太网通信程序是基于TI公司提供的DSP操作系统DSP/BIOS之上,由该操作系统提供时钟定时、任务同步、硬件中断管理等功能。如图4所示,以太网通信程序主要由DSP/BIOS操作系统、网络驱动程序和用户程序构成。DSP/BIOS操作系统为其他模块提供定时、任务同步等服务;网络驱动程序完成以太网通信功能;用户程序负责解释并执行人机界面发送的命令和数据。网络驱动程序主要包括以太网硬件驱动程序和几个基本的网络协议,包括ICMP,ARP和UDP协议,其中,以太网硬件驱动程序的设计是文中描述的重点,

其主要包括MDIO驱动程序与EMAC驱动程序。MDIO驱动程序完成C6455 EMAC与物理芯片的交互,而EMAC驱动程序为用户程序提供了以太网通信接口。

3.1 MDIO驱动模块的设计

MDIO模块主要负责搜索、配置和监控外部以太网物理收发芯片。该模块主要包括如下几个部分:MDIO硬件初始化;PHY芯片搜索和配置;PHY芯片状态监控。详细的设计描述如下:

3.1.1 MDIO硬件初始化

MDIO硬件初始化包括如下步骤:

1)读取C6455设备状态寄存器(DEVSTFAT)中的MACSEL位,确定EMAC与PHY芯片之间的连接方式。文中所涉及的信号处理板上的C6455 EMAC与PHY芯片之间采用GMII方式连接。

2)初始化MDIO状态机,将状态机置为初始化状态。

3)配置MDIO访问PHY芯片的时钟并使能MDIO模块。

3.1.2 PHY芯片搜索和配置

由于PHY芯片的搜索过程并无确定的时间,因此PHY芯片搜索和配置的实现采用状态机来实现,该状态机每隔100 ms根据查询到的PHY芯片的状态完成相应的操作并更新到下一状态,如图5所示。PHY芯片的搜索经过芯片复位,通信速率自协商等过程,最终与通信对端建立以太网物理层连接。

3.1.3 PHY芯片状态监控

在以太网物理层链路的建立后,有可能由于用户拔出网线、对端机器改变通信接口速率

等情况而导致链路状态改变,因此MDIO模块需要每隔一段时间对网络进行监控。文中设计的状态监控模块由DSP/BIOS操作系统每隔100 ms查询一次网络状态,状态监控程序一旦发现链路状态有所变化,则根据引起链路变化的不同原因,进入相应的处理流程。该流程如图5中“链路连接”状态以及相应的转移状态所示。

3.2 EMAC驱动模块的设计

EMAC驱动模块主要负责以太网数据包的接收和发送,它是以太网驱动程序的主要组成部分。该模块主要包括如下几个部分:EMAC硬件初始化;EMAC接收模块;EMAC发送模块。各个模块详细的设计描述如下:

3.2.1 EMAC硬件初始化

EMAC硬件初始化主要的目的是将EMAC模块置于就绪状态,此时EMAC已经可以接收和发送以太网数据包。初始化过程主要包括如下步骤:

1)禁止EMAC中断,复位EMAC的HDP寄存器、统计寄存器等,设置EMAC的MAC地址,挂接应用程序提供的回调函数等操作。

2)根据需求为发送模块和接收模块分配相应的包缓存描述符,并初始化接收模块的包缓存描述符,使之指向应用程序提供的数据接收存储块。文中设计的以太网驱动程序为接收模块分配了32个包缓存描述符,为发送模块分配了480个包缓存描述符,为发送和接收模块共分配了64块存储块,每个存储块大小为4 096个字节。图6是接收模块初始化完成后,接收描述符和接收存储块之间的关系。

如图6,文中用EMAC_Ch_Struct结构体涵盖了接收模块所用到的链表指针。其中,DescQueue表示空的接收存储块链表,EMAC在接收到一块数据时,启动EMAC内部的DMA,将数据放入当前描述符指向的存储块,并通过中断通知应用程序有数据到达;pDescFirst 指向接收描述符链表的首地址,pDescLast指向接收描述符链表的末地址;pDescRead指向第一个可使用的描述符;pDescWrite指向最后一个可使用的描述符;

3)配置MAC的是否为多播地址,使能以太网中断,EMAC处于就绪状态。

3.2.2 EMAC接收模块

EMAC接收模块主要由EMAC中断来驱动。当EMAC硬件接收完一个或多个包数据时,会向DSP核发出一个接收完成中断。DSP核在接收到中断后,调用应用程序提供的接收数据回调函数处理接收到的数据,并返回给中断服务程序一个空闲的存储块,中断服务程序将该存储块重新链接到接收存储块链表,完成接收数据流程。

3.2.3 EMAC发送模块

EMAC发送模块主要由一个发送接口函数ethSendPacket(char*Buffer,int Length)构成,用户程序通过调用该函数完成以太网数据的发送。该函数参数中,Buffer表示应用程序需要发送的数据,Length表示发送数据的长度。该函数首先将Buffer中的数据拷贝到空

闲的存储块,并将该储存块加入如图7所示的WaitQueue队列中,WaitQueue队列表示等待加入EMAC发送队列(DescQueue)的存储块。ethSendPacket函数接着检查EMAC发送队列DescQueue是否有空闲的发送描述符,如果有,将WaitQueue链表中的存储块加入到DeseQueue。EMAC硬件将通过相应的描述符,将DescQueue中的数据发送出去。

当数据发送完成后,EMAC向DSP核发出一个发送完成中断。发送完成中断服务程序将发送后的存储块从DescQueue中移除并交还给应用程序,然后将使用过的发送描述符置为空闲状态,以便下次发送数据时使用。

3.3 ARP/ICMP/UDP网络协议模块的设计

为了与上位机完成网络通信,信号处理机还必须提供基本的网络通信协议。文中在设计时,主要提供了ARP/ICMP/UDP 3种网络协议。ARP协议主要完成信号处理机IP地址和MAC 地址的转换;ICMP协议主要完成测试信号处理机与上位机之间的网络连通性;UDP协议主要完成实际指令和数据的通信。

文中简化了这些网络协议模块的设计,设计的主要思路是解析3种协议的包格式,并根据不同协议,封装相应的回应包,发送给上位机。在UDP协议设计中,为了保证数据能够准确送达上位机,加入了CRC校验和出错重传机制。协议处理流程如图8所示。

4 结束语

文中以TMS320C6455为核心芯片,通过对C6455 EMAC硬件的研究,参考相关的以太网驱动程序,完成了C6455的以太网通信程序的设计。结果表明,文中设计的以太网驱动程序以及网络协议模块较好的满足了处理机对实时高效数据通信的基本需求,省却了对信号处理机硬件的修改,降低了系统的复杂度,为其他项目的开发提供了很好的借鉴。

但在对信号处理机网络吞吐性能的测试过程中发现实际的网络吞吐速率与千兆以太网的理论速率还是有较大的差距。如何进一步优化驱动程序的架构和关键数据结构的算法,以便进一步提高网络吞吐率,是笔者下一步的研究方向。

网络应用程序设计教案

网络应用程序设计 课程教案 课 程 名 称: 网络应用程序设计 课 程 编 号: 4112301 学院、专业、年级: 信息科学院计算机科学与技术 任 课 教 师: 段会川 教 师所 在单位: 信息科学与工程学院 山东师范大学

课程简介 计算机网络已经渗透到我们人类社会生活的方方面面,人们所依赖的Internet提供信息和服务的重要渠道是Web网站。在大学本科教学中,教授网络应用程序设计的基本技术和Web网站建设技术是非常必要的。而这正是我们在计算机科学与技术及通信工程本科专业中开设“网络应用程序设计”课程的基本出发点。 网络应用程序设计和Web技术涉及的范围非常宽广,作为一门实用性的课程,我们对课程所需要涉及的内容的教学方法进行了认真的研究,确定了如下的思路:(1)鉴于网络应用程序设计技术的广泛性,课程内容选取了最有代表性的Internet和Web技术,而且从教学方式上以将学生领入为主,选择的内容也是入门性的内容,以期望通过本课程的学习为学生进一步的深入学习和实战性技能打下切实的基础;(2)本课程是一门实践技能性很强的课程,因而我们从教学内容上对理论性内容深入浅出,强调实践技能的培养,加强学生的上机实践操作,使学生在实践中掌握理论,在实践中学会并提高技能;(3)为了加强创新教育,我们选取了开源的Apache Web服务器和PHP建站技术作为课程的主要内容,使学生将来的创新免受软件版权的限制,为产出创新成果提供较大的空间;(4)为使课堂教学有更强的感染力,我们在课件中提供了大量的实例演示,并将实例演示溶入课件中,同时建立了课程网站,并在网站上提供了大量的练习示例。 课程基本内容包括:(1)Web服务器(Apache、IIS);(2)超文本传输协议HTTP与浏览器; (3)HTML基础篇; (4)HTML高级篇: (5)PHP基础篇; (6)PHP高级篇; (12)PHP数据库篇(MSSQL)。

以太网EMC接口电路设计与PCB设计说明

以太网EMC接口电路设计及PCB设计 我们现今使用的网络接口均为以太网接口,目前大部分处理器都支持以太网口。目前以太网按照速率主要包括10M、10/100M、1000M三种接口,10M应用已经很少,基本为10/100M所代替。目前我司产品的以太网接口类型主要采用双绞线的RJ45接口,且基本应用于工控领域,因工控领域的特殊性,所以我们对以太网的器件选型以及PCB设计相当考究。从硬件的角度看,以太网接口电路主要由MAC(Media Access Controlleroler)控制和物理层接口(Physical Layer,PHY)两大部分构成。大部分处理器内部包含了以太网MAC控制,但并不提供物理层接口,故需外接一片物理芯片以提供以太网的接入通道。面对如此复杂的接口电路,相信各位硬件工程师们都想知道该硬件电路如何在PCB上实现。 下图1以太网的典型应用。我们的PCB设计基本是按照这个框图来布局布线,下面我们就以这个框图详解以太网有关的布局布线要点。 图1 以太网典型应用 1.图2网口变压器没有集成在网口连接器里的参考电路PCB布局、布线图,下面就以图2介绍以太网电路的布局、布线需注意的要点。 图2 变压器没有集成在网口连接器的电路PCB布局、布线参考 a)RJ45和变压器之间的距离尽可能的短,晶振远离接口、PCB边缘和其他的高频设备、走线或磁性元件周围,PHY层芯片和变压器之间的距离尽可能短,但有时为了

顾全整体布局,这一点可能比较难满足,但他们之间的距离最大约10~12cm,器件布局的原则是通常按照信号流向放置,切不可绕来绕去; b)PHY层芯片的电源滤波按照要芯片要求设计,通常每个电源端都需放置一个退耦电容,他们可以为信号提供一个低阻抗通路,减小电源和地平面间的谐振,为了让电容起到去耦和旁路的作用,故要保证退耦和旁路电容由电容、走线、过孔、焊盘组成的环路面积尽量小,保证引线电感尽量小; c)网口变压器PHY层芯片侧中心抽头对地的滤波电容要尽量靠近变压器管脚,保证引线最短,分布电感最小; d)网口变压器接口侧的共模电阻和高压电容靠近中心抽头放置,走线短而粗(≥15mil); e)变压器的两边需要割地:即RJ45连接座和变压器的次级线圈用单独的隔离地,隔离区域100mil以上,且在这个隔离区域下没有电源和地层存在。这样做分割处理,就是为了达到初、次级的隔离,控制源端的干扰通过参考平面耦合到次级; f)指示灯的电源线和驱动信号线相邻走线,尽量减小环路面积。指示灯和差分线要进行必要的隔离,两者要保证足够的距离,如有空间可用GND隔开; g)用于连接GND和PGND的电阻及电容需放置地分割区域。 2.以太网的信号线是以差分对(Rx±、Tx±)的形式存在,差分线具有很强共模抑制能力,抗干扰能力强,但是如果布线不当,将会带来严重的信号完整性问题。下面我们来一一介绍差分线的处理要点: a)优先绘制Rx±、Tx±差分对,尽量保持差分对平行、等长、短距,避免过孔、交叉。由于管脚分布、过孔、以及走线空间等因素存在使得差分线长易不匹配,时序会发生偏移,还会引入共模干扰,降低信号质量。所以,相应的要对差分对不匹配的情况作出补偿,使其线长匹配,长度差通常控制在5mil以内,补偿原则是哪里出现长度差补偿哪里; b)当速度要求高时需对Rx±、Tx±差分对进行阻抗控制,通常阻抗控制在100Ω±10%; c)差分信号终端电阻(49.9Ω,有的PHY层芯片可能没有)必须靠近PHY层芯片的Rx±、Tx±管脚放置,这样能更好的消除通信电缆中的信号反射,此电阻有些接电源,有些通过电容接地,这是由PHY芯片决定的; d)差分线对上的滤波电容必须对称放置,否则差模可能转成共模,带来共模噪声,且其走线时不能有stub ,这样才能对高频噪声有良好的抑制能力。

MODBUS通讯协议及编程

通讯协议及编程 通讯协议分为协议和协议,我公司的多种仪表都采用通讯协议,如:2000智能电力监测仪、巡检表、数显表、光柱数显表等。下面就协议简要介绍如下: 一、通讯协议 (一)、通讯传送方式: 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义也与通讯规约相兼容: 初始结构= ≥4字节的时间 地址码 = 1 字节 功能码 = 1 字节 数据区 = N 字节 错误校检 = 16位码 结束结构= ≥4字节的时间 地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。 功能码:通讯传送的第二个字节。通讯规约定义功能号为1到127。本仪表只利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位为1(比如功能码大与此同时127),则表明从机没有响应操作或发送出错。 数据区:数据区是根据不同的功能码而不同。数据区可以是实际数值、设置点、主机发送给从机或从机发送给主机的地址。 码:二字节的错误检测码。 (二)、通讯规约: 当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息

中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。 1.信息帧结构 地址码:地址码是信息帧的第一字节(8位),从0到255。这个字节表明由用户设置地址的从机将接收由主机发送来的信息。每个从机都必须有唯一的地址码,并且只有符合地址码的从机才能响应回送。当从机回送信息时,相当的地址码表明该信息来自于何处。 功能码:主机发送的功能码告诉从机执行什么任务。表1-1列出的功能码都有具体的含义及操作。 数据区:数据区包含需要从机执行什么动作或由从机采集的返送信息。这些信息可以是数值、参考地址等等。例如,功能码告诉从机读取寄存器的值,则数据区必需包含要读取寄存器的起始地址及读取长度。对于不同的从机,地址和数据信息都不相同。 错误校验码:主机或从机可用校验码进行判别接收信息是否出错。有时,由于电子噪声或其它一些干扰,信息在传输过程中会发生细微的变化,错误校验码保证了主机或从机对在传送过程中出错的信息不起作用。这样增加了系统的安全和效率。错误校验采用16校验方法。 注:信息帧的格式都基本相同:地址码、功能码、数据区和错误校验码。 2.错误校验 冗余循环码()包含2个字节,即16位二进制。码由发送设备计算,放置于发送信息的尾部。接收信息的设备再重新计算接收到信息的码,比较计算得到的码是否与接收到的相符,如果两者不相符,则表明出错。 码的计算方法是,先预置16位寄存器全为1。再逐步把每8位数据信息进行处理。在进行码计算时只用8位数据位,起始位及停止位,如有奇偶校验位的话也包括奇偶校验位,都不参与码计算。 在计算码时,8位数据与寄存器的数据相异或,得到的结果向低位移一字节,用0 填补最高位。再检查最低位,如果最低位为1,把寄存器的内容与预置数相异或,如果最低位为0,不进行异或运算。 这个过程一直重复8次。第8次移位后,下一个8位再与现在寄存器的内容相相异或,这个过程与以上一样重复8次。当所有的数据信息处理完后,最后寄存器的内容即为码值。码中的数据发送、接收时低字节在前。 计算码的步骤为:

嵌入式Linux系统串口和以太网编程

中国地质大学(北京) 实验报告 课程名称:嵌入式系统 实验名称:嵌入式Linux系统串口和以太网编程 姓名: 学号: 班级: 指导教师:曾卫华 评分: 实验时间: 2013.5

实验题目:嵌入式Linux系统串口和以太网编程 一、实验目的 1、熟悉Linux环境 2、掌握嵌入式开发的基本流程,培养解决问题的能力 3、掌握Linux串口及以太网socket的应用程序开发 4、自学嵌入式Linux中多线程编程基础 二、实验内容 本次实验通过编写服务器(开发板)与客户端(虚拟机ubuntu)上的应用程序,来实现服务器与客户端之间信息的透明转发,构成类似于聊天的功能。该功能实现包括两个方面。 其一:服务器通过串口从终端(电脑键盘)上读取(read)数据,再通过网络(clifd)把读取到的数据发送到客户端,客户端在接收到数据后在显示器上打印出来; 其二:客户端把数据通过网络发送到主机上,主机接收到数据后通过串口写到电脑终端软件(SecureCRT)进行显示。实验流程图如下: 图一:总体框架图 三、基础知识 1、掌握linux串口和以太网socket应用程序开发方法: 串口配置: 打开串口,获得串口的使用句柄fd → 获取原先配置参数并进行保存 →●设置波特率→?设置奇偶校验位→?设置→?设置停止位→?设置最少接受字 符和等待时间→?设置数据位、无流控等相关参数→?激活最新配置→?结束时还 原串口原先配置。 网络socket编程: 服务器端: 创建一个socket→ bind(),给socket注册服务器端口地址→●listen(),

开始监听已经绑定的端口,创建监听队列→?accept(),返回一个新的socket,阻塞 等待客户端client的连接→? send(),recv()发送和接收数据→?close(),关闭服务器。 客户端: 创建一个socket→ connect(),建立与服务器的连接→●send(),recv()发 送和接收数据→??close(),关闭客户端。 2、掌握linux系统中线程的使用方法: 在linux中创建新的线程可以使用两种方式:pthread_create()函数和fork()函数。 pthread_create()使用: int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void*), void *restrict arg); 参数:thread输出线程id,attr 线程属性,默认NULL,start_routine线程执行函 数,arg线程执行参数。函数成功时返回0,否则返回错误码。 fork()函数的使用: 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子 进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是 子进程中返回0值而父进程中返回子进程ID。这样,对于程序,只要判断fork函 数的返回值,就知道自己是处于父进程还是子进程中。 四、实现过程 1、4.4.3交叉编译工具的PATH已经生效,在任意目录下能够执行arm-linux-gcc –v 2、在开发板上进行内核以及根文件系统的移植,构建嵌入式linux系统 3、nfs网络文件系统的配置: 1.打开nfs1175.exe 2.配置板子ip,使其和电脑ip在同一个网段 3.挂载:在板子上运行#mount -t nfs -o nolock 202.204.100.66:/f/aaa/LINUX/Share /mnt/nfs 4.使用cd /mnt/nfs/0522 进入nfs共享目录下,ls 显示共享目录下的文件; 4、仔细阅读提供的代码server.c和client.c Target为服务器,Ubuntu为客户端。修改和 完善代码,在原代码的基础上实现新的功能 5、交叉编译server.c(# arm-linux-gcc -lpthread -o server server.c) 6、本地编译client.c(# gcc -o client client.c -lpthread) 7、在板子上运行server可执行文件:#chmod 777 server,运行server:#./server 8、在ubuntu上运行client程序:# ./client 202.204.100.67; 五、实验结果 客户端运行client与服务器端运行server建立通信

Server以太网通信协议20060417

动力环境监控系统以太网通信协议 一、报文说明 此命令格式只限于客户端程序同服务器程序之间进行数据传输采用的命令,任何同服务器程序之间进行的通信的程序均被服务器视做客户端程序。 报文说明基本格式如下: 功能码:?? 简短描述:[简短描述语] 描述:[命令的详细介绍] 数据区:[数据区的数据介绍] 服务器同工作站画面通信: 工作站画面 服务器 服务器同前置通信处理机通信: 前置通信处理机 服务器 附加说明: [附加说明列表或说明文字] 二、功能号码索引 命令功能号码分配表速查

三、报文结构定义 3.1 报文结构: 3.2 报文字段结构C 3.2.1 报文头部 C语言结构定义 typedef struct { WORD wFunctionID; WORD wControl; WORD wReason; WORD wDataLen; } MESSAGEHEAD; 结构成员说明: wFunctionID 命令功能号码,此部分唯一的标示出了报文的功能。具体的命令含义及其相应的附加数据请参考2.2.2部分<命令功能号码定义>一节的详细介绍。 wControl 报文控制域。 D0=1表示该报文为请求服务报文,D0=0表示该报文为应答服务报文; (注:请求、应答均相对于服务器而言) D1=1表示该报文需要对方的确认,D1=0表示该报文不需要对方的确认; wReason 报文传送原因。D0-D7被采用,具体定义可以讨论修改: 参数部分的数据长度 3.2.2命令功能号码定义 此部分列出了详细的服务功能码及其对应的数据域部分的组织含义。 四、命令分配详解

功能码:0 描述:保留 功能码: 1 简短描述:系统登录 描述:客户机登录系统时所使用的命令。客户机使用此命令向服务器声明自己的身份及用户信息,供服务器判断自己的合法性。服务器在接收到了此命令后对用户的身份进行确 认,并返回登录结果。 数据区:申请报文包括用户身份证号码、用户名字、用户密码三部分;前置通信机登录时,用户名字字段前15个字节采用以0结尾的字符串”前置通信处理机”填充,密码部分采 用本前置通信处理机的编号(4字节)。 服务器同工作站画面通信: 工作站画面 服务器 服务器同前置通信处理机通信: 前置通信处理机

S7-200通讯的编程步骤---自由口通讯

PLC 和变频器 频器博客原创(https://www.doczj.com/doc/f67974833.html,)
S7通讯的编程步骤-----自由口通讯 S7-200 通讯的编程步骤---自由口通讯
S7-200 自由口通讯是基于 RS485 通讯基础的半双工通讯, 因此, 发送和接收指令不能同时执行。 自由口通讯使用 SMB30(口 0)和 SMB130(口 1)来定义通讯口 的工作模式。SMB30/SMB130 各位的定义如下:
图 1:通讯口工作模式寄存器
使用自有口通讯,SM30.0 和 SM30.1(SM130.0 和 SM130.1=0) 必须分别为 1 和 0。 发送指令(XMT) 一、 发送指令(XMT) 使用 XMT 发送指令可以把存于缓冲区中的数据, 一次发送一个或
1

PLC 和变频器 频器博客原创(https://www.doczj.com/doc/f67974833.html,)
多个字节的数据,最多为 255 个。发送完最后一个字符后还可以连接 到一个发送完中断(端口 0 为 9,端口 1 位 26,见下表) 。
图 2:中断事件表
2

PLC 和变频器 频器博客原创(https://www.doczj.com/doc/f67974833.html,)
发送缓冲区的格式如下表所示:
图 3:发送缓冲区的格式 说明: T+0:发送信息的字节个数需要提前定义。 T+1~T+255:要发送的数据字节
和 XMT 有关的寄存器:SMB4 的 SM4.5 和 SM4.6。SM4.5=1 时,口 0 发送完毕;SM4.6=1 时,口 1 发送完毕。 由以上可以看出,有两种方法可以检测端口 0 或 1 的数据发送 状态:一种是利用中断,一种是利用寄存器 SMB4 的第 5 位(口 0) 和第 6 位(口 1) 。 接收指令(RCV) 二、 接收指令(RCV) 使用接收指令(RCV)可以从端口 0 或 1 接收一个或多个字节的 数据(最多 255 个) ,并存于数据缓冲区。接收完最后一个字节后可 以连接到一个接收完中断(口 0 是 23,口 1 是 24,见图 2 所示) 。 接收缓冲区的格式如下表所示:
3

C#串口通讯编程

C#中串口通信编程收藏 本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手 或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置 : BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。 串口的硬件知识

在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦 开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样 的波特率和数据位数。 无猫模式 没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和RTS & CTS 也需要交叉。 RS232针图 这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。 [示例程序] 主程序 如果想使用默认属性,按“Save Status”按钮,如果想改变属性按“Property”。它会弹出下图:

以太网的技术

以太网的技术 1以太网的发展 以太网是当今现有局域网采用的最通用的通信协议标准,组建于七十年代早期。Ethernet(以太网)是一种传输速率为10Mbps的常用局域网(LAN)标准。在以太网中,所有计算机被连接一条同轴电缆上,采用具有冲突检测的载波感应多处访问(CSMA/CD)方法,采用竞争机制和总线拓朴结构。基本上,以太网由共享传输媒体,如双绞线电缆或同轴电缆和多端口集线器、网桥或交换机构成。在星型或总线型配置结构中,集线器/交换机/网桥通过电缆使得计算机、打印机和工作站彼此之间相互连接。由于其简单、成本低、可扩展性强、与IP网能够很好地结合等特点,以太网技术的应用正从企业内部网络向公用电信网领域迈进。以太网接入是指将以太网技术与综合布线相结合,作为公用电信网的接入网,直接向用户提供基于IP的多种业务的传送通道。以太网技术的实质是一种二层的媒质访问控制技术,可以在五类线上传送,也可以与其它接入媒质相结合,形成多种宽带接入技术。以太网与电话铜缆上的VDSL相结合,形成EoVDSL技术;与无源光网络相结合,产生EPON 技术;在无线环境中,发展为WLAN技术。 以太网技术作为数据链路层的一种简单、高效的技术,以其为核心,与其它物理层技术相结合,形成以太网技术接入体系。EoVDSL方式结合了以太网技术和VDSL技术的特点,与ADSL和(五类线上的)以太网技术相比,具有一定的潜在优势。WLAN技术的应用不断推广,EPON技术的研究开发正取得积极进展。随着上述“可运营、可管理”相关关键技术问题的逐步解决,以太网技术接入体系将在宽带接入领域得到更加广泛的应用。 同时,以太网技术的应用正在向城域网领域扩展。IEEE802.17RPR技术在保持以太网原有优点的基础上,引入或增强了自愈保护、优先级和公平算法、OAM等功能,是以太网技术的重要创新。对以太网传送的支持,成为新一代SDH设备(MSTP)的主要特征。10G以太网技术的迅速发展,推动了以太网技术在城域网范围内的广泛应用,WAN接口(10Gbase-W)的引入为其向骨干网领域扩展提供了可能。 随着网络的发展,传统标准的以太网技术已难以满足日益增长的网络数据流量速度需求。在1993年10月以前,对于要求10Mbps以上数据流量的LAN应用,只有光纤分布式数据接口(FDDI)可供选择,但它是一种价格非常昂贵的、基于100Mbps光缆的LAN。1993年10月,Grand Junction公司推出了世界上第一台快速以太网集线器Fastch10/100和网络接口卡FastNIC100,快速以太网技术正式得以应用。随后Intel、SynOptics、3COM、BayNetworks等公司亦相继推出自己的快速以太网装置。与此同时,IEEE802工程组亦对100Mbps以太网的各种标准,如100BASE-TX、100BASE-T4、MⅡ、中继器、全双工等标准进行了研究。1995年3月IEEE宣布了IEEE802.3u 100BASE-T快速以太网标准(Fast Ethernet),就这样开始了快速以太网的时代。 快速以太网与原来在100Mbps带宽下工作的FDDI相比它具有许多的优点,最主要体现在快速以太网技术可以有效的保障用户在布线基础实施上的投资,它支持3、4、5类双

1C#中串口通信编程教程

C#中串口通信编程教程 本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。我们将使用标准的RS232C在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort类。 创建SerialPort对象 通过创建SerialPort对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp=new SerialPort(); 默认情况下,DataBits值是8,StopBits是1,通信端口是COM1。这些都可以在下面的属性中重新设置 : BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。 串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样的波特率和数据位数。

以太网通信接口电路设计规范

目录 1目的 (3) 2范围 (3) 3定义 (3) 3.1以太网名词范围定义 (3) 3.2缩略语和英文名词解释 (3) 4引用标准和参考资料 (4) 5以太网物理层电路设计规范 (4) 5.1:10M物理层芯片特点 (4) 5.1.1:10M物理层芯片的分层模型 (4) 5.1.2:10M物理层芯片的接口 (5) 5.1.3:10M物理层芯片的发展 (6) 5.2:100M物理层芯片特点 (6) 5.2.1:100M物理层芯片和10M物理层芯片的不同 (6) 5.2.2:100M物理层芯片的分层模型 (6) 5.2.3:100M物理层数据的发送和接收过程 (8) 5.2.4:100M物理层芯片的寄存器分析 (8) 5.2.5:100M物理层芯片的自协商技术 (10) 5.2.5.1:自商技术概述 (10) 5.2.5.2:自协商技术的功能规范 (11) 5.2.5.3:自协商技术中的信息编码 (11) 5.2.5.4:自协商功能的寄存器控制 (14) 5.2.6:100M物理层芯片的接口信号管脚 (15) 5.3:典型物理层器件分析 (16) 5.4:多口物理层器件分析 (16) 5.4.1:多口物理层器件的介绍 (16) 5.4.2:典型多口物理层器件分析。 (17) 6以太网MAC层接口电路设计规范 (17) 6.1:单口MAC层芯片简介 (17) 6.2:以太网MAC层的技术标准 (18) 6.3:单口MAC层芯片的模块和接口 (19) 6.4:单口MAC层芯片的使用范例 (20) 71000M以太网(单口)接口电路设计规范 (21) 8以太网交换芯片电路设计规范 (21) 8.1:以太网交换芯片的特点 (21) 8.1.1:以太网交换芯片的发展过程 (21) 8.1.2:以太网交换芯片的特性 (22) 8.2:以太网交换芯片的接口 (22) 8.3:MII接口分析 (23) 8.3.1:MII发送数据信号接口 (24) 8.3.2:MII接收数据信号接口 (25) 8.3.3:PHY侧状态指示信号接口 (25) 8.3.4:MII的管理信号MDIO接口 (25) 8.4:以太网交换芯片电路设计要点 (27) 8.5:以太网交换芯片典型电路 (27) 8.5.1:以太网交换芯片典型电路一 (28)

通用串口通讯程序设计

通用串口通讯程序设计 作者:和光同尘版本:V1.0 序 做硬件开发近20载,花了近十年做基础开发,对硬件开发略知一二,接触的做国防/工业大项目的人才我就是和他们沟通中获取了很多思想;人生已过而立之年,不惑解疑,总想写点什么。从一线研发(做了4年),开发(3年),硬件开发主管(12年),算起来人生从不到弱冠之年(中专毕业)开始接触MCS51、AVR等8位处理器到ARM v7核、CoretxM 核的32位处理器,CPLD/FPGA、PLC…………啰嗦了!! 最近因为工作原因需要把一些自己感悟的记录下来,希望传递给入门的有心沉下心做基础健壮扎实的初学者。

正文 做嵌入式硬件开发一般都会用到通讯数据交互,这就涉及通讯协议/规约的设计。本文从基础的串口(RS232、RS485等)为模型进行讲解。 说道串口通讯,就是编写串口程序,简单的就是1个字节的发送,1个字节的接收,但这不能满足绝大多数实际工作业务需求,实际需要一串字节数据的交互,A发送,B接收……Z 接收;Z机……B机收到根据情况需要回复(ACK)A机,这个过程就叫交互双向通讯(本文不讨论多主机、1主机相对复杂通讯机制。)。这种通讯就需要提前设计好通讯的规约(大家约定好暗号——每个字节代表什么意思)。 接下来编写通信程序(发送/接收),如何写出一个健壮高效串口程序?是否健壮高效其实很大一部分取决于通讯接收程序的架构。 通讯程序编写依据是——通讯规约,通讯帧的设计。 ●I类通用型: ||帧头段|===|数据段|===|校验码|===|帧尾段|| ●II类时隙通讯: ||开始时隙T(T1T2T3T4T5T6)|=|功能码|=|数据段|=|校验码|=|结束时隙T(T1T2T3)|注意:时隙只是纯粹的前后两帧数据的间隔时间,这期间坚决不能有数据产生。 1.1I类通用型 ◆帧头段 帧头段用于鉴别一串字节流中1帧数据起始位置,这个帧头段必须具有足够的特殊标识(易分辨)。 什么样的特殊标识可作为帧头? 根据个人经验: ①具有监测通讯波特率功能特点:0B01010101(55H)、0B10101010(AAH)或0B00000000(00H)、0B11111111(FFH); ②利用ASCII码如MODBUS ASCII规约以冒号‘:’(3AH)作为帧头。也可以采用ASCII ‘U’(55H)、‘@’(40H)等等 只要保证帧头字节数据内容,在所有通讯数据字节流中,除帧头有意为之而出现,那就是帧头。建议最好有两个字节及以上,这样数据出现与帧头一致的概率更加小,才做到独一无二的特殊性。

串行端口程序设计

串行端口程序设计 一、实验目的 了解在linux环境下串行程序设计的基本方法。 掌握终端的主要属性及设置方法,熟悉终端I /O函数的使用。 学习使用多线程来完成串口的收发处理。 二、实验内容 读懂程序源代码,学习终端I /O函数的使用方法,学习将多线程编程应用到串口的接收和发送程序设计中。 三、预备知识 有C语言基础。 掌握在Linux下常用编辑器的使用。 掌握Makefile 的编写和使用。 掌握Linux下的程序编译与交叉编译过程 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC机Pentium 500以上, 硬盘10G以上。 软件:PC机操作系统REDHAT LINUX 9.0+MINICOM+ARM-LINUX开发环境 五、实验原理 异步串行I /O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。

为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图2.3.1串行通信字符格式 图2.3.1给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600等。 接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: ●奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。 ●帧格式错:一个字符从起始位到停止位的总位数不对。 ●溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。 每一种错误都会给出相应的出错信息,提示用户处理。一般串口调试都使用空的MODEM 连接电缆,其连接方式如下:

Java串口通信编程指南

Java串口通信编程指南

1. 概述 在java中,利用Java Communication包可以操作串口,但官方的包在3.0之后就只支持Linux和Solaris平台了,Windows平台的只支持到98年出的2.0版本,不过在XP下还能使用。另外,也可以用开源的Rxtx实现串口通信,这里仅以Java Communication包,在Windows 平台实现串口通信进行说明。 2. 前期准备 2.1. 下载Java Communication包 ?下载地址如下:https://www.doczj.com/doc/f67974833.html,/Jolt/javacomm20-win32.zip。 ?如果是非Windows平台,请到Sun网站选择其他版本下载。地址如下: https://www.doczj.com/doc/f67974833.html,/download/products.xml?id=43208d3d 2.2. 配置 ?解压缩javacomm20-win32.zip ?把win32com.dll拷贝到{JAVA_HOME}\jre\bin ?把comm.jar拷贝到{JAVA_HOME}\jre\lib\ext ?把https://www.doczj.com/doc/f67974833.html,m.properties拷贝到{JAVA_HOME}\jre\lib ?set CLASSPATH={JAVA_HOME}\jre \lib\ext \comm.jar;%classpath%

3. 实现过程 主要步骤包括: ?获得串口标识 ?打开串口 ?设置串行端口通讯参数 ?获取输入(出)流 ?进行读写操作 3.1. 获得串口标识 指定串口的端口号,生成串口的标识类的实例。 https://www.doczj.com/doc/f67974833.html,mPortIdentifier是通讯端口管理器,控制访问到通讯端口的中心类。一个应用程序首先使用CommPortIdentifier中的方法,通过相关的驱动去获取那些通讯端口是可用的并且选择一个端口便于开始。它包括如下功能: a. 通过驱动决定通讯端口是可用的。 b. 打开通讯端口为了I/O操作。 c. 决定端口的拥有者。 d. 解析端口拥有者的争夺。 e. 管理事件显示在端口拥有者的中的状态改变。 示例代码如下: 代码: 3.2. 打开串口 示例代码如下: 代码:

串行异步通信程序设计

******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 《通信系统综合训练》课程设计 题目:串行异步通信程序设计 专业班级:通信工程(1)班 姓名:李银环 学号:11250134 指导教师:王惠琴 成绩:

摘要 在Windows环境下实现通信的方法主要有利用MSComm控件和直接用Windows API编程,软件采用Microsoft Visual C++ 6.0,利用MSComm控件编程相对来说更简单一些,而直接使用Windows API编程更灵活一些。 本次课程设计分析了串行异步通信的基本原理,在VC++6.0的环境下利用MSComm控件实现了两个PC机的COM口间的数据发送和接收。本文通过对COM1口进行初始化编程,以及对建立的工程中的每个对话框和按钮分别进行编程和设置,成功的实现了利用PC机的两个COM口进行异步通信,并能根据设置调整异步传行通信参数。 关键词:VC++6.0;MSComm控件;串行异步通信

目录 前言 (1) 第1章串行异步通信基本原理 (2) 1.1 串行通信协议 (2) 1.2 串口通信的基本概念 (3) 1.3 RS-232简介 (4) 第2章 VC++软件简介 (5) 2.1 VC++6.0简介 (5) 2.2 Microsoft Communications Control 控件 (6) 第3章串行异步通信系统分析 (7) 第4章串行异步通信系统设计 (8) 4.1建立工程 (8) 4.2 在程序中添加MSComm控件 (9) 4.3 初始化串口:设置MSComm控件的属性 (11) 4.4 发送数据 (12) 第5章串行异步通信程序调试 (18) 5.1 计算机串口设置 (18) 5.2 程序运行结果 (18) 参考文献 (20) 附录 (21) 致谢 (29)

计算机网络程序设计(c语言课程设计)

ping程序设计 ping命令是使用频率极高的一个网络测试命令,用以测试从一个主机到另一个主机间的网络上否可达。windows自带的ping命令具有强大的功能,它有很多选项用于实现不同的测试目的。本章模仿windows的ping命令,用c语言实现了一个简单的命令。本章着重讲述ping命令的实现原理和c语言的网络编程方法。读者可以在本章的基础上,对本章实现的ping命令进行扩展,开发出功能更强大、更完善的ping命令,并进一步掌握网络编程的方法。 9.1 设计目的 本章通过设计Ping程序,讲解Ping程序的实现原理,并初步讲解了c语言网络编程技术。本章涉及很多网络编程函数和编程技巧。包括库文件的导入;winsock的初始化、注销;socket 的创建、关闭;设置socket选项;根据主机名获取IP地址;从堆中分配一定数量的空间、释放从堆中分配的空间;获取当前进程ID号;数据报的发送;数据报的接等。 通过本程序的训练,使读者对网络编程有一定的了解,掌握Ping程序的设计方法,掌握网络编程的方法和技巧,从而编写出功能更强大的程序。 9.2功能描述 本章用 c 语言实现的ping命令,能用于测试一个主机到另一个主机间的联通情况,程序还提供了几个选项以实现不同的功能。 (1)实现ping功能。程序能实现基本的ping操作,发送ICMP回显请求报文,接收显应答报文。 (2)能记录路由。程序提供了“-r”选项,用以记录从源主机到目的主机的路由。 (3)能输出指定条数的记录。程序提供了“-n”选项,用以输出指定条数的记录。 (4)能按照指定大小输出每条记录。程序提供了“datasize”选项,用以指定输出的数据报的大小。 (5)能输出用户帮助。程序提供了用户帮助,显示程序提供的选项以及选项格式等。 9.3 总体设计 9.3.1 功能模块设计 1. 功能模块图 本系统共有 4 个模块,分别是初始化模块、功能控制模块、数据控制模块、数据报解读模块和ping测试模块,如图9.1所示。各模块功能描述如下。

以太网通讯方式

1.1以太网通讯方式 1.PLC300/400-PLC300/400之间的通讯 1.1.两个PLC程序在一个文件中,清楚地知道两个PLC的型号,组态,建立以太网通讯1.1.1硬件组态 打开SIMATIC Manager,根据我们系统的硬件组成,进行系统的硬件组态,如图1-1:插入2个S7300的站,进行硬件组态,如图1-2和图1-3: 图1-1 分别组态2个系统的硬件模块:

图1-2 图1-3 设置CP343-1、CP343-IT模块的参数,建立一个以太网,其MPI、IP地址的设置步骤如下:●双击CP343-1一栏,显示如下界面: 图1-4 ●单击Properties(属性),选择SetMAC address(同时复选IP地址)

图1-5 ●CP343-IT的属性设置步骤与上面CP343-1的设置方式完全相同。 ●组态完2套系统的硬件模块后,分别进行下载,然后点击Network Configration按钮, 打开系统的网络组态窗口NetPro,选中CPU314,如下图: 图1-6 ●5、在窗口的左下部分点击鼠标右键,插入一个新的网络链接,并设定链接类型为 ISO-on-TCP connection 或TCP connection或UDP connection 或ISO Transport connection,如下图:

图1-7 ●6、点击OK后,弹出链接属性窗口,使用该窗口的默认值,并根据该对话框右侧信息 进行后面程序的块参数设定: ●7、再单击Properties(属性),设置TCP连接。

图1-9 ●当2套系统之间的链接建立完成后,用鼠标选中图标中的CPU,分别进行下载,如图示: 图1-10 到此为止,系统的硬件组态和网络配置已经完成。 1.1.2软件编码 ●在第一个PLC的程序中,调用通讯模块,如图所示,在左边“libraries->SIMATIC->CP300”中,双击选择“FC5”,用于发送数据,如图所示:

C#中串口通信编程

本文将介绍如何在.NET平台下使用C#创建串口通信程序,.NET 2.0提供了串口通信的功能,其命名 空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。 我们将使用标准的RS 232 C 在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。 命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。 创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。 我们将要用到的SerialPort 类的方法: ReadLine():从输入缓冲区读一新行的值,如果没有,会返回NULL WriteLine(string):写入输出缓冲 Open():打开一个新的串口连接 Close():关闭 Code: //create a Serial Port object SerialPort sp = new SerialPort (); 默认情况下,DataBits 值是8,StopBits 是1,通信端口是COM1。这些都可以在下面的属性中重新设置: BaudRate:串口的波特率 StopBits:每个字节的停止位数量 ReadTimeout:当读操作没有完成时的停止时间。单位,毫秒 还有不少其它公共属性,自己查阅MSDN。

串口的硬件知识 在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦 开始位传出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样 的波特率和数据位数。 无猫模式 没有Modem模式的电缆只是简单地交叉传送和接收线。同样DTR & DSR, 和 RTS & CTS也需要交叉。RS232针图 这里,我们三条线。互连2和3(一段的2pin连接3pin),连接两端的5pin。 [示例程序] 主程序

相关主题
文本预览
相关文档 最新文档