桂林理工大学博文管理学院 广西 桂林 541006
在计算机软硬件技术和集成电路工艺不断发展的过程中,有关计算机的控制从传统的模式化已经逐渐发展成现场总线控制方式。这种技术的发展良好的推动了工业控制领域的进步,使工业控制技术的发展进入了新的时代。在这样的背景下,CAN总线由于数据通信中的高效处理能力以及通信灵活性而逐渐受到推广应用。
基于STM32的CANopen通信网络的实现主要是通过1个主控制节点和多个从节点,相互之间通过CAN总线进行连接,从而形成一个网络,通过CANopen协议来实现对系统运行和通信的整体管理。主控制节点和从节点的核心处理器都是使用STM32F107,用户在使用时,能够通过主控节点将控制命令发送到从节点,进而对整体系统进行控制。通过CAN总线,从节点接收到主控节点发送的指令,完成相应的处理后发送有关指令到CANopen设备中,实现对其行为的控制。
在系统软件设计中,代码的编写主要是在KEIL编译环境中进行,这种软件编译环境中有多项目工作区,能够使操作项目得到简化,而且具备实时监控的管理系统。通过代码编写,能够完成操作系统、系统功能以及CANopen协议的设计,在编写代码完成后,经过编译再下载到控制网络的主从机控制芯片中。
2.1 对象字典 这主要是指有序的对象组,单个对象地址的寻找主要是通过16位的主索引和子索引值进行,CANopen的设备需要通过一个对象字典对其相关的参数进行描述,而这些对象集合起来就是对象字典。能够对需要寻找的内容进行快速的查找,查找方法和查找目录也需要设置,在C语言程序中进行定义。通过一个特定的数组将全部的对象目录进行定义,包括所有对象的索引值、大小以及位置,用户在查找时,通过对数组的扫描就可以很快查找到需要的内容。
2.2 网络管理对象NMT 网络管理对象NMT最主要的功能是进行状态监测和网络节点状态控制。CANopen的从节点中都包含一个状态机,主节点主要对其转换进行有效控制,节点会在不同的状态下实施相应的任务。对CANopen的节点状态程序给与了4种定义,系统在接通电源后,就能够实现自动跳转,待主节点发送状态转换的指令给从节点后,通过函数proceed NMT执行相应的命令,使有关功能模块发挥作用。对于节点状态监测来讲,主要包含节点监控和心跳报文,具体执行是通过从节点发送心跳报文到主节点,从而对从节点的运行状态进行明确。系统初始化中,程序通过特定函数设置心跳报文的周期,然后从节点就进行周期性的发送,假设在规定的时间没有接收到,就会自动通过执行命令通知系统中的某节点问题,进而通过对应措施进行解决。
2.3 过程数据对象PDO 这个的主要功能是传输实时短帧过程数据,程序需要实现PDO的接收和发送相应功能。在发送前,结合PDO的有关参数利用函数设置需要发送的报文,再通过特定函数将PDO报文发送到总线。如果是同步报文,程序会对函数进行调节,使用调节函数将同步报文发送后再发送PDO报文。节点接收到PDO报文后,通过函数对其进行解析处理。
2.4 服务数据对象SDO 这个模块的主要功能是对实时性要求较低、数据量大的低优先级数据进行传输。传输的方式是服务器-用户,SDO的服务器一般是从节点,而其用户端是主节点,用户端利用索引对服务器对象字典中的任何对象都可以进行访问,从而完成下载、上传数据。在程序中,通过特定的函数,用户端向服务器发送下载、上传数据的请求,在服务器接收到请求后,通过函数解析SDO报文,判断报文属于服务协议中的哪一种,接着按照协议开展相应的处理。
2.5 其他通信对象 通信对象的报文还包括紧急事件报文、同步报文以及Boot-up报文等,这些在程序中都有被定义。紧急事件报文是网络管理NMT中的组成部分,如果节点发生突发紧急情况,比如过压问题,就会通过相应的函数发送紧急报文到总线中,其他的节点在接收到相应的紧急报文后通过特定函数进行处理。同步报文主要是通过函数周期性的向同步消费者传播,生产同步报文者接收到同步报文后使用调用函数,将同步报文作为同步PDO报文对相应参数进行处理。Boot-up报文主要是从节点在通电初始化后利用函数发送报文到主节点,使主节点做好准备状态。
2.6 系统通信实现 对CANopen通信的正确性进行验证,主要是通过截取STM32和PC机通信的CANopen报文,而这主要是通过CAN通信监测软件和CAN-USB转换器来实现。通过分析通信报文可以得知,控制器的从站能够对主站的SDO报文进行响应,对PDO的数据也能进行传输处理,主站和从站之间能够通过NMT管理良好的进行报文通信,对于系统中的相应功能都可以很好的实现,完成主从机CANopen通信。
综上所述,CAN总线技术在如今工业控制领域的多个行业中得到了推广应用,本文通过以STM32为硬件平台实现了CANopen协议通信,使设备之间的连接具有更好的通用性以及功能扩展性。在CAN总线不断普及应用的过程中,CANopen协议也在逐渐完善,在CANopen协议下,不同的CAN设备通信都有标准化的方式,提高了设备相互之间的可操作性。