CN100359462C - 一种可编程控制装置的开发方法及*** - Google Patents

一种可编程控制装置的开发方法及*** Download PDF

Info

Publication number
CN100359462C
CN100359462C CNB2005100000159A CN200510000015A CN100359462C CN 100359462 C CN100359462 C CN 100359462C CN B2005100000159 A CNB2005100000159 A CN B2005100000159A CN 200510000015 A CN200510000015 A CN 200510000015A CN 100359462 C CN100359462 C CN 100359462C
Authority
CN
China
Prior art keywords
action event
functional object
unit
programmable control
user
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2005100000159A
Other languages
English (en)
Other versions
CN1801080A (zh
Inventor
陈泳成
马涛
姬传国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sunplus Technology Co Ltd
Original Assignee
Sunplus Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sunplus Technology Co Ltd filed Critical Sunplus Technology Co Ltd
Priority to CNB2005100000159A priority Critical patent/CN100359462C/zh
Publication of CN1801080A publication Critical patent/CN1801080A/zh
Application granted granted Critical
Publication of CN100359462C publication Critical patent/CN100359462C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Programmable Controllers (AREA)

Abstract

本发明公开了一种可编程控制装置的开发方法,该可编程控制装置包括功能单元,所述功能单元具有至少一功能对象;该方法包括步骤:接收用户输入信息,包括选定所述可编程控制装置的功能对象,配置前述功能对象的触发状态,设置触发状态下前述功能对象被触发时由控制装置执行的动作事件,定义前述动作事件,并且至少在一动作事件中设定功能对象的当前触发状态;解析所述用户输入信息,生成所述可编程控制装置的控制程序;对该控制程序进行汇编、链接,生成可执行机器代码。本发明还公开了一种可编程控制装置的开发***。本发明具有实现简单直观、且容易扩展的特点,能够应用于具有各种复杂、多样化功能的IC设计。

Description

一种可编程控制装置的开发方法及***
技术领域
本发明涉及控制装置领域,特别是涉及一种可编程控制装置的开发方法及***。
背景技术
随着社会及科技的发展,各类电子产品日益普及,为人们的学习、工作和生活等诸多方面带来了较大的便利。相应地,以微处理器为基础的可编程控制装置(如MCU,微控制器)的应用也日益广泛。例如,在办公室,微控制器被应用到计算机键盘、显示器、打印机、复印机、传真机和电话***等;在家庭,微控制器被应用到微波炉、洗衣机和烘干机、安全***、草坪洒水装置控制器以及音乐/视频娱乐设施等。
对于一般的微控制器来说,必须与其他的***电路相连才能实现更多的功能。例如:与***存储器连接以扩展其存储空间,与A/D(模/数)、D/A(数/模)转换器以及LCD(液晶显示器)驱动器相连实现人机会话,甚至采用专用的语音IC(集成电路)来实现语音或音乐播放功能。
通常,单片机或嵌入式控制芯片等可编程控制装置通过运行存储在其中的控制程序来实现各种电子产品所具有的功能。
目前,现有技术中,控制装置的开发方法主要包括下述阶段:
1)了解控制装置硬件结构及其功能;
2)熟悉掌握控制装置的汇编指令集;
3)熟悉包括汇编器、链接器以及捆绑器等工具软件的工具链的使用;
4)设计控制装置***结构,包括硬件结构和软件架构;
5)实施硬件结构设计,并针对其编写应用程序;
6)调试验证***设计。
现有技术的该开发方法中,由于开发人员按照复杂的设计规则来编辑结构化的由汇编指令组成的控制程序,并且需要考虑控制装置的硬件响应的实现过程;且开发***只能根据开发人员输入的汇编指令进行编译和链接,并最终转换为可执行机器代码,因此具有一些不足之处:首先,如果要实现对控制装置的编程控制,则需要了解其硬件功能及其***连接电路的相关硬件,给开发人员带来较大的不便;其次,开发人员需要熟悉汇编指令集并掌握一定的技巧,其编程过程复杂、不易扩展;总之,为熟悉汇编指令集、了解可编程控制装置的硬件结构和底层细节,开发人员之前需耗费大量的时间用于前期学习,从而增加开发周期,延长产品的上市时间,增加产品开发成本,而且产品质量难以确保;并且最终产品质量如果没有经历长期的市场考验,将有可能存在较多潜在的问题,会影响后续的产品的功能扩充或产品的移植。
随着IC技术的发展,虽然一些***功能部件如存储器等已可以集成在控制装置当中,然而该现有技术的开发方法依然难以有效地满足人们对电子产品开发的需求。
另一种现有技术可参阅美国专利第5,867,818号,其揭示一种“无指令可编程控制设备及其方法”。该方法虽然简单易行且直观,可以缩短控制设备的编程时间,但是该编程方法受可编程控制设备条件的局限,例如该无指令可编程控制设备需要有专门分别用于存储I/O状态和执行事件的存储器,并由此需要配置各自相应的寻址电路;而且,在I/O状态存储器里,又要分别将用户设定的I/O状态、输入端口触发条件以及输出端口的输出数据一一进行存储;并根据用户设定的输入端口触发条件利用鉴定电路来鉴定输入端口的触发条件是否满足;当此触发条件满足时,又要根据相应的事件寻址电路寻址到事件存储器而执行相应的事件。再有,该可编程控制设备的功能的执行完全依赖于输入端口触发条件的满足。虽然发明人也提到一种比较通用的IC设计,但其仍然依赖于输入端口的触发并只能实现简单的输出功能。显然,围绕发明人披露出的简单易行的编程方法所表述的一些IC设计已经难以适应于复杂、多样化的可编程控制设备的开发,因而,使得用户的应用受到限制。
发明内容
本发明解决的技术问题在于提供一种可编程控制装置的开发方法及***,其实现简单直观、且容易扩展;能够应用于具有各种复杂、多样化功能的IC设计。
为此,本发明解决技术问题的技术方案是:提供一种可编程控制装置的开发方法,该可编程控制装置包括功能单元,所述功能单元具有至少一功能对象;包括步骤:
1)接收用户输入信息;包括:
11)选定所述可编程控制装置的功能对象;
12)配置前述功能对象的触发状态;
13)设置触发状态下前述功能对象被触发时由控制装置执行的动作事件;
14)定义前述动作事件;并且至少在一动作事件中设定功能对象的当前触发状态;
2)解析所述用户输入信息,生成所述可编程控制装置的控制程序;
3)对该控制程序进行汇编、链接,生成可执行机器代码。
优选地,所述步骤2)具体包括:
21)将功能对象的选定信息和触发状态设置信息、功能对象被触发时其与动作事件的对应信息转换为编译参数;
22)将动作事件的设定信息转换为编译参数,并且结合所有的编译参数生成汇编语言形式的控制程序。
优选地,所述步骤2)中,还包括获取与功能对象有关的程序模块,将其结合至控制程序中。
优选地,所述步骤1)中,还包括指定资源文件;所述步骤3)之后还包括绑定前述可执行机器代码与所述资源文件,生成最终的可执行机器代码。
优选地,在所述步骤13)中还包括设定所述功能对象在接收到预定的外部信号时被触发;或者在执行预定功能时被触发;或者在切换到触发状态时被触发。
优选地,所述步骤14)定义的动作事件包括产生输出信号、切换功能对象的触发状态或者启动另一动作事件。
优选地,所述步骤14)定义的动作事件为动作函数或动作常量。
优选地,所述动作常量包括逻辑高电平信号、或逻辑低电平信号、或单正脉冲信号、或单负正脉冲信号、或正脉冲串信号、或负脉冲串信号。
优选地,所述步骤11)所述的功能对象包括输入管脚、键盘按键、红外接收命令、比较器、输出管脚和/或定时器。
优选地,所述步骤11)所述的功能对象是音频播放单元播放的音符或声音片断,或者是图像显示单元产生的图像扫描驱动信号。
本发明还提供一种可编程控制装置的开发***,用于提供集成开发环境,包括:
用户交互单元,用于接收用户的输入信息;所述用户的输入信息包括:功能对象的选定信息、触发状态配置信息、功能对象被触发时其与动作事件的对应信息和动作事件的设定信息;
编译单元,用于解析所述用户的输入信息,自动生成控制程序;
功能模组,用于为编译单元提供功能对象操作程序以支持编译单元的编译;
汇编单元,用于将编译单元产生的控制程序转换成目标代码;
链接单元,用于将前述目标代码与相关的库文件进行链接,生成可执行机器代码。
优选地,所述编译单元包括:
功能对象及触发机制处理单元,用于将功能对象的选定信息、触发状态配置信息、功能对象被触发时其与动作事件的对应信息转换为第一编译参数;
动作事件处理单元,用于将动作事件的设定信息转换为第二编译参数,并且结合第一和第二编译参数生成控制程序。
优选地,所述动作事件处理单元包括动作事件预处理部分和编译部分;所述动作事件预处理部分用于对动作事件的设定信息进行预处理后传递给编译部分;所述编译部分同时接收所述预处理后的参数与功能对象及触发机制处理单元传递的编译参数,并生成控制程序。
优选地,所述编译单元还包括驱动单元,用于从用户交互单元接收输入的信息,并驱动功能对象及触发机制处理单元和动作事件处理单元。
优选地,所述编译单元还包括资源文件处理单元,用于处理用户输入的资源文件设置信息;该***还包括捆绑单元,用于将链接单元产生的可执行机器代码与相关的资源文件进行捆绑,生成最终的可执行机器代码。
优选地,所述资源文件处理单元与功能对象及触发机制处理单元集成。
相对于现有技术,本发明的有益效果是:首先,由于本发明的开发***及开发方法针对可编程控制装置的特点,将其功能单元划分为功能对象,并且将复杂、多样化的控制装置的设计和编程过程细化为选定功能对象、配置触发状态、宣告并定义动作事件等阶段,因此,开发人员选定功能对象后,只需从功能描述的角度来配置触发状态,并相应设置和定义触发状态下功能对象被触发时的动作事件,开发***即可根据前述信息自动生成控制程序,并进行后续的汇编及链接,将其转换为可执行机器代码,完成可编程控制装置的功能开发,使得控制装置的设计、编程乃至调试过程得到较大的简化,其实现简单直观。其次,本发明的开发***及开发方法中,本发明使得开发人员无需了解控制装置的硬件结构,也不需学习熟悉该控制装置的汇编语言并用此对控制装置进行晦涩编程,只需要从实际产品的模块化功能需求出发,对功能对象、触发机制和动作事件等进行描述,开发***即可自动生成汇编语言格式的控制程序,因此容易对可编程控制装置的功能进行扩展,能够应用于各种功能的开发,如输入/输出、红外接收、定时/计数器、音频播放以及图形显示等,并方便产品的升级。再次,实践证明,采用本发明的开发人员只需较短时间(几个小时)就能完成对控制装置的编程过程,由此缩短用户产品的开发周期(通常,现有技术中这一过程需要十几天~几十天),节省人力成本。
附图说明
图1是可编程控制装置的开发过程的原理示意图;
图2是本发明可编程控制装置的开发方法的流程图;
图3是本发明中接收用户编辑信息的示意图;
图4是本发明的可编程控制装置的开发***的框图;
图5是本发明中编译单元的框图;
图6是实际的键盘扫描硬件连接示意图;
图7是本发明实例一中选定键盘阵列组合的示意图;
图8是本发明实例一中用户自定义键盘阵列组合的示意图;
图9是本发明中生成控制程序的示意图;
图10是本发明的可编程控制装置的实施方式的框图;
图11是本发明的可编程控制装置的实施例的框图。
具体实施方式
请参阅图1,是可编程控制装置的开发过程的原理示意图。
首先,由数据处理设备910提供集成开发环境(IDE),在数据处理设备910上生成控制程序;再通过汇编、链接等手段生成可执行机器代码;随后,由数据处理设备910将此可执行机器代码通过并口线、串口线等连接线920加载到调试装置930上,并启动该可执行机器代码进行运行并调试。可执行机器代码运行中调试装置930通过并口线、串口线等连接线920与数据处理设备910交换信息。
当调试成功后,即可将该可执行机器代码下载(例如,采用烧录等手段)到可编程控制装置中,完成可编程控制装置的开发。
其中,本发明所述数据处理设备910包括但不限于计算机、笔记本电脑等各类具有数据处理能力的电子设备;所述调试装置930包括但不限于单片机、控制装置仿真板、在线仿真器等具有实时仿真接口,供软件运行的硬件平台。
请参阅图2,是本发明可编程控制装置的开发方法的流程图。
步骤S100,数据处理设备910提供用户界面,供用户创建新的控制程序并引导用户进行编辑,接收来自用户的输入信息。
请一并参阅图3,是所述步骤S100中用户进行编辑的具体过程示意图。
步骤S110,设定该可编程控制装置硬件的基本参数。
所述基本参数包括可编程控制装置的基本型号、所应用的***时钟等,用于提供可编程控制装置进行运行操作的信息。
步骤S120,选定该可编程控制装置的功能对象。
所述功能对象与可编程控制装置的功能单元紧密关联,包括但不限于可编程控制装置的输入电路的输入端口、输出电路的输出端口、键盘扫描电路的按键、红外信号接收命令、定时器/计数器等。所述功能对象在被触发并满足触发条件时,可编程控制装置将完成相应的动作功能。
步骤S130,配置前述功能对象的触发状态、以及在特定的触发状态下功能对象被触发时控制装置执行的动作事件。
通常,功能对象可以在接收到预定的外部信号时被触发,如:当功能对象为输入端口时,可以设定当输入端口为高电平时,当前状态下该输入端口被触发。也可以由功能对象自身的运行来触发功能对象,如:当功能对象为定时/计数器时,假如该定时/计数器为TM0,可以设定当TM0溢出时,当前状态下该定时/计数器被触发。还可以是当切换到该功能对象的触发状态时,控制装置则执行设定的动作事件,如:当功能对象是输出端口时,在触发状态下将输出预定的信号。
对于根据外部信号来触发的功能对象来说,所述功能对象对应的电路或者对应的功能单元可以将接收到的外部信号传送到事件响应电路,该事件响应电路根据该外部信号判断功能单元是否被触发;所述功能对象也可以在其相应的功能单元接收到预定的外部信号时产生触发信号并传送到事件响应电路。
当然,对于相同的功能对象,可以配置多个不同的触发状态。在不同的触发状态下,可以设定在功能对象被触发时不同的动作事件。
当然,还可以在功能对象的某些触发状态下不设置动作事件,则在该触发状态下,该功能对象被触发时控制装置将不执行任何操作。
步骤S140,设定所述动作事件;其中,所述的动作事件中至少一个包括对当前触发状态的切入。
所述动作事件用于描述可编程控制装置执行的动作。动作事件在设定后,可以同时被不同的功能对象的不同触发状态所选用。
通常,所述动作事件可以通过用户自定义的动作函数来设定,在执行所述函数时,控制装置可能产生特定的输出信号、或者切换功能对象的触发状态或者启动另一动作事件。
所述动作事件还可以是用户指定的动作常量,动作常量一般用于在功能对象为输出端口时指明该输出端口的输出动作,包括但不限于逻辑高电平信号、或逻辑低电平信号、或单正脉冲信号、或单负脉冲信号、或正脉冲串信号以及负脉冲串信号。
步骤S200,数据处理设备910对用户的输入信息进行编译、自动生成汇编语言格式的控制程序。
首先,将功能对象的选定信息和触发机制(触发状态、触发条件)的配置转换为编译参数;其次,将动作事件的设定信息转换为编译参数,并且结合所有的编译参数生成汇编语言形式的控制程序。
此外,在处理功能对象和触发机制时,还会调取与该功能对象有关的程序模块,将其有机结合到控制程序中,用以自动实现对硬件底层的操作,从而对用户来说,可以在功能层描述软硬件触发环境,而不需要关心控制装置底层硬件的实现细节,方便用户的后续功能扩充。
本发明中,所述程序模块可以是采用汇编语言设计的功能模块,用于实现对控制装置底层硬件的操作,例如,对键盘阵列的扫描等,从而支持对用户输入的信息进行编译的过程。
步骤S300,对所述控制程序进行汇编、链接,生成可执行机器代码。
此外,为进一步扩展可编程控制装置的功能,所述步骤S120中选定的功能对象还可以是Music(音乐)播放模块的EventNote(音符)和Speech(语音)播放模块的EventSect(语音段)。相应地,所述步骤S100中,还需要设置应用资源:即可编程控制装置在运行时使用的各种资源文件及其相关参数。在步骤S300之后还包括绑定可执行机器代码与资源文件的步骤S400。
步骤S500,在生成可执行机器代码后,即可进行调试运行;如果调试通过,则可加载(例如采用烧录方式)至可编程控制装置,完成所需功能的开发,此不赘述。
请参阅图4,是本发明的可编程控制装置的开发***的框图。
所述开发***提供集成开发环境(IDE),包括用户交互单元1 10、编译单元(QPL Complier)120、功能模组(QPL Module)130、汇编单元(QPL Assembler)140、链接单元(QPL Linker)150。
所述用户交互单元110用于接收用户的输入信息。所述用户的输入信息包括功能对象的选定信息、触发机制的配置信息、动作事件的设定信息。
请一并参阅图5,所述编译单元120用于解析用户的输入信息,自动生成控制程序。其包括功能对象及触发机制处理单元(QPDEC)121、动作事件处理单元(QPDEF)122。
所述功能对象及触发机制处理单元121用于将功能对象的选定信息和触发机制的配置转换为编译参数并传送到动作事件处理单元122;所述动作事件处理单元122用于将动作事件的设定信息转换为编译参数,并且结合所有的编译参数生成汇编语言形式的控制程序。
所述功能模组130用于为编译单元120提供功能对象操作程序以支持编译单元120的编译过程。具体地说,当编译单元120扫描到功能对象的选定信息中包含的某一功能对象时,则从功能模组130中提取该功能对象的操作程序(例如,当扫描到设置有键盘的按键时,便会从中取出键盘扫描程序),并将其一一有机结合到控制程序中。
需要说明的是,所述动作事件处理单元122的功能也可以由两个分立的部分来实现,即动作事件预处理部分(QPDCC)和编译部分(QPDEF);所述动作事件预处理部分对动作事件的设定信息进行预处理后传递给编译部分;所述编译部分同时接收该预处理后的参数和功能对象及触发机制处理单元121传递的编译参数,并生成控制程序。
此外,所述编译单元120还可以具有驱动单元(QPC),从用户交互单元110接收输入的信息,并分别驱动功能对象及触发机制处理单元121、动作事件处理单元122。
其中,该驱动单元的驱动步骤如下:传输用户交互单元接收的功能对象及触发机制信息的参数给功能对象及触发机制处理单元和动作事件处理单元,并接收所述功能对象及触发机制处理单元反馈的第一编译参数并传递给动作事件处理单元;传输动作事件设定信息给动作事件处理单元,动作事件处理单元生成第二编译参数;动作事件处理单元结合驱动单元所传递的第一编译参数和第二编译参数,生成控制程序。
该驱动单元的驱动步骤还可以是:传输用户交互单元接收的功能对象及触发机制信息的参数给功能对象及触发机制处理单元和动作事件处理单元,并接收所述功能对象及触发机制处理单元反馈的第一编译参数,传递给动作事件处理单元;传输动作事件设定信息给动作事件处理单元中的预处理部分,并接收所述预处理部分反馈的第二编译参数,传递给动作事件处理单元的编译部分;动作事件处理单元的编译部分结合驱动单元所传递的第一编译参数和第二编译参数,生成控制程序。
所述汇编单元140用于将编译单元120产生的汇编程序转换成目标代码。
所述链接单元150用于将前述目标代码与相关的库文件进行链接,生成可执行机器代码。
此外,如前所述,为进一步扩展可编程控制装置的功能,用户选定的功能对象还可以是Music(音乐)播放模块的EventNote(音符)和Speech(语音)播放模块的EventSect(语音段)时。相应地,用户需要通过用户交互单元110设置应用资源:即可编程控制装置在运行时使用的资源文件及其相关参数。所述编译单元120还具有资源文件处理单元,用于将用户输入的资源文件设置信息整合至汇编语言的控制程序中,该资源文件处理单元可以与功能对象及触发机制处理单元结合在一起。并且,本发明还包括捆绑单元(QPL Binder)160,用于将链接单元150产生的可执行机器代码与相关的资源文件进行捆绑,生成最终的可执行机器代码。
为验证可控制编程装置的***设计,确保产品的质量,本发明的开发***还包括调试单元(QPL Debugger)170,用于对最终的可执行机器代码进行调试,此不赘述。
为便于对本发明开发***和方法的理解,下面结合实施例对本发明做进一步的详细描述。
首先,用户在集成开发环境建立新的用户工程,开发***的用户交互单元自动生成两个源文件:资源引入源文件(Resource)和控制工程程序源文件(File)。所述资源引入源文件用于实现资源文件的描述,引入用户需要使用的资源文件;所述控制程序源文件用于设置软硬件环境和触发机制,描述动作事件。
其中,本实施例对控制程序源文件进行更细致的划分,拆分为软硬件环境和触发机制配置源文件(Declaration)和动作事件定义源文件(Definition)。
随后,用户交互单元接收用户对源文件的编辑,引导用户完成对可编程控制装置的编程。
在编程过程中,本实施例提供QPL(Quick Program Language)模块化编程语言,使得开发过程变得简单、快速且直观。QPL语言是一种方便灵活的模块化描述应用程序的软硬件环境及动作事件的高级语言。其包括三个语法单元:一是资源文件描述部分;二是软硬件环境及触发机制配置的描述部分,用于描述控制装置的***触发,免去用户处理底层硬件细节的烦恼;三是动作事件定义的描述部分,用于描述当某一功能对象被触发时控制装置对应执行的动作。
实例一$Keyscan(键盘简易编程方法)
请参阅图6,是实际的键盘硬件连接示意图。
在选定功能对象时,IDE(集成开发环境)提供键盘扫描配置列表,使得用户通过该列表可以方便地选择各种满足需要的键盘阵列;如果用户不满足于***提供的缺省键盘定义,那么用户还可以通过IDE进行自主配置。
请参阅图7,开发***为用户定义多个方便的键盘阵列组合,支持行列式和直连式,用户只要指定要使用EasyN即可。
请参阅图8,也可以进行用户自定义,只需指定哪些I/O作为Scan Line(扫描线),哪些I/O作为Sense Line(输入线)即可。开发***会自动为用户作IO的初始化、键盘的扫描,使得用户无需关心硬件底层的细节。IDE会在Declaration文件中自动生成KeyScan段,并在该段下生成键盘矩阵EASY8各功能对象TG1至TG8:
   $KeyScan:
 EASY8
      TG1    TG2   TG3    TG4&
      TG5    TG6   TG7    TG8
并且,键盘支持设置键盘扫描的输入线(Sense Line)的上拉电阻和下拉电阻。键盘也支持键盘扫描输出线(Scan Line)输出高、低电平的设置,SenseLine、Scan Line的设置根据用户键盘矩阵电路的实际情况确定。
开发***还会自动避免错误,由于Sense Line、Scan Line与芯片I/O接口硬件相关,每一系列芯片的I/O接口情况不太一样,若用户不了解而导致设置错误时,***会出示错误提示对话框,引导用户进行正确的设置操作。
配置结束后,用户就能够使用QPL语言提供的触发条件描述语法来描述键盘的各个按键的触发条件和动作事件。
由于开发***的键盘模组能识别两个键同时按下的情况,且能够识别某按键按下、抬起的动作。因此触发条件可以是键按下触发或键释放触发。
在键盘功能对象中,动作事件可以是一个动作函数名,用户可以在后续的动作函数的描述部分Definition文件中做相应的函数体定义描述;动作事件也可以表示为无动作。
同时,用户可以设置若干不同的触发状态,在不同的触发状态下,用户可以为各个按键设置不同的动作事件,***提供状态切换函数SetState以方便用户进行状态转换。
下面是功能对象及触发机制编程描述的举例说明。
$KeyScan:
[1]DebounceLevel=10
[2]Easy8
[3]     TG1   TG2     TG3      TG4  TG5  TG6  TG7    TG8
[4]K_S0:Path_A@Path_B/Path_C    X    X    X    X
[5]K_S1:/Path_C X/Path_A /Path_C X/@Path_B  X  X
[6]......
[7]K_Sn: X    /Path_C X/Path_A /Path_C X /@Path_B  X  X
其中,
[1]是对按键防抖功能的设置;
[2]是通过IDE设置的键盘阵列大小;
[3]是IDE生成的键盘阵列,TG1~TGn(n=8)表示键盘的每一个触发按键(即功能对象);
[4]是用户使用QPL语言配置的键盘状态K_S0和在此状态下各个按键的触发条件和动作事件。K_S0是触发状态。
Path_A,Path_B,Path_C是触发时的执行动作函数的名称,与TG1~TGn一一对应,表示此触发按键被按下或释放时的执行动作(实际上,用户在此处设置动作事件时也同时宣告此动作事件,所以用户必须在后续的动作事件描述部分中定义这些动作事件的实际意义;动作事件可以复用),没有动作事件对应或使用X对应的触发按键无论在按下或释放时均没有执行动作。
动作事件前面如果有’/’字符,那么表示此动作在释放时触发,否则表示在按下时触发。
用户还可以同时设置动作函数的执行属性,方法就是在动作函数前面加入‘@’符号,如果设置的动作函数前加有‘@’符号,表示在触发条件满足时***会采用快速函数的方式,即以调用(call)函数的方式进入某一动作函数执行该函数内指令,并以该函数内的“return”指令(从函数返回)返回到原来调用该函数的指令处,这种函数的执行可形成嵌套执行;如果设置的动作函数前没有‘@’符号,表示在触发条件满足时***会采用普通函数方式,即采用“goto”指令方式进入函数执行该函数内指令,并以该函数内“end”指令结束指令的执行,而不会像调用函数那样返回,这种函数的执行不会形成嵌套执行。
[5]~[7]与[4]类似,是用户使用QPL语言配置的键盘状态K_Sl,......,K_Sn和在这些状态下各个按键的触发条件和动作事件。
当用户将当前状态切换到KeyScan的某个状态时,则在此状态下,如果用户触发了某一按键,那么在此状态下这一按键的对应的动作事件将被可编程控制装置执行。
随后,进行动作事件描述(在Definition文件中进行),也就是对前面宣告的动作事件的实际意义进行定义,即对前面宣告的动作函数的函数体进行定义,可以是采用一些高级语言,如ANSI-C,Pascal,Fortran等,实现的用于描述执行动作的函数,并在至少一个函数里设定按键的某一个状态为当前执行状态。
需要说明的是,可编程控制装置的各功能对象的触发状态的切换可以通过两种方式进行。一种方式是调用开发***提供的状态切换函数SetState(x,y),参数x、y的含义是:x用于指明事件源,可为“KEY”、“IR”、“IN”、“OUT”、“TM”、“ME”等;y用于表示所指事件源中状态索引号(1~n),0为无状态。另一种方式是在动作事件中进行状态切换。
也就是说,在编程过程中,用户只需要选定键盘阵列的触发按键;配置触发按键的触发状态和触发条件;并且设定按键在满足触发条件(按下/释放)时可编程控制装置所执行的动作事件(动作函数或无动作)即可。除此之外,用户不需要关心键盘使用的I/O脚是否与其它的I/O使用相冲突,不需要考虑如何进行键盘扫描的检测,不需要考虑在某一状态下按键按下或释放时如何触发相应的动作,所有这些有关硬件、软件底层的细节由开发***的IDE及其中的QPL Complier和QPL Module协调解决。
实例二IRScan(红外扫描接收方法)
选定功能对象、设置触发条件及与动作事件的对应关系。
首先,本实例中选定用于接收红外信号的端口。如果用户没有进行选定,则开发***将选用缺省的端口。
需要说明的是,对本实例来说,由于指定红外接收器件的耗电量较大,因此需设定红外接收器件的电源控制端口及其有效/无效状态,使控制装置能够在省电的睡眠状态时将其无效掉。
其次,对于本实例来说,还需要选定红外接收器的编号(ID)。只有当接收到的红外命令中包含指定该编号的接收器时才执行动作事件。
随后,指定该管脚接收的红外信号的类型(红外命令之ID)。并配置不同类型的红外信号对应的动作事件。
同时,用户可以设置若干个不同的触发状态,在不同的触发状态下,用户可以为各个红外信号设置不同的动作事件。
下面是功能对象及触发机制描述的举例说明。
$IrScan:
[1]IrReceivePin=Pa.0
[2]IrRxPowerCtrl(pb.1)/high
[3]IrRxId=1
[4]       Rx1    Rx2        Rx3    Rx10
[5]Ir_S0:Path_A Path_B    Path_C    X
[6]Ir_S1:Path_C Path_A    Path_C    X
[7]......
[8]Ir_Sn:X      Path_C    Path_A  Path_C
其中,
[1]是用户设置的红外接收IO端口,用户可以选择性设置,否则使用缺省的IO端口。
[2]是用户对红外接收器进行电源控制的端口及其有效状态设置。
[3]是对红外接收器编号的设置。
[4]是接收的各红外信号的命令ID。
[5]是对某一触发状态Ir_S0下接收到某一命令的红外信号Rxm(其中,m=0~63)时对应的动作事件的设置。
[6]~[7]与[5]类似。是对触发状态Ir_S1,...,Ir_Sn下接收到某一命令的红外信号Rxm(m为正整数)时对应的动作事件的设置。
当用户将当前状态切换到IrScan某个状态Ir_Sn(n为正整数)时,那么在此状态下,如果接受到某一命令的红外信号,则这一命令的红外信号对应的动作事件将被执行。也就是说,当指定ID的红外接收器收到红外命令Rxm(m为正整数)后,可编程控制装置会执行当前触发状态下的Rxm下对应的动作事件。动作事件包括指定动作函数名或指定无动作(X)。
随后,进行动作事件的实际意义的描述,也就是对前面宣告的动作函数的函数体进行定义,并在至少一个函数里设定IrScan功能对象的某一个状态为当前执行状态。
也就是说,在编程过程中,用户通过使用开发***的QPL语言提供的Irscan语法,能简洁直观的指定当接收到某一红外命令信号时的动作事件;而无需关心硬件如何实现红外扫描,以及当接受到某一红外命令信号时,此红外命令信号如何与动作事件关联。同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为各个红外命令信号设置不同的动作事件。有关底层的细节由开发***的IDE及其中的QPL Complier和QPL Module协调解决。
实例三$Input(输入事件)
首先,选定功能对象。本实例中就是选定输入管脚。
随后,指定输入管脚的触发条件,并配置不同输入管脚被触发时对应的动作事件。
输入管脚可以在从高电平跃变到低电平时触发,或者从低电平跃变到高电平时触发。
同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为各个输入管脚设置被触发时对应的不同的动作事件。动作事件包括指定动作函数名或指定无动作。
下面是功能对象及触发机制描述的举例说明。
$Input:
[1]DebounceLevel=10
[2]      Pa.1    Pb.2       Pa.3      Pc.6
[3]I_S0:Path_A   Path_B    /Path_C
[4]I_S1:/Path_C  X/Path_A  /Path_C
[5]......
[6]I_Sn:X       /Path_C    X/Path_A  /Path_C
其中,
[1]是用户对输入信号防抖功能的设置。
[2]是用户设置的输入管脚。用户可以通过IDE提供的信息来查看可选用的管脚,以此来正确选择管脚(如果选择不正确,Compiler将提示错误)。
[3]是用户使用QPL语言配置的输入管脚触发状态I_S0和在此状态下各个输入管脚的触发条件和动作事件。I_S0是触发状态。
Path_A,Path_B,Path_C是被触发时的执行动作函数名。动作函数名前面如果有’/’字符,那么表示此动作函数在输入管脚从高电平跃变到低电平时触发,否则表示在输入管脚从低电平跃变到高电平时触发。其余与KeyScan类似。
[4]~[6]与[3]类似,是用户使用QPL语言配置的输入管脚触发状态I_S1,...,I_Sn和在这些状态下各个输入管脚的触发条件和动作事件。
随后,进行动作事件中动作函数描述,也就是对前面宣告的动作函数进行函数体定义,并在至少一个函数里设定输入管脚的一个状态为当前执行状态。
本实例在编程过程中,用户通过使用开发***的QPL语言提供的Input语法,能简洁直观的指定任何输入管脚以及动作事件;而无需关心硬件如何实现输入管脚扫描,以及如何实现某一输入管脚与动作事件的关联。同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以设置各个输入管脚被触发时不同的动作事件。有关硬件、软件底层的细节由开发***的IDE及其中的QPL Complier和QPL Module协调解决。
实例四$Output(输出事件)
首先,选定功能对象。本实例中就是选定输出管脚。
随后,指定不同输出管脚被触发时的对应的动作事件。
动作事件包括指定动作常量或指定无动作。其中,动作常量可表示为逻辑高电平信号,或为逻辑低电平信号,或为单正脉冲信号,或为单负脉冲信号,或为正脉冲串信号,或为负脉冲串信号。
同时,用户可以设置若干个不同的触发状态,在不同的触发状态下,用户可以为各个输出管脚设置不同的动作事件。
下面是功能对象及触发机制描述的举例说明。
$Output:
[1]F1ashRate=50
[2]Duty=0.6
[3]Pa.1      Pb.2  Pa.3   Pc.6
[4]O_S0:H     L     P+
[5]O_S1:L     P-    X      SP-
[6]......
[7]O_Sn:X     SP+   P-/Duty=0.3/80
其中,
[1]是用户设置的输出信号为正或为负脉冲串信号时该脉冲串信号的频率。
[2]是用户设置的输出信号为正或为负脉冲串信号时该脉冲串信号的占空比。
[3]是用户设置的输出管脚。用户可以通过IDE提供的信息来查看可选用的输出管脚,以此来正确选择管脚(如果选择不正确,Compiler将提示错误)。
[4]是用户设置的输出状态O_S0以及在此状态下每个输出管脚的输出状态。
[5]~[7]与[4]类似,是用户设置的输出状态O_S1,...,O_Sn以及在此状态下每个输出管脚的输出状态。
注意,在此,“H”、“L”分别表示输出逻辑高或逻辑低电平信号;“P+”、“P-”分别表示输出正或为负脉冲串信号;“SP+”、“SP-”则分别为单正或单负脉冲信号。
当用户将当前状态切换到某个触发状态时,那么在此状态下可编程控制装置将驱动各个输出管脚输出与之相对应的信号波形。
随后,进行动作事件描述,即在至少一个函数里设定输出管脚的一个状态为当前执行状态。
本实例中,在编程过程中,用户通过使用开发***的QPL语言提供的Onput语法,能简洁直观的指定任何输出管脚以及动作事件;而无需关心硬件如何实现输出管脚扫描,以及如何实现某一输出管脚与动作事件的关联。同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为各个输出管脚设置不同的动作事件。有关硬件、软件底层的细节由开发***的IDE及其中的QPL Complier和QPL Module协调解决。
实例五$TimerEvents(定时器事件)
首先,选定功能对象。本实例中就是选定定时器。
随后,指定不同定时器满足定时计数溢出条件时的对应执行的动作事件。该动作事件包括指定动作函数名或指定无动作。
同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为各个定时器设置不同的动作事件。该动作事件包括指定动作函数名或指定无动作。
下面是功能对象及触发机制描述的举例说明。
$TimerEvents:
[1]       TM1       TM2        TM3       TM4
[2]T_S0:T_Path_A   T_Path_B   T_Path_C    X
[3]T_S1:T_Path_C   T_Path_A   T_Path_C    X
[4]......
[5]T_Sn:X          T_Path_C   T_Path_A  T_Path_C
其中,
[1]是用户设置的时钟的ID。
[2]是对某一状态T_S0下某一时钟被触发时的动作事件的设置,其中,“T_Path_A”、“T_Path_B”、“T_Path_C”分别为指定的动作函数名,“X”为指定的无动作。
[3]~[5]与[2]类似。是对状态T_S1,...,T_Sn下某一时钟被触发,即满足定时计数溢出条件时的动作事件的设置。
当用户将当前状态切换到定时器的某个触发状态时,则在此触发状态下,如果某一时钟的计时时间到达,那么在此状态下这一时钟对应的动作事件将被执行。
并且,在设置触发状态后,用户可以设置定时器TMm(m为正整数)的加或减定时计数初值,当在该计数初值基础上定时计数溢出时,会执行该定时器在此状态下对应的动作事件。
随后,进行动作事件中动作函数描述,也就是对前面宣告的动作函数进行函数体定义,并在至少一个函数里设定输入管脚的一个状态为当前执行状态。
本实例中,用户通过使用QPL语言提供的timerevent语法,能简洁直观的指定当某一时钟的计时时间来到时的动作事件,而无需关心可编程控制装置如何实现时钟与其对应动作事件的关联。同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为各个时钟设置不同的动作事件。所有这些有关硬件、软件底层的细节通过IDE,Compiler,Module协调解决。
实例六$MusicEvents(音乐播放事件)
首先,选定功能对象。本实例中就是选定资源文件并指定其中的音符ID。
资源文件是指可编程控制装置在运行时使用的音乐文件(如MIDI音乐)及其相关参数。
通常,在MIDI音乐中可以设置多个音符(EventNote)。如下表所示:
EventNote
ME1  ME2  ME3  ME4  ME5 ......  ME12
C0  C#0  D0  D#0  E0 ......  F#0
ME13  ME14  ME15  ME16  ME17 ......  ME24
C1  C#1  D1  D#1  E1 ......  F#1
......
因此,通过选定若干音符,并指定音符在不同音符播放时对应的动作事件。则当特定的音符被播放时,可编程控制装置可以执行设定的动作事件。该动作事件包括指定动作函数名或指定无动作。
同时,用户可以设置若干不同的触发状态,在不同的触发状态下,用户可以为各个指定的音符设置不同的动作事件。
下面是功能对象及触发机制描述的举例说明。
$MusicEvents:
[1]      ME1      ME2       ME3        ME10
[2]M_S0:M_Path_A  M_Path_B  M_Path_C    X
[3]M_S1:M_Path_C  M_Path_A  M_Path_C    X
[4]......
[5]M_Sn:  X       M_Path_C  M_Path_A  M_Path_C
其中,
[1]是用户设置的音符ID列表,音符ID最大可以是ME128。
[2]是对某一状态M_S0下对指定音符被播放时的动作事件的设置,其中,“M_Path_A”、“M_Path_B”、“M_Path_C”分别为指定的动作函数名,“X”为指定的无动作。
[3]~[5]与[2]类似。是对状态M_S1,...,M_Sn下某一音符被播放时的动作事件的设置。
当用户将当前状态切换到某个musicevent状态时,如果指定音符被播放,那么在此状态下指定音符对应的动作事件将被执行。
随后,进行动作事件中动作函数描述,也就是对前面宣告的动作函数进行函数体定义,并在至少一个函数里设定输入管脚的一个状态为当前执行状态。
本实例中,用户通过使用QPL语言提供的musicevent语法,能简洁直观的指定当某一音符被播放时的动作事件,而无需关心程序如何实现某一音符与其对应动作事件的关联。同时,用户可以设置不同的触发状态,在不同的触发状态下,用户可以为指定音符设置不同的动作事件。所有这些有关硬件、软件底层的细节通过IDE及其中的Compiler,Module协调解决。
实例七$SpeechEvents(语音播放事件)
对于语音播放事件来说,其处理思路类似于实例六的音乐播放事件,此不赘述。
在用户对源文件的编辑结束后,可以通过IDE启动编译单元,由编译单元根据用户输入的信息自动生成汇编语言格式的控制程序。
请参阅图9,编译单元的驱动单元从用户交互单元110接收输入的信息;将资源引入源文件(Resource)和软硬件环境和触发机制源文件(Declaration)传递给功能对象及触发机制处理单元(QPDEC)。
功能对象及触发机制处理单元将资源引入源文件和软硬件环境和触发机制源文件转换成第一编译参数,反馈给驱动单元。
驱动单元将动作事件源文件(Definition)传递给动作事件预处理部分(QPDCC);动作事件预处理部分对该动作事件源文件进行预处理后生成第二编译参数,反馈给驱动单元。
驱动单元将第一和第二编译参数传递给编译部分(QPDEF),生成汇编语言格式的控制程序。
在此过程中,当编译单元120扫描到功能对象的选定信息中包含的某一功能对象时,则从功能模组130中提取该功能对象的操作程序,并将其一一有机结合到控制程序中。
随后,汇编单元和链接单元对所述控制程序进行汇编、链接,生成可执行机器代码。
此外,为进一步扩展可编程控制装置的功能,当选定的功能对象是Music(音乐)播放模块的EventNote(音符)或者Speech(语音)播放模块的EventSect(语音段)时,还包括绑定可执行机器代码与资源文件,生成完整的可执行机器代码的步骤。
在生成可执行机器代码后,即可进行下载并调试运行;如果调试通过,则可加载烧录至可编程控制装置,完成所需功能的开发,此不赘述。
请参阅图10,是本发明可编程控制装置的框图。
该可编程控制装置包括功能单元810、存储单元820、事件响应电路830、执行电路840和复位电路850。
所述功能单元810是可编程控制装置中能够实现特定功能的器件,具有若干功能对象,当这些功能对象被触发时,可编程控制装置可以根据预先的设定去完成与其关联的动作,从而有效地完成用户的功能需求。
通常,功能单元810包括但不限于输入电路、输出电路、键盘扫描电路、定时/计数器、模数转换器、红外接收电路、语音播放电路、音乐播放电路等。
一般来说,对于可以接收外部信号的器件来说,当其接收到预定的信号时,即可以认为该功能对象被触发。而对于输出电路来说,当控制装置启动该输出电路以向外部输出信号时,则认为输出电路被触发。
此外,为进一步拓展可编程控制装置的功能,还可以将控制装置内定时器,或播放的音符或者声音片断定义为功能对象。此时,如果定时器计时时间到达时、或语音播放电路来播放特定的声音片断或者音乐播放电路播放特定的音符,则认为该功能对象被触发。
此外,对于同一个功能对象来说,可以为其设定多个不同的触发条件,例如,对于键盘来说,按键被按下或抬起可以认为是两个不同的触发条件,并且对应不同的触发条件可以设定不同的动作事件。
而且对于同一个功能对象,可以设置多个不同的触发状态,在特定的触发状态下来指定对应的动作事件,从而进一步丰富触发机制的表现形式。
该存储单元820中存储所述功能对象的触发状态、以及各触发状态下功能对象被触发时对应的动作事件。上述信息可以包含在用户采用本发明的开发方法完成的控制程序内。该信息可以存储在一个存储空间内,也可以采用多个存储空间来进行保存,此不赘述。
当功能对象810被触发时,事件响应电路830将获悉相关的触发信号,从而查询存储单元820以判断功能对象810的当前触发状态;并且根据触发信号查找对应的动作事件。
触发信号可以是功能对象产生的异常事件信号或中断事件信号。例如,当功能对象是定时器,所述触发信号是定时器计时溢出信号。当功能对象是输入电路时,则可以是其接收的外部信号。
执行电路840随后根据事件响应电路830的查找结果执行所述动作事件。
复位电路850主要用于实现所述可编程控制装置的复位操作。
请参阅图11,是本发明可编程控制装置的一个实施例。
该可编程控制装置包括处理器710、存储器720、输入/输出端口730、低电压复位和上电复位电路740、定时/计数器750、音频处理器760、数字混合器(多通道声音硬件合成电路)770、数模转换电路780。
输入/输出端口730中的通用输入/输出端口、特殊功能输入输出端口、数模转换电路780等触发信号提供单元被触发后可以产生相应的触发信号。其中,输入/输出端口730中的通用输入端口在接收到外部信号时,与其连接的管脚读取电路将产生触发信号发送到处理器710;或者与其连接的睡眠/唤醒电路将产生异常中断或事件中断信号,发送到处理器710;输入/输出端口730中的通用输入/输出端口可组成各种类型的键盘矩阵电路,在接收到键按下或键抬起信号时,将产生触发信号发送到处理器710,或者与输入端口连接的睡眠/唤醒电路将产生异常中断或事件中断信号,发送到处理器710。特殊功能输入端口包括红外命令接收/端口、比较器比较输入端口以及模数转换器电路端口,分别在接收到红外命令时产生触发信号发送到处理器710,或比较输入信号相等时产生触发信号发送到处理器710,或将从控制装置外部接收模拟信号并将其转换为数字信号时产生触发信号发送到处理器710。输入/输出端口730中的通用输出端口被触发后,处理器710将根据当前触发状态执行输出动作常量指令,可输出逻辑高电平、逻辑低电平、单正脉冲信号、单负脉冲信号、或脉冲串信号。
定时/计数器750在定时/计时时间到达后,将产生事件中断信号会发送到处理器710。
音频处理器760和数字混合器770用于对音频信号进行处理并进行多通道混音处理,通过数模转换电路780在播放特定的音符或声音片断时,处理器710也会根据事先的设定接收到对应的触发信号。
此外,低电压复位和上电复位电路740在触发时会引发复位事件,发送到处理器710。
存储器720存储动作事件、触发信号与动作事件之间的对应关系。
处理器710根据触发信号查找存储器720内的对应关系,并获取动作事件的地址,执行相应的动作事件。
可以理解的是,触发信号提供单元还可以是图像接收单元,用于从控制装置外部接收图像信号。
用于输出处理器产生的输出信号的信号输出单元还可以是图像显示驱动电路,此不赘述。
综上所述,本发明将可编程控制装置模块化划分各个功能对象,同时将控制程序模块化为功能对象选定、触发机制配置和动作事件设定等部分,用户能站在更高的层面描述软硬件触发环境,而不需要关心底层软、硬件的实现细节,所以使产品应用程序的开发简化、快速且清晰直观,并且方便用户的后续功能扩充。
本发明可以协调控制装置各个部件功能,屏蔽底层硬件的细节,提供用户一个功能描述的环境,使得开发人员能把主要精力放在产品的功能上,而不需要对该装置的硬件资源非常熟悉,因此用户做的只是需要考虑实现控制装置哪些功能,而不需要去关心实现方案的细节,以此带给用户更大的功能设计空间。
本发明提供QPL高级语言,其兼有模块化功能描述语言和集成化程序设计高级语言的优点,运用模块化功能描述语法,用户能站在更高的层面描述软硬件触发环境,而不需要关心底层软、硬件的实现细节,所以使产品应用程序清晰直观,从而方便了用户的后续功能扩充;运用集成化程序设计高级语言语法,用户能方便灵活的运用***提供的各种播放控制指令、事件控制指令、时间控制指令来控制硬体的行为,同时配以集成化程序设计语言的控制流,表达式语法,用户能充分的描述动作事件。
本发明可以应用于多个领域的可编程控制装置,采用本发明开发的控制装置可以应用于语音类控制器、通讯、多媒体电子产品,如儿童电子琴、电子语音玩具、电子图书、和弦铃声、游戏机、智能电话、多功能玩具等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (16)

1.一种可编程控制装置的开发方法,该可编程控制装置包括功能单元,所述功能单元具有至少一功能对象;其特征在于,包括步骤:
1)接收用户输入信息;包括:
11)选定所述可编程控制装置的功能对象;
12)配置前述功能对象的触发状态;
13)设置触发状态下前述功能对象被触发时由控制装置执行的动作事件;
14)定义前述动作事件;并且至少在一动作事件中设定功能对象的当前触发状态;
2)解析所述用户输入信息,生成所述可编程控制装置的控制程序;
3)对该控制程序进行汇编、链接,生成可执行机器代码。
2.如权利要求1所述的可编程控制装置的开发方法,其特征在于,所述步骤2)具体包括:
21)将功能对象的选定信息和触发状态设置信息、功能对象被触发时其与动作事件的对应信息转换为编译参数;
22)将动作事件的设定信息转换为编译参数,并且结合所有的编译参数生成汇编语言形式的控制程序。
3.如权利要求2所述的可编程控制装置的开发方法,其特征在于:所述步骤2)中,还包括获取与功能对象有关的程序模块,将其结合至控制程序中。
4.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:所述步骤1)中,还包括指定资源文件;所述步骤3)之后还包括绑定前述可执行机器代码与所述资源文件,生成最终的可执行机器代码。
5.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:在所述步骤13)中还包括设定所述功能对象在接收到预定的外部信号时被触发;或者在执行预定功能时被触发;或者在切换到触发状态时被触发。
6.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:所述步骤14)定义的动作事件包括产生输出信号、切换功能对象的触发状态或者启动另一动作事件。
7.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:所述步骤14)定义的动作事件为动作函数或动作常量。
8.如权利要求7所述的可编程控制装置的开发方法,其特征在于:所述动作常量包括逻辑高电平信号、或逻辑低电平信号、或单正脉冲信号、或单负正脉冲信号、或正脉冲串信号、或负脉冲串信号。
9.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:所述步骤11)所述的功能对象包括输入管脚、键盘按键、红外接收命令、比较器、输出管脚和/或定时器。
10.如权利要求1至3任一项所述的可编程控制装置的开发方法,其特征在于:所述步骤11)所述的功能对象是音频播放单元播放的音符或声音片断,或者是图像显示单元产生的图像扫描驱动信号。
11.一种可编程控制装置的开发***,用于提供集成开发环境,其特征在于,包括:
用户交互单元,用于接收用户的输入信息;所述用户的输入信息包括:功能对象的选定信息、触发状态配置信息、功能对象被触发时其与动作事件的对应信息和动作事件的设定信息;
编译单元,用于解析所述用户的输入信息,自动生成控制程序;
功能模组,用于为编译单元提供功能对象操作程序以支持编译单元的编译;
汇编单元,用于将编译单元产生的控制程序转换成目标代码;
链接单元,用于将前述目标代码与相关的库文件进行链接,生成可执行机器代码。
12.根据权利要求11所述的可编程控制装置的开发***,其特征在于,所述编译单元包括:
功能对象及触发机制处理单元,用于将功能对象的选定信息、触发状态配置信息、功能对象被触发时其与动作事件的对应信息转换为第一编译参数;
动作事件处理单元,用于将动作事件的设定信息转换为第二编译参数,并且结合第一和第二编译参数生成控制程序。
13.根据权利要求12所述的可编程控制装置的开发***,其特征在于:所述动作事件处理单元包括动作事件预处理部分和编译部分;所述动作事件预处理部分用于对动作事件的设定信息进行预处理后传递给编译部分;所述编译部分同时接收所述预处理后的参数与功能对象及触发机制处理单元传递的编译参数,并生成控制程序。
14.根据权利要求12或13所述的可编程控制装置的开发***,其特征在于:所述编译单元还包括驱动单元,用于从用户交互单元接收输入的信息,并驱动功能对象及触发机制处理单元和动作事件处理单元。
15.根据权利要求11所述的可编程控制装置的开发***,其特征在于:所述编译单元还包括资源文件处理单元,用于处理用户输入的资源文件设置信息;该***还包括捆绑单元,用于将链接单元产生的可执行机器代码与相关的资源文件进行捆绑,生成最终的可执行机器代码。
16.根据权利要求15所述的可编程控制装置的开发***,其特征在于:所述资源文件处理单元与功能对象及触发机制处理单元集成。
CNB2005100000159A 2005-01-04 2005-01-04 一种可编程控制装置的开发方法及*** Expired - Fee Related CN100359462C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005100000159A CN100359462C (zh) 2005-01-04 2005-01-04 一种可编程控制装置的开发方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005100000159A CN100359462C (zh) 2005-01-04 2005-01-04 一种可编程控制装置的开发方法及***

Publications (2)

Publication Number Publication Date
CN1801080A CN1801080A (zh) 2006-07-12
CN100359462C true CN100359462C (zh) 2008-01-02

Family

ID=36811112

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005100000159A Expired - Fee Related CN100359462C (zh) 2005-01-04 2005-01-04 一种可编程控制装置的开发方法及***

Country Status (1)

Country Link
CN (1) CN100359462C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108459552A (zh) * 2018-01-31 2018-08-28 南京拓控信息科技股份有限公司 一种智能化面向对象的可编程的自动化控制方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104503771B (zh) * 2015-01-14 2018-03-20 北京纵横机电技术开发公司 一种列车网络控制***集成开发平台
CN104572108B (zh) * 2015-01-14 2018-02-16 北京纵横机电技术开发公司 一种列车网络控制***软件开发方法
CN107066173B (zh) 2017-03-28 2018-06-05 腾讯科技(深圳)有限公司 操作控制方法及装置
CN107664960A (zh) * 2017-08-23 2018-02-06 深圳市顺讯电子有限公司 一种可编程的控制***及方法
CN107665118A (zh) * 2017-08-31 2018-02-06 深圳市润隆电子有限公司 可编程控制方法、***、电子设备及存储介质
CN108287724B (zh) * 2017-12-27 2021-09-07 杭州迈杰教育科技有限公司 教学控制器代码烧录方法、电子设备及存储介质
CN111756940A (zh) * 2020-07-07 2020-10-09 广州威谱通信设备有限公司 一种可编程寻址双输入混音的精简数字语音通信***
CN112346767A (zh) * 2020-11-11 2021-02-09 蘑菇物联技术(深圳)有限公司 一种更新控制程序的方法、***、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321829A (en) * 1990-07-20 1994-06-14 Icom, Inc. Graphical interfaces for monitoring ladder logic programs
US6366116B1 (en) * 2001-01-18 2002-04-02 Sunplus Technology Co., Ltd. Programmable driving circuit
CN1407441A (zh) * 2001-08-24 2003-04-02 微软公司 自动管理计算机服务和可编程器件的***和方法
CN1431570A (zh) * 2002-01-10 2003-07-23 欧姆龙株式会社 单元和可编程控制器以及用户程序的处理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321829A (en) * 1990-07-20 1994-06-14 Icom, Inc. Graphical interfaces for monitoring ladder logic programs
US6366116B1 (en) * 2001-01-18 2002-04-02 Sunplus Technology Co., Ltd. Programmable driving circuit
CN1407441A (zh) * 2001-08-24 2003-04-02 微软公司 自动管理计算机服务和可编程器件的***和方法
CN1431570A (zh) * 2002-01-10 2003-07-23 欧姆龙株式会社 单元和可编程控制器以及用户程序的处理方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108459552A (zh) * 2018-01-31 2018-08-28 南京拓控信息科技股份有限公司 一种智能化面向对象的可编程的自动化控制方法
CN108459552B (zh) * 2018-01-31 2021-07-23 南京拓控信息科技股份有限公司 一种智能化面向对象的可编程的自动化控制方法

Also Published As

Publication number Publication date
CN1801080A (zh) 2006-07-12

Similar Documents

Publication Publication Date Title
Vahid et al. SpecCharts: A VHDL front-end for embedded systems
CN100359462C (zh) 一种可编程控制装置的开发方法及***
CN103345446A (zh) 一种适用于遥控类产品的自动化测试方法
CN100370416C (zh) 一种可编程控制装置及其方法
Bates Programming 8-bit PIC microcontrollers in C: with interactive hardware simulation
CN103472743A (zh) 可视化步骤编程法
CN101145103A (zh) 一种点读机***及其脚本驱动方法
Calcutt et al. 8051 Microcontroller: An Applications Based Introduction
US6272388B1 (en) Program structure and method for industrial control
CN111212103A (zh) Sca软件无线电台界面模拟***和方法
KR20130053714A (ko) Vpl을 이용한 프로그램 개발 방법과 그 방법을 구현한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체
Pi Camera module
CN103365750B (zh) 一种适用于遥控类产品的自动化测试平台
KR20090110486A (ko) 로봇 제어 코드 생성 방법 및 그 장치
JP3189793B2 (ja) システムシミュレータおよびシステムシミュレーション方法
CN115344248A (zh) 一种rpa开发字段编辑多样化方法
KR20020032256A (ko) 통합 임베디드 시스템 및 이의 구현 방법
CN102043715A (zh) 一种现场用户实现单片机仿真的方法及装置
CN111522557A (zh) 一种图形信号发生器及显示面板检测***
Demo et al. Contributing to the development of Linguistic and Logical Abilities through Robotics
CN101826012A (zh) 一种在pc机上模拟机顶盒界面的方法
CN212675544U (zh) Mcu自动构建和自动测试***
US11921614B2 (en) System and method for developing, testing and debugging software for microcontrollers
Akaike A Programming Device for Newbie as a Daily Commodity
CN202041807U (zh) 一种单片机多路开发器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080102

Termination date: 20150104

EXPY Termination of patent right or utility model