报马网 · 
当前位置:报马网 > 报马网 >
如何在Multibus-CPU开发板上实现串口服务器功能8
发布时间: 2019-10-07

  和控制设备也在逐步地走向网络化,以便共享网络资源。所以,在电子设备日趋网络化的今天,利用串口服务器来实现网络通信具有十分重要的意义。利用基于TCP/IP的串口数据流传输的实现来控制管理设备,无需投资大量的人力、物力即可完成对传统设备的管理、更换或者升级。

  模块通过串行控制总线接入串口服务器的此类端口;另一类是以太网口,通过网线将串口服务器接入局域网的交换机等设备中。串口服务器在工作中可自动将RS232/422/485格式的串行数据与基于TCP/IP协议的以太网数据包进行透明转换。一方面,串口服务器收到来自某一串行端口的现场数据,将其转换为TCP/IP格式的数据,通过以太网口进行网络上传;另一方面,串口服务器在局域网中捕获合法的数据协议包,通过解包来解析出有效的控制信息,通过监控机指定的串行端口将控制命令以串行数据的方式传送给远程RTU.硬件平台

  开发板。MulTIBus-CPU系统是基于AT91RM9200微控制器的智能化多总线测控系统,该系统可以建立基于Modbus-RTU总线协议的总线通信,使系统设备可以无缝地接入到基于Modbus-RTU模式的总线系统,以及可靠、实时并准确地完成工业现场的数据采集和信号输出等功能。系统支持Modbus-RTU协议,同时,系统还支持多种总线总线,工业以太网(UDP协议),串口RS232通信接口USB通信接口。

  上的Linux的主要优势:可扩展的完整操作系统提供了可靠的多任务环境,基于开源模型(GPL),利用多种UNIX和开源应用程序以及用于基于ARM技术的多种设计(包括网络和无线领域)。Modbus协议Modbus协议是应用于电子控制器的一种通信语言。利用这个协议,控制器相互之间以及控制器通过网络(例如以太网)和其他设备之间进行通信。

  主流的Modbus协议为标准Modbus协议(Modbus RTU协议)和Modbus TCP协议。标准的Modbus通信协议定义了报文帧的每一字节,定义了怎样将数据打包成报文帧以及如何解码。888pg玄机跑狗高手论坛!报文帧包括一个字节的地址码,一个字节的功能码,数据和两个字节的校验码。其中,校验码采用CRC校验。

  Modbus TCP协议是在标准Modbus协议的基础上进一步发展而来的。它是将Modbus协议嵌入到底层TCP/IP协议中构成的,这样就在TCP/IP的以太网上实现了客户机-服务器架构的Modbus报文通信。二者的数据帧结构如图2所示。

  分析Modbus TCP协议和RTU协议,可以非常清楚地看出两者的主要区别。与Modbus RTU协议相比,Modbus TCP数据帧里已不再有CRC校验,而这部分校验的任务是由TCP/IP协议和以太网的链路层来完成的。另外,Modbus TCP较标准的Modbus协议还加入了一个MBAP报文头,由它来解释说明Modbus的参数和功能。其他部分两者可以互相通用。如果TCP协议转换为RTU协议,那么,只需要把TCP协议MBAP头中的“单元标识域”和后续字节组成一帧,再加上此帧的CRC校验就可以组成RTU协议,而在串行链路上进行发送。如果是RTU协议转换到TCP协议的话,那么要根据实际情况组建一个MBAP头。

  在设计串口服务器之前,首先要配置相应的设备号并给设备配置相应的串口服务器IP地址、TCP通信端口号和串口参数等,这些配置信息放在一个txt文件当中。

  我们设计了一个Configinfo.txt文件,当我们需要向一个设备传递信息时,需要首先从文件中读取配置信息,对相应的串口及工控板的网络进行配置,然后再进行相应的操作。这时,我们在其中用到了两个自定义函数:GetConfigValue和GetCFGValue.其中GetConfigValue的功能是将Configinfo.txt中的信息配置给串口服务器,它调用GetCFGValue函数,在Configinfo.txt中寻找相应的配置信息项,并截取相应的配置信息。它们的程序框图如图3(a)和3(b)所示。

  在对串口进行相应的操作时,首先要打开串口并配置串口的波特率、数据位、停止位和工作模式等。这些关于串口的操作都封装在一个文件当中,以使结构清晰,方便检查以及修改或增加更多的操作函数。所进行的包括以下几种操作。

  串口的打开和关闭:打开串口时,需要首先判断串口的类型,然后以一定的方式打开串口并保存原来的串口配置信息,最后对串口进行波特率、数据位、停止位和奇偶校验位的设置。关闭串口时,需要将原来保存的终端信息恢复,使串口回到打开前的状态。

  对串口进行数据读写:串口的读写操作是串口服务器最基本的功能,当有数据传送过来时,需要通过串口发送。写串口操作会把内存中的数据写入所指的文件,读串口操作会把串口送来的数据写入内存中。分别用wri

  omport来实现。对串口进行设置:需要设置波特率、数据位、停止位和奇偶校验位。调用定义的封装函数,来完成这些操作。串口的工作模式通过termios函数的配置来控制。

  Modbus TCP/RTU相互转换功能的实现这一步是串口服务器设计的关键,其转换重点在于CRC校验和MBPA报头的变换。在这里,定义mod2tcp函数来完成Modbus RTU到TCP格式的转换,定义tcp2mod函数来完成Modbus TCP到RTU格式的数据转换。例如,来自Modbus主站的TCP协议请求,经串口服务器转换成Modbus RTU格式,经485口发送给从站,并将从站相应数据经485接口送入串口服务器,转换成Modbus TCP格式信息返回主站(图4)。

  由此可见,TCP格式字节数=RTU格式字节数-2+6,获取的可用数据均相同,因此其程序实现就不再是难题了。

  领域中最常用的一种差错校验码。RTU方式时,CRC校验传送的全部数据,它忽略信息中单个

  数据的奇偶校验方法。CRC校验的关键在于数据的匹配,将得到的数据如何正确的套用到CRC校验当中是其中的关键。CRC校验有既定的规则,其程序实现非常简单,只需要以下几步:CRC字节的初始化;将数据导入进行CRC计算;返回计算出的CRC值。串口服务器的设计与实现

  n()函数,它会调用前文介绍的函数来实现串口服务器功能,故其头文件中要包含前文所述的各函数文件。程序流程如图6所示。

  main()函数应用Linux C函数编程,其中应尤其注意socket的应用,socket要先建立再bind();在信号量中的参数要配置正确;进程的管理方面,要注意进程退出时先退出子进程,在所有进程都完成之后再关闭socket.

  过程中,有时会出现TCP到RTU发送时数据包错误,不能正确地将TCP数据转换为RTU数据。

  原因在于,测试过程中,Windows下的PC终端向Linux工控板发送数据,但是Windows的实时性并不很好,不能及时地发送数据,有时会出现一次发送两包数据给串口服务器的现象;另外,工控板中Linux下的TCP/IP协议剪裁封装不是很完善,导致其接收处理数据的能力比较差。当多帧数据同时到达时,串口服务器未能正确将后一帧数据发送出去,而把一帧数据分割到两帧,导致数据帧错误。这就是发生上述数据完全错误的原因。这时,需要给串口服务器添加数据的分帧处理功能,在接收到数据时,先判断数据帧是否是有效数据帧,确保每次发送的数据都能是完整的一帧,不会出现数据帧错位,而导致数据的完全错误。

  本文的目标是在以AT91RM9200芯片构建的MulTIbus-CPU开发板上实现串口服务器功能。该串口服务器应用Modbus相关协议,将传统的以RS485/232串口通信设备接入工业以太网,实现上位机和设备之间的信息交互。本串口服务器程序已经能够在开发板上正确运行。

  正点原子推出的“开拓者“、”新起点”两款FPGA开发板功能强大,配有教科书级的文档教程;配套的视频分为工具篇

  TMS320VC5416 是TI 的一款16bit 定点高性能DSP,由于VC5416的功耗低、性能....

  英飞凌联手合作伙伴索那声美,推出创新的嵌入式单麦克风远场语音控制方案,专为智能家居应用打造,可实现远....

  TC234 评估板,默认 MCU 型号为 SAK-TC234LP-32F200F,通过 TC234 ....

  我用UCGUIBuilder 4.0 建了[url=]Removeformat[/url]一个简单的界面,生成的C文件下载到mini 板 实验29 UCG...

  我战舰v2.0开发板,移植好了ucGui,现在想显示个桌面图标,但是编译时候老出现..\OBJ\LCD.axf: Error: L6218...

  学弟学妹们要学STC15W4K48S4 这款芯片,开发板是我们自己做的,哪位朋友有这款芯片的相关资料以及开发例程,还望...

  GPIO还好没有任何问题很快就调通了,但是在STM实验这里就出了问题,经过了很长一段时间,通过仿真在....

  根据UM描述,锁步核必须在冷启动时,CPU加载BMI中有效的启动模式标志位BMI[9]将LockSt....

  T13定时器没有中心对齐,也没有捕获功能,计划做为触发定时比较时间触发应用,可能需要和ADC模块采样....

  9月20日,废柴男主热血逆袭的玄幻小说《吞天记》上榜第米尔携手电子发烧友、电路城、面包板三大平台举办的MYD-C7Z010/20开发板试用活....

  大家好, 我刚刚杀死了我的两个全新的spartan-3a开发板中的一个(HW-Spar3a-sk-uni-G; Rev D)。 当我的老板进...

  如果您的FPGA设计无法综合或者没能按预期在开发板上正常工作,原因往往不明,要想在数以千计的RTL和约束源文件...

  众所周知,JZ2440 V2很小巧,精致。今天单就JZ2440的串口来讨论一些问题。我们在用串口进行调试的时候,需要用J...

  虽然这款芯片本人使用起来有点棘手,但既然是国产,支持一下也是应该的。闲话少说,附上本人最新移植的ucosii2.92+lwi...

  【MiCO分享贴】微信开关窗户 撸主比较怕热,在夏天的时候就比较纠结。晚上开着空调才睡得好,但是空调后半夜也一...

  「树莓派4」全新现货,限时8.7折 树莓派4(2GB)每台仅限:343元(包邮) 树莓派4(4GB)每台仅限:420元(包...

  各位有DSP开发板的同事们 , 求购,刀哥要一块TMS320系类的板子 ,不要藏...

  SAE J1939标准是美国汽车工程师协会(SAE)发布的以CAN总线为核心的车辆网络串行通讯和控制....

  数据采集任务多在户外进行,所以数据采集系统通常要满足实时性、专用性、可靠性和低功耗等性能,这些特性在....

  根据国外媒体消息,为了新一代USB做准备,USB Promoter Group最近宣布推出新标准“U....

  本设计采用了价格为8 美元的8051 架构微控制器, 还有一只PGA(可编程增益放大器),以及一只2....

  USB-2019为泓格新推出USB接口数据撷取的解决方案,可以使用标准USB连接各式模拟信号设备,由....

  CC2531是TI公司针对2.4 GHz ISM频带推出的第二代支持ZigBee/IEEE 802.....

  CDC类是通信设备类的简称,是专为各种通信设备定义的子类。根据应用场合的不同,CDC类可以分成以下不....

  USB2.0和3.0外壳是看不出来,但是我们可以拿起自己的身边的数据线,U盘看一下,这些USB公口的....

  CAN总线主控机系统由单片机最小系统、CAN总线通信接口、人机接口、点滴速度传感器和串口通信下载模块....

  据介绍,ACE最强大的功能是能以高阶语法来描述指令,并自动产生RTL电路。例如,向量语法让开发者能像....

  CMOS图像传感器是近年来得到快速发展的一种新型固态图像传感器。它将图像传感部分和控制电路高度集成在....

  在个人技术领域,以单一标准着陆以统治它们是一个难以实现的目标。最好的情况是,你最终会参加一场格式大战....

  I2C总线C是一种双线双向接口,包括一个时钟信号和一个数据信号(SCL和SDA)。在不增加任何其他信号的情....

  Oppo公司在发布了全新的Oppo Reno智能手机系列之后,该公司现在正在为下一代产品做准备。Op....

  一直以为谷歌官方不会在 Chromebook对苹果设备提供 USB 支持,现在看来,这个不可能的事情....

  据外媒Appleinsider报道,设备公司ChargerLAB发布推文中称,该公司将为苹果提供基于....

  相对于Mini USB,它的体积更小,更薄,很多移动设备包括平板电脑、移动硬盘、数码相机、摄像头都淘....

  很多车主都会在车里备一条充电线,有时候手机没电了可以插在车载USB接口上给手机充电,其实这里有个误区....

  为了减小USB电缆上的EMI辐射,通常在Vcc插脚都串接有铁氧体磁环。磁环的串联阻抗以及RF阻尼是重....

  这里请大家注意,CEC1x02开发板有两个扩展排针兼容MikroElektronika MikroB....

  您需要做的第一件事是切断内部USB线的插头留下足够的电线然后从电线根电线用于屏蔽。

  Google发布了他们的AIY项目套件,最初没有多少人可以访问它。我开始修改Google Assis....

  2019年8月6日-专注于引入新品推动行业创新的电子元器件分销商贸泽电子(Mouser Electr....

  “贸泽电子原创开发板设计大赛”在经过专家评审后共有100名选手/团队入围本次大赛。

  Ultra96 通过工业级 Delkin 16GB microSD 卡(随附于 Ultra96 板中....

  PiFace 控制和显示设备是一款即插即用设备,令创客无需借助键盘、鼠标或显示器即可操控Raspbe....

  该开发板提供了多种扩展接口,包括Arduino UNO和PMod,并且还可针对LPC546xx 微程....

  EnOcean GmbH公司首席市场营销官Andreas Schneider表示:“物联网的发展潜能....

  通过新增FRDM-K82F开发板,e络盟进一步丰富了其嵌入式解决方案产品库存,适用于需要可扩展性能及....

  Ultra96 是一款基于 Arm 技术的赛灵思Zynq UltraScale+ MPSoC开发板,....

  “赛灵思SDSoC开发环境让我们可以通过在单个熟悉的框架中结合我们基于HDL的logicBRICKS....

  首先,微处理器被编程为80MHz Olimex PIC32,焊接到PIC32-PINGUINO-OT....

  值得注意的一点时,当完成设计,想通过板载的仿真器下载编译完成的文件时,会使用到另一个MicroUSB....

  赛灵思 FPGA 凭借其在处理机器学习和视频转码等多种工作负载方面的高能效和高灵活性,成为了云数据中....

  为 QSPI 闪存、DDR3L 内存以及板载 eMMC 提供 Micron 内存解决方案,而非外部 ....

  USB接口可能是这个世界最通用的接口之一,我们大多数人见证了从USB 2.0规范到如今USB 3.2....

  MiniZed 是一款单核 Zynq 7Z007S 开发板。该紧凑型设计可通过 USB、Wi-Fi ....

  ZCU102上的 MPSoC 集成固化了四核 ARM Cortex-A53,双核Cortex-R5 ....

  我们决定创建一个 Word Color Match (单词颜色配对) 游戏。液晶显示器有一个RGB可....

  如果需要的话,客户可以添加他们自己的滤波器到这个参考设计,按照Dyplo的设计流程,转换成HDL代码....

  这里的基本概念是FPGA或者SoC中的具体化的IP和FMC-to-FMC线连接“消失”了,器件上的其....

  该测试仪以AT89S52单片机为核心,外接温湿度传感器SHTll、照度传感器TSL2561、四位共阴....

  本系统通过一个监控室和两个宿舍来模拟,通过RS 485总线来实现通信。考虑到现实中监控室要能监控整栋....

  本系统中巡更机采用3.6V可充电电池供电,充电电源由USB接口的5V电源线提供,电源电压监测电路如图....

  2017上半年,NXP推出了更新迭代的基于ARM Cortex-M4+ARM Cortex-M0+的....

  Trenz Electronic将模仿树莓派外形的板子统一命名为ZynqBerry,毫不掩饰模仿意图....

  最近几年,市面上使用Type-C的手机是越来越多了,而且,正反通用的Type-c已经成为了一种趋势。....

  SmartSnail开发板采用SOC方案,非AT指令,没有外加任何单片机,板载了可编程全彩RBG灯,....

  随着大屏手机的普及可以极大压缩了平板电脑市场,尽管iPad依然是这个星球上最热销的平板设备,但也不可....

  通用串行总线(USB)正迅速成为大部分PC外设的标准接口。由于它具有出色的速度、灵活性,并且支持设备....

  自制Arduino Mega2560开发板一块,预留了蓝牙、HC-02、ESP-12E(ESP826....


六合开奖结果现场直播| 本港台现场报码室| 六合宝典免费资料大全| 2018刘伯温四字梅花诗| 香港马会一码中特| 红姐高手论坛资料| 大赢家心水论坛首页| 香港马会救世网| 红太阳心水论坛| 999006开奖现场直播| 马报开奖结果| kj139本港台现场报码|