上位机开发之单片机通信实践
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的。PLC的本质就是单片机,在单片机的基础上添加一些外围电路并形成产品化,即构成了PLC控制器。今天在这里给大家分享一个上位机与单片机通信的实例,希望对大家开发上位机有所启发。
1. 单片机硬件介绍
只要做上位机开发,就离不开通信协议。一般来说,单片机可以与上位机之间以串口通信为主,当然也不排除现在有的单片机也集成了以太网口。就串口通信而言,常用的几种通信方式,包括串口自定义协议、Modbus协议、CAN总线,接下来介绍的这个单片机是某个锂电池的核心板,它主要是支持Modbus协议和CAN总线的方式。
2. 通信分析
(1)这里我们选择的是基于485总线的ModbusRTU通信协议,如果要实现上位机开发,需要单片机开发人员提供一份通信变量表,如果读取变量较多或者不连续,需要进行分组读取。
(2)通信变量表一般包含参数名称、Modbus地址、存储区、数据类型、换算公式等内容,能够将通信变量表看明白并完成通信测试,是能够完成上位机开发的前提。
(3)这里,我截取部分变量表跟大家做一个分析:
上表中,以电芯总电压为例,Modbus地址为0x1003,对应十进制即为4099,寄存器地址即为44100,读取类型为ushort类型,换算公式为读取之后乘以0.01,比如读取值为5630,即为5.63V。
分析明白之后,我们就可以先用ModbusPoll软件来一波初步测试,如果需要Modbus软件资料的,可以私信我留下微信号,我让助教老师给到你。
这里我们需要通过485转USB连接到电脑中,然后通过设备管理器,看到端口号为COM4。
3. 通信测试
(1)打开ModbusPoll软件,通信参数选择COM4、9600、N、8、1,具体配置如下图所示:
(2)读取寄存器起始地址为4099,读取长度为10,具体配置如下图所示:
(3)配置完成后,即可读取到单片机的数据,具体如下图所示:
(4)实现读取之后,我们分析一下结果,4099读取到的值为4206,说明当前电池的电压为42.06V。我们可以用实际开发完成的上位机软件做下对比,验证一下数据是否正确:
4. 整体总结
本文主要针对单片机的Modbus通信实例做了较为详尽的描述,由于篇幅有限,仅仅介绍了通信测试部分,对于后续的项目实战部分,会通过后续的文章进行进一步的阐述。
我是新阁上位机付老师,用我的专业,成就你的梦想!
上位机开发之单片机通信实践(一)
经常会有一些学员会问到上位机与单片机之间通信的问题,而我们经常会讲上位机与PLC之间通信,那么其实对上位机开发来说,不管是和PLC通信,还是和单片机通信,通信原理都是一样的。PLC的本质就是单片机,在单片机的基础上添加一些外围电路并形成产品化,即构成了PLC控制器。今天在这里给大家分享一个上位机与单片机通信的实例,希望对大家开发上位机有所启发。
1. 单片机硬件介绍
只要做上位机开发,就离不开通信协议。一般来说,单片机可以与上位机之间以串口通信为主,当然也不排除现在有的单片机也集成了以太网口。就串口通信而言,常用的几种通信方式,包括串口自定义协议、Modbus协议、CAN总线,接下来介绍的这个单片机是某个锂电池的核心板,它主要是支持Modbus协议和CAN总线的方式。
图表 1单片机硬件
2. 通信测试
(1)这里我们选择的是基于485总线的ModbusRTU通信协议,如果要实现上位机开发,需要单片机开发人员提供一份通信变量表,如果读取变量较多或者不连续,需要进行分组读取。
(2)通信变量表一般包含参数名称、Modbus地址、存储区、数据类型、换算公式等内容,能够将通信变量表看明白并完成通信测试,是能够完成上位机开发的前提。
(3)这里,我截取部分变量表跟大家做一个分析:
图表 2 Modbus寄存器表
上表中,以电芯总电压为例,Modbus地址为0x1003,对应十进制即为4099,寄存器地址即为44100,读取类型为ushort类型,换算公式为读取之后乘以0.01,比如读取值为5630,即为5.63V。
分析明白之后,我们就可以先用ModbusPoll软件来一波初步测试,如果需要Modbus软件资料的,可以关注一下喜科堂官方关注:dotNet工控上位机,然后像聊天一样发送关键词:Modbus软件套装即可。这里我们需要通过485转USB连接到电脑中,然后通过设备管理器,看到端口号为COM4。
图表 3通信端口
打开ModbusPoll软件,通信参数选择COM4、9600、N、8、1,读取寄存器起始地址为4099,读取长度为10,具体配置如下图所示:
图表 4通信参数配置
图表 5通信读取配置
配置完成后,即可读取到单片机的数据,具体如下图所示:
图表 6 ModbusPoll读取
(4)实现读取之后,我们分析一下结果,4099读取到的值为4206,说明当前电池的电压为42.06V。我们可以用实际开发完成的上位机软件做下对比,验证一下数据是否正确:
图表 7上位机软件
(5)我们也可以用喜科堂通信测试平台来做下测试,测试结果如下:
3. 整体总结
本文主要针对单片机的Modbus通信实例做了较为详尽的描述,由于篇幅有限,仅仅介绍了通信测试部分,对于后续的项目实战部分,会通过后续的文章进行进一步的阐述。
相关问答
vk2828u7g5lf怎么和 单片机 进行 通信 ?单片机与单片机通讯,直接串口对接就可以(TXD1-RXD2,RXD1-TXD2)。多机通讯设置一主机,(TXD1-RXD2-RXD3---RXDn,...
为什么 单片机 之间可以直接连线实现 串口通信 ?单片机之间可以直接连线实现串口通信的主要原因是它们使用了标准的串行通信协议(如RS-232、RS-485等)。这些协议定义了通信中的物理电气特性、数据格式和通信...
单片机串口通信 原理[回答]我有一个8255的0-99的计时的,不知道对你有没有帮助;164串并转换程序,00~99循环显示;DCLK----PC0,DIN----PC1;FUNCTIONCODEMY_STACKSEGMEN...
单片机串口通信 原理我有一个8255的0-99的计时的,不知道对你有没有帮助;164串并转换程序,00~99循环显示;DCLK----PC0,DIN----PC1;FUNCTIONCODEMY_STACKSEGMEN...
单片机与 电脑 串口通信 故障?可能由以下原因导致:1.连接线路:串口连接器、信号线、地线连接不牢固或者断开,导致信号无法正常传输。2.信号线:信号线(通常是4线或6线)连接到单片机的...
怎样编写 单片机 的 串口通信 的程序,一般的步骤是怎么样的?确定T1的工作方式(编程TMOD寄存器);计算T1的初值,装载TH1、TL1;启动T1(编程TCON中的TR1位);确定串行口控制(编程SCON寄存器);串行口在中断方式工...确定T...
5V 单片机与 3.3V 单片机串口通信 问题?遇到这种界面问题,首先必须确认两个板子上的TXD/RXD/GND若用到CTS/RTS当然也要确认,确认它们的输出电压.(若是标准RS-232信号,那就确认两块板子的RXD/TXD对...
单片机 USB直接插上就能下载数据打通电源,为什么还要有USB转T...大多数单片机开发板上的USB串口只是用来供电的,大多数单片机也不带USB功能,甚至板上也没集成USB转TTL芯片USB转TLL线的作用,一是好多笔记本电脑没有RS-232串口...
VB 串口 控制继电器?你首先要会单片机与上位机的串口通信。VB写的那个程序,可以用任何一个串口助手代用来调试,成了后你再用VB写一个。留个邮箱,给你一个VB串口通信的视频。你首...
android手机和 单片机 如何实现相互通讯?1.串口对串口(不过一般普通用户不太容易连接到手机的串口)2.蓝牙:单片机+蓝牙模块-》手机蓝牙模块-》手机上应用程序3.红外:单片机+红外模块-》手机红外模块...