APP下载

STM32单片机与组态屏Modbus通讯模拟设计

2020-11-02周明王振马睿

电脑知识与技术 2020年26期
关键词:STM32单片机

周明 王振 马睿

摘要:在组态屏上添加按键,通过Modbus网络上RTU模式通信读取和修改STM32单片机LED灯的状态,ModbusRTU模式把命令传给STM32单片机,STM32单片机收到命令改变状态并做出相应的回复,最终实现按键控制STM32单片机LED灯的状态。

关键词:STM32单片机;组态屏;Modbus协议

中图分类号:TP3        文献标识码:A

文章编号:1009-3044(2020)26-0207-02

Abstract: Add keys to the configuration screen, read and modify the status of STM32 single chip LED light through RTU mode communication on Modbus network, Modbus RTU mode transmits the command to STM32 single chip, STM32 single chip receives the command to change the status and make the corresponding response, and finally realize the key control of STM32 single chip LED light status.

Key words: STM32 single chip computer;configuration screen;Modbus protocol

1背景

随着工业IT技术的不断发展,工业自动化软件成为未来发展趋势,组态软件作为新生事物仍处在高速发展时期,而STM32单片机应用广泛,种类丰富,支持各大嵌入式操作系统,实现组态屏与STM32单片机的通信,可以开发很多新的功能,应用于各大领域。

2总体设计分析

实现STM32单片机与组态屏通讯,第一步选定STM32单片机和组态屏的型号,第二步确定STM32单片机和组态屏都适用的通信协议,第三步是软件部分组态屏的模拟和程序的编写,第四步是硬件的连接和调试,达到最终效果。

3元器件选型

(1)STM32单片机:是一种微型控制器,这是一款性价比超高的系列单片机,最高工作频率72MHz,片上集成32-512KB的Flash存储器,6-64KB的SRAM存储器。它是用STM32F103C8T6开发板,48PIN、64KB FLASH、20KB RAM。

(2)组态屏:组态软件是数据采集与过程控制的专用软件,使用灵活的组态方式,让用户快速构建工业自动控制系统监控功能的、通用层次的软件工具。选用模拟型号为MT5320C的组态屏。

(3)Modbus协议:是应用于电子控制器上的一种通用语言,它已经成为一通用工业标准。通过这个协议,控制器和控制器之间,或控制器经由网络和其他设备之前可以实现通信Modbus通信通用的格式是地址码、功能码、数据区、错误校验码,Modbus网络有ASCII模式和RTU模式两种传输模式。在Modbus网络上选择RTU模式通信,在消息中的每8Bit字节包含两个4Bit的十六进制字符。这种模式与ASCII模式相比主要优点是在相同的波特率下可以传送更多的数据。

4软件模拟设计部分

组态屏设计流程:组态软件最大的优点就是使用便捷,先制作一个开关控制元件的工程,其他元件的制作方法与这个基本上类似,组态软件也有很多,这里用的是KincoHMIware 2.5软件。

4.1组态软件操作步骤

(1)首先创建一个新的工程。

(2)接下来选择所需的组态屏型号,用的型号是MT5320C,将它拖入工程结构窗口,放开鼠标。

(3)选择需要连接的PLC类型,选用的是Modbus RTU。

(4)选择通讯连接方式,选用串口通讯,用鼠标移动HMI和PLC的位置,将连接端口靠近连接线的一段就可以顺利地让它们连起来,然后将COM0与COM0连接起来。

(5)双击MT5320C组态屏图标,会弹出属性框,因为串口通讯是连接的COM0店口,所以切换到【串口0设置】修改串口0的参数。

通讯类型:RS232 波特率:9600 数据位:8奇偶校验:无校验 停止位:1。

(6)双击工程结构窗口HMI0字样,进入添加所需按键。添加的是位状态切换开关,将它拖入工程结构窗口,放开鼠标,会弹出属性设置框,【基本属性】设置地址类型为0X,地址为1。切换到【位状态切换开关】设置开关类型为切换开关。切换到【标签】,勾选使用标签,将0的标签内容设为ON,1的标签内容设为OFF,以此对灯的状态进行控制。

(7)设置完成后点击【全部编译】图标对工程进行编译,最后点击【直接在线模拟】图标,在弹出窗口中设置PC模拟端口后,点击【模拟】就可以进行组态屏按键调试。

4.2代码流程

4.2.1串口助手调试

将两个USB串口转换器连接插在电脑上,通过串口助手软件检验组态屏能否正常通信,并获得按键发出的01码和05码,以便接下来的编程使用。注意用串口助手软件测试时,通讯类型要与串口0的设置相同。

4.2.2使用keil5软件进行編程,这里运用C语言来编写程序

程序的设计流程是:检验到串口接收到数据并检验到数据的结束;计算CRC并与接受的CRC域值比较,如果两值相同则说明数据无误;识别接收数据的功能码;如果是05功能码,则再识别这组数据的数据区,是0x00就打开LED灯,是0XFF就关闭LED灯;如果是01功能码就根据LED灯的状态发送相对应的数据包反馈。注意它发送数据包时的地址码是根据上面串口助手软件测试时接收到数据的地址码填写的。

CRC校验:Modbus网络使用了RTU模式,消息中包括了CRC方法的错误检测域,CRC域检测整个消息的内容。CRC域是两个字节,包含了一十六位二进制值,有发送设备计算好后加入消息中,接收设备接收到消息后,重新计算消息的CRC,再与收到的CRC域值比较,如果两者的值不同,则有错误。

功能码:控制键发送不同的功能码,功能也大不相同,这里用到01功能码和05功能码,01功能码是读取目标的状态,05功能码是修改目标的状态。

5 硬件设计部分

5.1单片机接线

借助烧录器和串口转换器将单片机连接到电脑上,通过烧录器将代码下载到单片机上,串口转换器帮助组态屏和STM32单片机通讯调试,选用的串口转换器是USB转TTL模块。

6最终效果

点击组态屏上的模拟按键,可以控制STM32单片机上LED灯的状态,根据STM32单片机上LED灯状态反馈,组态屏上的模拟按键显示预先设定的LED灯状态字符,这里设置的是ON和OFF。达到以上效果则可以证明组态屏可以和STM32单片机进行通讯,也可以在这个基础上开发更多新的功能。

参考文献:

[1] 刘火良.STM32库开发实战指南[M].北京:机械工业出版社,2013.

[2] 杨更更.Modbus软件开发实战指南[M].北京:清华大学出版社,2017.

[3] 孙立坤.侯秉涛.组态软件应用技术[M].北京:电子工业出版社,2014.

【通联编辑:代影】

猜你喜欢

STM32单片机
基于STM32单片机的脉冲信号参数高精度测试仪
基于STM32的智能电风扇设计