没有合适的资源?快使用搜索试试~ 我知道了~
首页基于Modbus/TCP协议实现人机界面与下位机通信
基于Modbus/TCP协议实现人机界面与下位机通信
374 浏览量
更新于2023-05-26
评论
收藏 108KB PDF 举报
在以通用伺服电机控制系统为下位机的基础上,开发了以实时内核μC/OSII、DSP、CPLD控制模块为核心的软硬件平台。通过移植uIP协议栈到DSP,在通信应用层上将Modbus帧嵌入到TCP帧中,简单可靠地实现了Modbus/TCP协议。
资源详情
资源评论
资源推荐

基于基于Modbus/TCP协议实现人机界面与下位机通信协议实现人机界面与下位机通信
在以通用伺服电机控制系统为下位机的基础上,开发了以实时内核μC/OSII、DSP、CPLD控制模块为核心的软
硬件平台。通过移植uIP协议栈到DSP,在通信应用层上将Modbus帧嵌入到TCP帧中,简单可靠地实现了
Modbus/TCP协议。
引言
随着工业以太网技术的快速发展,利用工业以太网与Internet连接可实现无缝集成的优势,嵌入式Internet技术已经在工控领域
得到了广泛应用。工业以太网是基于IEEE802.3 (Ethernet)的强大的区域和单元网络。其具有价格低廉、稳定可靠、通信速率
高、软硬件产品丰富、应用广泛以及支持技术成熟等优点,并且支持几乎所有流行的网络协议。目前,工业以太网技术在网络
的视频传输、人机界面(HMI),以及触摸屏通信等方面都得到了及时的应用。
以太网技术应用于工业控制时,体现在应用层的是实时通信、用于系统组态的对象,以及工程模型的应用协议。目前,还没有
统一的应用层协议,但受到广泛支持并已经开发出相应产品的主要有4种协议:HSE、Modbus TCP/IP、ProfINet、
Ethernet/IP。
1 系统的硬件架构设计
通用伺服电机控制系统的硬件架构如图1所示。
图1 系统硬件架构图
系统由DSP控制模块、CPLD辅助控制模块、CAN通信模块、网络通信模块、码盘信号处理模块、电源模块、电平转换模块、
D/A转换模块、I/O扩展模块、通道号显示模块等组成。其中,网络通信模块的硬件设计如图2所示。
图2 网络模块硬件设计原理图
采用TI公司工业控制领域先进的32位浮点DSP芯片TMS320F28335为主控芯片,网卡芯片采用台湾DAVICOM公司的
DM9000A芯片,人机界面采用威纶通触摸屏。DSP主要完成对网卡芯片的收发控制、应用层数据处理、控制算法的实现等功
能;网卡芯片实现下位机与人机界面之间数据的网络收发;威伦通触摸屏完成数据显示、参数设定,以及报警功能。
2 系统的软件设计
2.1 Modbus/TCP协议简介
Modbus/TCP协议由施耐德电气定义,并由ModbusIDA支持,它是在TCP/IP网络上应用Modbus协议。Modbus/TCP协议是
Modbus的派生产品,在OSI模型中,它位于第7层应用层,已成为工业自动化领域中网络信息传输的通用标准。Modbus
TCP/IP通信设备连接在以太网上,默认使用TCP502端口。其数据帧格式如图3所示,由MBAP报文头、功能码和数据三部分
组成,舍去了Modbus协议中的差错校验域,由TCP/IP协议来保证报文的正确性[6]。
图3 Modbus/TCP的消息帧结构
其中,MBAP报文头为7个字节,包括事务处理标识符、协议标识符、长度和单元标识符。由于Modbus/TCP的消息帧用于与
人机界面之间的通信,其所需功能码主要包括:01(读单个或多个线圈)、03(读保持寄存器)、05(写单个线圈)、
06(写单个寄存器)、16(写多个寄存器)等。
2.2 网卡驱动的编写
在DM9000A中,只有两个可以直接被处理器访问的寄存器,这里命名为INDEX端口和DATA端口。事实上,DM9000A中有许
多控制和状态寄存器,但它们都不能直接被处理器访问,访问这些控制、状态寄存器的方法是:
① 将寄存器的地址写到INDEX端口;
② 从DATA端口读写寄存器中的数据。
其实,INDEX端口和DATA端口是由芯片上的CMD引脚来区分的,低电平时为INDEX端口,高电平时为DATA端口。芯片CMD
引脚与DSP地址总线上的A2引脚相连,其16根数据线与DSP的数据总线相连,通过DSP总线接口来配置DM9000A的读写时序
的方法,可以省去通过I/O口模拟总线时序来实现寄存器读写的麻烦。
假设网卡芯片的片选信号由DSP外部总线中的XZCS7引脚控制,则总线连接后网卡芯片的基地址为0x200000(22根地址总
线),网卡芯片的寄存器读写可通过以下方法实现:
#defineDM9000_INDEX(*(volatile unsigned int *)0x200000)
#defineDM9000_DATA(*(volatile unsigned int *)0x200004)


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0