电机控制器的可视化编程方法及系统与流程

文档序号:11250051阅读:745来源:国知局
电机控制器的可视化编程方法及系统与流程
本发明涉及电工电子
技术领域
,特别涉及一种电机控制器的可视化编程方法及系统。
背景技术
:目前,随着软件技术的发展,编程的方式除了传统的文本编辑外,还有可视化编程。可视化编程通过提供符号和视图,可形象的表示每一步程序动作,而程序动作直接与所需步骤方法吻合,这种编程方式符合人类的思维方式,所以,在电机的控制领域采用可视化编程可使得编程变得直观清楚。电机的控制方式主要有脉冲型控制和总线型控制,这两种方式都需要上位机发送脉冲或者命令,而利用上位机进行相关操作时,会使电机的布线复杂,成本增加,为避免这些弊端,可将相关控制逻辑通过编程写入控制器中,让控制器自动执行,目前很多编程方式是采用专用编辑器进行语法输入,然后再编译成二进制文件烧写到控制器,这种编程方式需要工作人员熟悉程序的语法,程序结构,代码序列等知识,可是,很多一线工作人员是非专业编程人员或不会编程的人员,对有严格要求的文本程序编程知之甚少,所以,要求他们对控制器进行专业编程操作,这无疑会增加工作人员的操作和调试困难,加重其工作负担,降低其工作效率。为解决文本程序编程带来的困难,现有文献具有人机交互界面的电机控制器设计.徐正平,徐永森,匡海鹏.液晶与显示.2012.27(4):515-52,提出采用阵列式键盘及lcd作为交互设备,通过按键,用户可现场输入代码或参数,操作过程中的信息将实时显示在lcd上,但是采用这种方式的前提是用户需要熟知代码指令,编程方式不方便,不直观。技术实现要素:为解决以上技术问题,本发明提供一种电机控制器的可视化编程方法及系统,使非专业编程人员或不会编程人员能自如地使用电机控制器,即采用该可视化编程方式,用户只需根据应用场景需要,列出相应操作步骤、选取相关命令来完成编程,不需要用户学习编程相关知识和记忆相关命令指令。本发明的电机控制器的可视化编程方法,包括可视化离线编写程序,将离线编写的程序写入控制器的存储区,运行写入控制器的存储区的程序;所述可视化离线编写程序包括:打开可视化编程软件,加载配置文件到内存中,进行程序编辑并存入一个动态数组,将动态数组保存为第一自定义文件。优选地,所述加载配置文件到内存中,进行程序编辑并存入一个动态数组,包括:从电机控制器的buffer读出第二自定义文件,将第二自定义文件与内存中的配置文件进行对比,若第二自定义文件的文件格式与内存中的配置文件的文件格式一致,则进行程序编辑并存入一个动态数组。优选地,所述加载配置文件到内存中包括在内存中采用包括以下自定义结构体的结构体成员来表示:离线编程结构体,包含定义的命令集合、最大命令数和离线指针参数;命令结构体,包含命令字母、命令名称、选项段名和选项;命令选项结构体,包含选项值、选项名、数据默认值、数据范围最大值、数据范围最小值和选项说明。优选地,自定义结构体中所有结构体成员采用嵌套型桶式散列储存方式储存。优选地,采用嵌套型桶式散列储存方式储存包括,主存储桶目录表以命令字母为关键字,次存储桶目录表以各命令的选项值为关键字,分别将命令字母和选项值直接转换为数字,转换而得的数字与各自存储桶目录表中的存储桶号对应,每个桶号对应一个桶指针;主存储桶目录表中存放的指针数目为命令字母总数,次存储桶目录表中存放指针数目为各命令所需选项值数目,每个指针对应主或次存储桶的第一个元素地址。优选地,所述进行程序编辑并存入一个动态数组包括:通过添加一条空白命令添加为编程命令,选定所需命令名称,通过命令名称对应的关键字找到其主桶指针,定位该主桶,然后再根据离线编程界面上选择的选项所对应的关键字,找到其子桶指针,显示该子桶部分信息,将编程命令按顺序存入一个动态数组。优选地,第一自定义文件的文件格式包括:文件头、命令数和命令三部分;所述命令由命令字母、选项值、用户设置数据值三部分封装而成。优选地,第二自定义文件的文件格式包括:文件头、命令数和命令三部分;所述命令由命令字母、选项值、用户设置数据值三部分封装而成。优选地,所述将离线编写的程序写入控制器的存储区包括采用动态分配内存方式将第一自定义文件写入控制器的buffer或者写入控制器的eeprom,具体包括:控制器根据命令总数动态分配命令buffer;设置指针变量i,其初始值为0;判断命令是否写入完成;如完成,命令写入控制器内存操作结束;若未完成,设置控制器命令指针i,写入命令,然后指针i=i+1,返回判断命令是否写入完成的步骤。优选地,所述运行写入控制器的存储区的程序包括:步骤一:判定离线暂停开关是否使能,若使能,执行步骤二,若不使能,执行步骤四;步骤二:判定离线暂停输入端口是否有效,若有效,则进入步骤三,若无效,执行步骤四;步骤三:翻转离线自动运行开关的状态;步骤四:判定离线自动运行开关是否打开,若打开,则执行离线命令,进入步骤五,若没打开,进入步骤六;步骤五:判断离线指针i是否小于离线命令数n,若小于,离线指针+1,若不小于,进入步骤六;步骤六:判断离线停止开关是否使能,若使能,进入步骤七,若不能使,进入步骤九;步骤七:判断离线停止端口输入是否有效,若有效,进入步骤八,若无效,进入步骤九;步骤八:关闭离线自动运行开关;步骤九:结束。本发明的电机控制器的可视化编程系统,包括上位机、电机以及它们之间的通讯接口:所述上位机装载有可视化编程软件,加载配置文件到内存中,进行程序编辑并存入一个动态数组,将动态数组保存为第一自定义文件,将第一自定义文件通过通讯接口发送给电机的控制器;显示运行结果。所述加载配置文件到内存包括在内存中用以下自定义结构体成员来表示:离线编程结构体,包含定义的命令集合、最大命令数和离线指针参数;命令结构体,包含命令字母、命令名称、段名和命令选项;命令选项结构体,包含选项值、选项名、数据默认值、数据范围最大值、数据范围最小值和选项说明;所述第一自定义结构体中所有成员采用嵌套型桶式散列储存方式储存;第一自定义文件的文件格式包括:文件头、命令数和命令三部分;所述命令由命令字母、选项值、数据值三部分封装而成;所述电机通过通讯接口接收上位机发来的第一自定义文件并存储于电机控制器的存储区,电机控制器运行其存储区中的第一自定义文件所定义的程序,并将运行结果通过通讯接口发送给上位机;所述存储于电机控制器的存储区包括采用动态分配内存方式将第一自定义文件写入控制器的buffer或者写入控制器的eeprom。本发明利用电机控制器的可视化编程方式,工作人员无需清楚语法,程序结构,代码序列等编程相关专业知识,不需知道程序预处理、编译、汇编、链接等操作在计算机或控制器中的具体执行过程。只需根据应用场景的执行流程,在离线编程界面选择所需命令,点击相关命令控件即可,使得电机控制器的编程简单、清晰且直观。附图说明图1为本发明电机控制器的可视化编程方法流程示意图;图2为本发明电机控制器的可视化编程系统结构示意图;图3为本发明可视化离线编写程序流程示意图;图4为本发明自定义结构体关系示意图;图5为本发明写入控制器buffer流程示意图;图6为本发明从eeprom读取离线指令到buffer的流程示意图;图7为本发明离线命令运行处理流程示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图对本发明实施例进一步详细说明。本发明可视化编程方法的实施例与可实可视化编程系统的实施例之间的相应实施方式可以相互引用。如图1所示,本发明的电机控制器的可视化编程方法流程示意图,包括可视化离线编写程序,将离线编写的程序写入控制器的存储区,运行写入控制器的存储区的程序。如图2所示,本发明的电机控制器的可视化编程系统结构示意图,包括上位机、电机以及它们之间的通讯接口。上位机与电机之间通过通讯接口(比如:uart/rs485/can/ethernet等)连接,用户通过上位机打开可视化编程软件,配置文件被自动加载,进入离线编程界面后,用户可进行编程或加载已有程序。所述上位机装载有可视化编程软件,加载配置文件到内存中,进行程序编辑并存入一个动态数组,将动态数组保存为第一自定义文件,将第一自定义文件通过通讯接口发送给电机的控制器;显示运行结果;所述电机通过通讯接口接收上位机发来的第一自定义文件并存储于电机控制器的存储区,电机控制器运行其存储区中的第一自定义文件所定义的程序,并将运行结果通过通讯接口发送给上位机;所述存储于电机控制器的存储区包括采用动态分配内存方式将第一自定义文件写入控制器的buffer或者写入控制器的eeprom。所述可视化离线编写程序流程如图3所示,包括:打开可视化编程软件,加载配置文件到内存中,进行程序编辑并存入一个动态数组,将动态数组保存为第一自定义文件。作为一种可实现方式,用户打开可视化编程软件,加载配置文件到内存中,根据编程需求选择所需命令,设置相关数据,所选命令相关信息和设置的数据信息将会被封装成自定义命令数据结构,并储存于一个动态数组中,将动态数组保存为第一自定义文件。然后第一自定义文件的命令数据将可能通过通讯接口下发给电机控制器,储存于控制器buffer中,以便于进行实时运行与调试;或者储存于控制器eeprom中,以便于进行离线运行。上述实现方式是针对所有程序命令都重新进行编写的情况,但一般来说,电机控制器中的现有程序命令(属于一种第二自定义文件)可能有部分或全部不适合本电机,于是可能需要修改其中的部分或者全部命令,那么这时需要将该第二自定义文件读出来进行部分或者全部修改;甚至或者不经修改(本发明将不做修改当作一种特殊的程序编辑方式看待)直接存为一个动态数组,将动态数组保存为第一自定义文件。因而,作为另一种可实现方式,用户打开可视化编程软件,加载配置文件到内存中,进行程序编辑并存入一个动态数组,包括:从电机控制器的buffer读出第二自定义文件,将第二自定义文件与内存中的配置文件进行对比,若第二自定义文件的文件格式与内存中的配置文件的文件格式一致,则对第二自定义文件进行程序编辑并存入一个动态数组。特别地,上位机本地可能存储有电机控制器中的现有程序命令(属于另一种第二自定义文件),也可以将上位机本地存储的该现有程序命令进行部分或者全部修改,甚至或者不经修改直接存为一个动态数组,将动态数组保存为第一自定义文件。对于此种方式,也理应属于本发明保护范围。一般来说,只要第二自定义文件的文件格式与内存中的配置文件的文件格式一致,则说明电机控制器采用了与配置文件相同的数据结构,修改第二自定义文件的方式具有良好的可调试性。例如,通过读命令buffer可读取控制器中储存的离线程序,并将其显示于离线编程界面,用户可根据应用场景需求进行编程、调试,以及查看运行效果。优选地,第二自定义文件的文件格式包括:文件头、命令数和命令三部分;所述命令由命令字母、选项值、用户设置数据值三部分封装而成。为调试方便,还可单独运行单条命令,运行该命令,控制器的离线命令指针将指向当前命令,然后运行该命令。在实现电机控制器的可视化编程时,可视化编程软件的配置文件被加载到内存中可采用三个自定义结构体表示,分别为:离线编程结构体:包括最大命令数、定义的命令集合和离线指针参数;命令结构体:包括命令字母、命令名称、选项段名和选项;命令选项结构体:包括选项值、选项名、数据默认值、数据范围最大值、数据范围最小值和选项说明。三个自定义结构体的关系示意图如图4调试工具配置文件的自定义结构体示意图所示。其中定义的命令集合包含n个命令结构体,选项段名包含m个命令选项结构体。打开可视化编程软件,其配置文件的所有信息将自动被加载到自定义结构体中;对于自定义结构体中所有成员可以采用常规关系型数据库进行储存,但此储存方式不利于数据的管理,优选地,所述自定义结构体中所有成员采用嵌套型桶式散列储存方式储存。利用嵌套型桶式散列储存方式储存自定义结构体时,其主存储桶目录表以命令字母为关键字,次存储桶目录表以各命令的选项值为关键字,分别将命令字母和选项值直接转换为数字,转换而得的数字与各自存储桶目录表中的存储桶号对应,每个桶号对应一个桶指针(指向储存桶的指针);主存储桶目录表中存放的指针数目为命令字母总数,次存储桶目录表中存放指针数目为各命令所需选项值数目,每个指针对应主或次存储桶的第一个元素地址。在可视化编程界面进行离线程序编辑时,通过添加一条空白命令添加待编程命令,在命令下拉选项中(定义的命令集合)选定所需命令名称,可视化编程软件将通过命令名称对应的关键字(命令字母),找到其主桶指针,定位该主桶,然后再根据离线编程界面上选择的选项(命令选项),根据其对应的关键字(选项值),找到其子桶指针,并在离线编程界面上显示该子桶部分信息,如:选项名,数据默认值,数据范围最小值,数据范围最大值,选项说明等信息;添加的每条命令均按顺序存入一个动态数组中,在对命令进行编辑(添加、删除、上移和下移)时,根据相关操作修改动态数组即可。离线程序编辑完成后,离线程序可保存为第一自定义文件格式,该文件格式包括文件头、命令数和命令。格式如下:文件头(64byte)命令数n(4byte)命令(n×4byte)其中,每条命令由32比特构成,每条命令是由查找该命令中的命令字母、选项值以及利用自定义类的成员函数读取到的用户设置数据值三个部分封装而成,其中,命令字母为1byte,选项值为1byte,数据值为2byte。具体数据帧结构如下:命令字母定义一条命令的操作,数据类型为char类型。命令选项为命令的选项,数据类型为uint8类型。命令数据为该命令的具体数据,数据类型为uint16类型。所述将离线编写的程序写入控制器的存储区包括采用动态分配内存方式将第一自定义文件写入控制器的buffer或者写入控制器的eeprom;或者将第一自定义文件保存在上位机本地;第一自定义文件可以覆盖第二自定义文件,在某些特殊情况下也可以不覆盖第二自定义文件。所述将第一自定义文件写入控制器的buffer具体包括:控制器根据命令总数动态分配命令buffer;设置指针变量i,其初始值为0;判断命令是否写入完成;如完成,命令写入控制器内存操作结束;若未完成,设置控制器命令指针i,写入命令,然后指针i=i+1,返回判断命令是否写入完成的步骤。如图5所示,具体包括:步骤一:设置命令总数,通过通信接口将数据下发到到控制器,控制器根据命令总数动态分配命令buffer;步骤二:设置指针变量i,其初始值为0。步骤三:判断命令是否写入完成。步骤四:如完成,命令写入控制器内存操作结束。步骤五:若未完成,设置控制器命令指针i,写入离线命令,然后命令指针变量i=i+1,返回步骤三。所述运行写入控制器的存储区包括直接运行buffer中的控制程序。所述将第一自定义文件写入控制器的eeprom具体包括,将离线程序写入控制器eeprom中,存储在eeprom中的每条指令由32位构成,分别是命令字母(1byte),选项值(1byte),数据值(2byte)。保存离线程序后,控制器可断开与上位机的通讯链接,通过重新上电,控制器自动将eeprom中的离线程序读取到buffer中,可实现离线程序自动运行,也可实现利用连接外部触发信号或i/o的状态变化触发离线程序运行,需要停止离线程序运行时,可通过连接外部触发信号或传感器来实现。优选地,所述运行写入控制器的存储区包括将eeprom中的离线程序读取到buffer中运行,具体流程如图6所示,包括:所述将eeprom中的离线程序读取到buffer中运行,可以采用以下方式:对eeprom中的离线程序分配固定大小的存储空间,但此种方式会导致存储空间的浪费。但是,作为另一种优选方式,采用动态分配内存大小的方式可实现按需分配,对控制器进行初始化,从eeprom中读取命令总数,控制器根据该命令总数n动态分配内存大小,依次从eeprom中读取所有离线命令到命令buffer。减少内存浪费。本发明采用动态分配内存大小的方式从eeprom读取离线指令到buffer的流程图如6所示。具体流程如下所示:步骤一:开始,判断buffer是否为空,如果不为空,进入步骤二,如果为空,进入步骤三;步骤二:释放buffer;步骤三:动态分配一个buffer空间;步骤四:判断离线命令指针是否小于离线命令数,如果小于,进入步骤五,如果不小于,进入步骤六;步骤五:写入buffer,离线命令指针加1,返回步骤四;步骤六:结束。特别地,作为一种特殊的方式,离线程序存入eeprom中,重新上电后,控制器可执行该离线命令,离线命令处理流程如图7所示:步骤一:控制器上电后,判定离线暂停是否使能,若使能,执行步骤二,若不使能,执行步骤四。步骤二:判定离线暂停输入是否有效,若有效,则进入步骤三,若无效,执行步骤四。步骤三:翻转离线自动运行状态。步骤四:判定离线自动运行是否打开,若打开,则执行离线命令,若没打开,进入步骤六。步骤五:判断离线指针大小是否小于离线命令数,若小于,离线指针+1,若不小于,进入步骤六。步骤六:判断离线停止是否使能。若使能,进入步骤七,若不能使,进入步骤九。步骤七:判断离线停止输入是否有效,若有效,进入步骤八,若无效,进入步骤九。步骤八:关闭离线自动运行。步骤九:结束。采用本发明的电机控制器的可视化编程方式,用户只需在离线编程界面根据应用场景需要选择相关命令、设置所需参数,将编辑完毕的程序写入控制器储存器中,然后运行控制器存储器中的程序即可实现对电机控制器相应的操作。本发明可实现在线编程、调试以及单条命令执行,便于工作人员的程序设计与调试。还可实现离线运行功能,工作人员将应用场景的逻辑程序流程写入控制器中,保存后断开与上位机的通讯连接,通过上电执行或i/o的状态变化去触发和停止程序,以便适应一些简单或固定逻辑的应用场景。采用本发明方式,不需要特定且昂贵的上位机,节省了成本,又不需要专业的编程知识,电机控制器的编程简单、清晰且直观。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1