用于可编程序逻辑控制器的脉冲输出功能的制作方法

文档序号:6283243阅读:184来源:国知局

专利名称::用于可编程序逻辑控制器的脉冲输出功能的制作方法本申请是申请号为02826810.5、申请日为2002年12月17日、发明名称为“用于可编程序逻辑控制器的脉冲输出功能”的分案申请.相关申请的交叉引用本申请要求下列待审临时申请的优先权,并且在此全部引入作为参考:2002年1月7日提交的编号为60/346,488(代理人号No.2002P00150).
背景技术
:美国专利申请US4,156,170(Strunc)依其陈述在其摘要中说明:一种微处理器控制步进式马达的运行.使用一种包含数目序列的查找表来产生该步进式马达的升或者降速度控制.该微处理器针对该步进式马达速度控制而供应该查找表中的数目,这使得该步进式马达按照该微处理器所供应的数目确定的速率来步进。美国专利申请US4,714,867(Palmin)依其陈述在其摘要中说明:一种步进式马达随着抛物线速度轮廓而加速和减速。获得抛物线速度轮廓的脉冲之间的时间由基于微处理器的步进式马达控制器根据希望的起/停速度值、最大速度和达到最大速度的时间来确定。所需要的时间存储在随机存取存储器中,并且被使用来在加速和减速期间向该马达供应遵循该抛物线速度轮廓的脉冲串.
发明内容在本发明的一个方面,提供了一种方法,包括:获取第一位置、第二位置以及用于在第一位置和第二位置之间的移动的最大运动参数;创建一个包括用于所述移动的多个目标频率的数值表,所述数值表还包括与所述多个目标频率中的每一目标频率相对应的脉冲宽度、脉冲计数和差分脉冲宽度;从一个脉冲发生器输出所述数值的至少一部份。在本发明的另一个方面,提供了一种方法,包括:获取第一频率和第二频率;创建一个包括多个位于第一和第二频率中间的目标频率的数值表,所述数值表还包括与所述多个目标频率中的每一个目标频率相对应的脉冲宽度、脉冲计数以及差分脉冲宽度;将所述数值的至少一部份输出到一个运动装置.在本发明的又一个方面,提供了一种方法,包括:获取多个目标脉冲宽度;从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及将所述多个中间脉冲宽度输出到一个运动装置.在本发明的又一个方面,提供了一种装置,包括:一个适合于产生多个脉冲的脉冲发生器,每一脉冲通过在预计算出的目标之间内插而产生,每一脉冲的宽度由增量和子增量的时钟计数相加确定.在本发明的又一个方面,提供了一种装置,包括:一个脉冲发生器,适合于通过重复地在多个预计算出的中间脉冲输出频率之间内插而产生从第一脉冲输出频率到第二脉冲输出频率的变化,所述多个预计算出的中间脉冲输出频率中的每一个预计算出的中间脉冲输出频率与紧跟的前一个脉冲输出频率相差一个预定百分比。在本发明的又一个方面,提供了一种系统,包括:一个可连接到可编程逻辑控制器的、由子增量时钟计数导出可变频率脉冲发生器,所述脉冲发生器包括:一个连接到所述脉冲发生器的数据处理器;以及一个连接到所述数据处理器的存储器,所述存储器存储多个运动控制轮廓,所述脉冲发生器对所述多个运动控制轮廓中的每一个的执行可由所述数据处理器计算.在本发明的又一个方面,提供了一种系统,包括:用于获取多个目标脉冲宽度的装置;用于从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度的装置,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及用于将所述多个中间的脉冲宽度输出到一个运动装置的装置。在本发明的又一个方面,提供了一种系统,包括:用于获取半对数分布的多个目标脉冲宽度的装置;用于从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度的装置,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及用于从一个可编程逻辑控制器的一个脉冲发生器输出与所述多个中间脉冲宽度相对应的多个脉冲的装置。参考附图,经由以下某些典型实施例的详细说明,可以容易地理解本发明及其可能的实施例的广义范围,在这些附图中:图1是本发明方法1000的典型实施例的流程图;图2是本发明系统2000的典型实施例的方框图;图3是本发明信息装置3000的典型实施例的方框图;图4是本发明典型运动模块的高速缓冲存储器工作情况(behavior)的典型实施例的方框图;图5是本发明典型运动模块的一个参考点查找图表;图6是本发明典型运动模块的一个参考点查找图表;图7是本发明典型运动模块的一个参考点查找图表;图8是本发明典型运动模块的一个参考点查找图表;图9是本发明典型运动模块的两个参考点查找图表;图10是示出了本发明典型运动模块的灯的典型布局和标记的方框图;图11是示出用于本发明典型运动模块的各输入输出以及相关联的用户电源端子的典型电路的电路图;图12是用于所述运动模块的典型实施例的脉冲输出发生框图;图13是用于本发明典型实施例的频率-时间图;图14是用于本发明典型实施例的频率-时间图;图15是用于本发明典型实施例的频率-时间的S曲线图。详细说明本发明的至少一个典型实施例包括一种方法,所述方法包括获取第一位置、第二位置以及用于在第一位置和第二位置之间的移动的最大运动参数。所述方法还包括创建一种包括用于所述运动的多个目标频率的数值表,所述数值表还包括与所述多个目标频率中的每一个目标频率相对应的脉冲宽度、脉冲计数以及差分脉冲宽度。所述方法还包括从脉冲发生器输出所述数值的至少一部份。本发明的至少一个典型实施例包括一种方法,所述方法包括获取第一频率和第二频率.所述方法还包括创建一种包括位于第一和第二频率中间的多个目标频率的数值表,所述数值表还包括与所述多个目标频率中的每一个目标频率相对应的脉冲宽度、脉冲计数以及差分脉冲宽度。所述方法还包括将所述数值的至少一部份输出到一个运动装置。所述方法还可以包含通过因特网发送所述数值的至少一部份.本发明的至少一个典型实施例包括一个装置,所述装置包括一个子增量时钟计数导出脉冲发生器.本发明的至少一个典型实施例包括一装置,所述装置包括一个适合于通过在预先计算出的中间脉冲输出频率之间内插从而产生从第一脉冲输出频率到第二频率的变化的脉冲发生器,每一脉冲的宽度根据在加速和减速期间时钟计数的实时子增量相加导出.本发明的至少一个典型实施例包括一个系统,所述系统包括一个算术逻辑单元。所述系统还包括一个存储器,所述存储器通过管道机制连接到所述算术逻辑单元,该存储器包括一个预先计算的表,表中有目标脉冲宽度、脉冲宽度变化以及按照约束的半对数分布而分布的脉冲计数.所述系统进一步地包括一状态机,其适于将每个所述目标脉冲宽度和脉冲宽度变化以预先确定的脉冲计数间隔从所述存储器加载到所述算术逻辑单元中,同时保持对由所述算术逻辑单元产生的脉冲宽度的控制.图1是本发明方法1000的典型实施例的流程图.在某些实施例中,可以连同对运动装置起作用的脉冲发生器一起使用方法1000。运动装置可以是由一可变频率脉冲列控制的任何装置,包括:例如步进马达控制器、伺服控制器、致动器控制器等等这样的运动控制器;例如步进器驱动器、伺服驱动器等等这样的运动驱动器;和/或例如步进马达、伺服马达、线性马达、马达、滚珠螺杆、伺服阀、液压致动器、气动阀等等这样的致动器。可以看出,脉冲发生器能产生称作脉冲列的一系列脉冲。根据本发明的某些实施例,一可变频率脉冲发生器产生能在频率、计数、宽度、和/或差分宽度(在此也称为"脉冲宽度的变化")方面变化的脉冲列.在所述运动装置处,所述脉冲列的频率可以控制速度并且/或者所述脉冲计数可以控制位置。在活动(activity)1100,可以由所述脉冲发生器的一用户创建一运动控制轮廓(profile)。所述用户可以提供期望的成角度的和/或线性的行进距离以及通过这一距离的速度。在某些实施例中,所述用户可以提供最大速度、最大加速度、加速度相对于时间的最大变化(有时称作“最大加速度率(jerk)”或规定为“最大加速度率时间(jerktime)”)和/或最大加速度率相对于时间的最大变化.用户可以确定地和/或经验地确定这些值以实现所期望的机器运动和/或避免非所期望的结果,比如马达停转、马达滑动或其它的运动装置问题(例如过度压力、在传送物品和运输带之间的摩擦损失、液体的急冲(flinging)等等).作为响应,可以提供一个运动控制轮廓.在某些实施例中,所述运动控制轮廓可以在位置-时间曲线图上为运动装置指出所期望的位置和时间.在其它的实施例中,所述运动控制轮廓可以在频率-时间曲线图上指出所期望的运动装置的频率斜率.这样的一种运动控制轮廓可以包括频率的开始和结束,并且可以是直线的、曲线的或是在所述频率之间的直线和曲线部分的组合.在有些情况下,可以根据用户的输入,所述运动控制轮廓可以反映出一条S曲线,其中从开始频率的"起飞"逐渐地在频率变化上斜升,而到结束频率的"降落"在频率变化上逐渐地斜降,以避免在接近开始和结束频率处的频率突变.所述运动控制轮廓例如可以被存储为一种时间-频率点的表。其它可能的曲线可以包括位置-脉冲计数、频率-脉冲计数、速度-时间、速度-位置、加速度-时间、加速度-脉冲计数、加速度-位置、加速度-频率、和/或加速度-速度。注意:一个运动控制轮廓可以明确地提供某些运动参数,并且可以暗示其它的运动参数。例如,一个运动控制轮廓可以明确地描述一开始位置、一终点位置以及在开始和终点位置之间运动发生的时间,其中隐含地描述运动的平均速度。在活动1200,所述运动控制轮廓可以被存储在比如一个存储器中,以供以后检索.在活动1300,例如可以通过一种可编程序逻辑控制器(“PLC”)的脉冲发生器模块的运动控制处理器来获取所述运动控制轮廓。在活动1400,所述运动控制处理器可以加载来自所述运动控制轮廓的第一和第二频率,并且可以计算多个中间频率。所述运动控制处理器可以设法调整所述每个脉冲的脉冲宽度,以便实现所述频率(与速度相对应)、加速度、和/或特定应用的加速度规范的变化,而同时满足中间的和/或总的脉冲计数(与距离相对应)的规范。因为每个脉冲具有有限的宽度,并且因为脉冲宽度可以在脉冲列之内变化,所以在当前的典型的应用中,对脉冲宽度新值的需求可以从每秒几次到每秒几十万或几百万次.对于一种打算供给大范围终端使用需求的运动控制处理器来说,适当的运动参数的范围(例如,频率、加速度、时间、和/或距离等等)可以由浮点值表示和计算,和/或以一种具有许多有效位的万用定点格式表示。在本发明的某些实施例中,可以在需要前计算所述值并保存在存储器中以供检索和实时使用.本发明的至少一个实施例可以在运动开始之前计算与介于所述运动控制轮廓的第一和第二频率值之间的多个频率相关联的值(例如脉冲宽度、脉冲宽度的变化和/或脉冲数等等),并且可以将所述值存储在存储器中。在执行所述运动期间,可以以预先确定的脉冲计数间隔从存储器处取出这些值.在所述间隔期间、在取出的值之间所发出的各脉冲的脉冲宽度可以被计算为在每一脉冲的脉冲宽度方面的简单的线性相加,同时实时完成在与多个中间频率相关联的脉冲宽度的预计算值之间的内插。当计算时间相对自由时,在所述运动开始之前的数值计算可以使用处理器而允许所述计算达到期望的精度水平,所述处理器在大小、成本和/或功率方面受到限制.与足够分散的多个中间频率相关联的数值计算可以允许将预计算的数据存储在存储器中,所述存储器在大小、成本和/或功率方面受限制。在某些情况下,通过在所述预计算出的点之间的一种简单的加法内插而改变每一脉冲宽度可以比仅仅通过使用多个中间频率得到更接近所期望的运动控制轮廓的近似,同时限制了对于每一脉冲发生时要求一个可用新值的计算装置的成本、尺寸和/或功率。如果一个脉冲被定义为包括逻辑"1"和逻辑"0"的这样一个周期的事件,那么将一个定值简单的加入到每一脉冲的所述脉冲宽度会产生一个在频率方面的非线性变化,因为频率是脉冲宽度的倒数.将一定值持续的加入到所述脉冲宽度可以相对于时间在频率方面产生一显著地曲线变换,其具有在低频区小的加速度和在高频区大的加速度.为了实现所期望的遵循于特定的频率轮廓,可以控制在多个中间频率之间的所述间隔,从而控制通过将常数加入到所述脉冲宽度所产生的曲率。在轮廓的恒定加速区,所述曲率在频率的下限值更为明显。通过根据半对数行进(progression)来分配在许多频率的点之间的间隔,(或相当于,以前一频率的预定百分比提高每个递增频率的间隔),可以实现一种点的分配,借此更多点被放置在所述频率的下限值处,其中要求更加注意到曲率控制,因此与借助于在时间上平均分配的点相比,使用了较少的点而实现了遵循所述轮廓的期望水平.完全遵循此一半对数点分布可能导致在频率变化区的高频率部分有很少的点.对于包括加速度受控的变化(S曲线、或受控的"jerk")的频率轮廓,在高频率区可以包括充足的点以便描述——在所期望的精确度水平下——在大加速度区和小加速度区或无加速度(等速)区之间的所期望的受限的加速度变化.因此,可以约束(constrain)或限制在由半对数行进暗示的预计算出的频率点之间的递增间隔,以便以某一与表示期望用于S曲线(或受限加速度的情形)的曲率的预期范围一致的最大间隔提供各点.进一步地,对点之间的最小间隔可能有实际极限,这例如是由加载一组新值所需的处理器中断响应时间所要求的,和/或是当可实现的间隔大于当前脉冲宽度时所要求的.因此,由所述半对数分布计算出的间隔可能被检验并且适当地约束为不小于由实现系统约束所确定的某一最小量。通过计数出某一高频率主时钟的时钟事件的整数可以产生每一脉冲宽度,所述时钟事件的数量可以是脉冲宽度值的存储表示,并且通过给所述当前值增加一正数或负数可以产生脉冲宽度的变化.为了以所期望的精确度水平实现所期望的频率范围、加速度和/或脉冲计数,本发明的至少一个实施例可以以一个时钟事件的整数和一个时钟事件的子整数或分数部分表示脉冲宽度的变化.尽管不必以每一所实现的脉冲宽度的非整数个时钟事件来表示时钟事件的分数部分,但是该分数部分却可以累积在用于指定内插间隔的每一脉冲宽度变化的相加上.如果分数或子整数部分的累积超过一整数值,那么该整数值可以变成每一脉冲宽度的整数时钟时间的表示数值的一部分.在活动1500,可以调节任何一个或所有计算值以符合预定的运动约束和/或参数。为此应用,运动约束可能包括对下列各项的约束:频率、频率相对于时间的一阶导数和/或频率相对于时间的二阶导数.运动约束还可以包括对下列各项的约束:成角度的和/或线性的位置、速度、加速度、最大加速度率(加速度相对于时间的一阶导数)和/或加速度相对于时间的二阶导数.注意:使用预定的时间差分值(增量)可以近似那些表示为导数的约束.例如:最大加速度率可以被近似为最大容许加速度值除以选择的时间增量.作为另一个例子,可以遵循规定的最小运动时间.运动约束可以在运动控制轮廓的任何区域应用。例如,当最初开始变化步进马达轴的位置时,为了避免诸如滑动这样的潜在问题,最大加速度率可能被限于一预定数量,比如0.01弧度每秒3或0.01毫米每秒3.在活动1600,可以以所述计算值和/或调整值填充一个表.该表的每一行可以包含不同的中间频率,每一中间频率具有相应的脉冲宽度、脉冲宽度的变化、和/或脉冲计数。两个邻近行可以被认为包含一邻近的中间频率对.在活动1700,可以通过PLC的脉冲发生器读取所述表以输出一脉冲列。可以将表值提供给所述脉冲发生器的运动控制处理器,其可以包含一管道机制、一算术逻辑单元("ALU")和/或一控制状态机。对于指示数目的脉冲,所述ALU可以通过给每一连续脉冲宽度值添加一个所提供的正或负的脉冲宽度变化来提供插入的脉冲宽度中间值.所述ALU可以添加表示主时钟事件的一个整数和一个非整数或分数的值,在多脉冲宽度累积分数,直到这样的累积超过整数并且并入所述脉冲宽度为止.所述状态机以预定的间隔支配对读取所述表和输出所述脉冲列的控制,所述间隔可以被无限期地延迟、中断、和/或由命令和/或外部事件再启动而同时保持对脉冲宽度的控制。在活动1800,可以将所述脉冲列提供到一运动装置。脉冲列可以经由到所述脉冲发生器的直接连接,和/或经由诸如因特网连接这样的网络接线加以提供。所述脉冲列可以作为数字或模拟信号而加以提供。图2是本发明系统2000的典型实施例的方框图.系统2000可以包括一可编程序逻辑控制器("PLC")2100,所述PLC包括一经由连接器2130耦合到脉冲发生器2140的主处理器。在某些实施例中,脉冲发生器2140可以连接到一诸如系统背板这样的连接器2300和/或PLC2100的扩展输入/输出总线。脉冲发生器2140可以集成到PLC2100。也就是说,一旦安装,脉冲发生器2140就是PLC1100的一元件,而不是独立式的。脉冲发生器2140可以包括一具有诸如双端口RAM这样的存储器2160的运动处理器2150.运动处理器2150可以是可买到的通用微处理器。在另一个实施例中,运动处理器2150可以是专用集成电路(ASIC),所述ASIC被设计为以其硬件和/或固件实现根据本发明的实施例的方法的至少一部分。另一个实施例中,运动处理器2150可以是现场可编程门阵列(FPGA)。存储器2160可以包含实现为软件的指令,其可以采用本领域人所共知的众多形式中的任何形式。脉冲发生器2140同样可以包括诸如总线、连接器、电话线接口、无线网络接口、蜂窝网络接口、局域网接口、宽带电缆接口等等之类的通信接口2170.脉冲发生器2140可以连接到一与PLC2100相分开的运控制器2300。运动控制器2300可以连接到一运动驱动器和/或一致动器2400.脉冲发生器2140同样可以经由网络2500连接到一与PLC2100分离的运动控制器2600。网络2500可以是公共交换电话网(PSTN)、无线网络、蜂窝网络、局域网、因特网等等。运动控制器2600可以连接到一运动驱动器和/或一致动器2700.进而,脉冲发生器2140可以连接到一与PLC2100集成到一起的运动控制器2180。运动控制器2180可以连接到一运动驱动器和/或一致动器2200.信息装置2900同样可以连接到网络2500,该信息装置比如是传统的电话、电话装置、蜂窝式电话、移动终端、蓝牙装置、发报机、传呼机、传真机、计算机终端、个人电脑等等。信息装置2900可用于编程脉冲发生器2140、与脉冲发生器2140相互作用和/或监控脉冲发生器2140。图3是本发明信息装置3000的典型实施例的方框图.信息装置3000可以表示图2中的信息装置2900。信息装置3000可以包括众所周知的元件,比如一个或多个网络接口3100、一个或多个处理器3200、一条或多条包含指令3400的存储器3300和/或一个或多个输入/输出(I/O)装置3500等等。在一个实施例中,网络接口3100可以是电话、蜂窝电话、蜂窝式调制解调器、电话数据调制解调器、传真调制解调器、无线收发机、以太网卡、电缆调制解调器、数字用户线路接口、桥接器、网络集线器、路由器或其它的类似装置。每一处理器3200可以是可买到的通用微处理器。在另一个实施例中,该处理器可以是专用集成电路(ASIC)或现场可编程门阵列(FPGA),所述ASIC和FPGA被设计为以其硬件和/或固件至少实现根据本发明的实施例的方法的一部分。根据本发明的方法的一个或多个步骤,存储器3300可以耦合到一处理器3200并且可以存储适合于由处理器3200执行的指令3400。存储器3300可以是能够存储模拟或数字信息的任何装置,比如硬盘、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、高密度磁盘、数字多用盘(DVD)、磁带、软盘以及它们的任何组合。指令3400可以以软件实现,其可以采用本领域人所共知的众多形式中的任何形式。任何输入/输出(I/O)装置3500可以是音频和/或视频装置,例如包括监视器、显示器、键盘、袖珍键盘、触摸板、定向设备、麦克风、扬声器、摄像机、照相机、扫描仪和/或打印机,其包括一个输入输出装置可以附于或连接到的端口。本发明的某些典型实施例包括一位置或运动模块,它将PLC经由一步进驱动控制器连接到步进马达.此模块的某些典型实施例有时在此是指EM253运动模块。在此所述PLC的某些典型实施例有时指S7-200。在此所述步进马达的某些典型实施例有时指SimostepP50马达。在此所述步进驱动控制器的某些典型实施例有时指Simostep调频步进驱动器。EM253运动模块的特征所述EM253运动模块可以将它本身确定为一S7-200智能模块并且可以用于与例如本文中说明的单轴步进马达连接而提供本机输入与输出.经由所述扩展I/O总线,可以在所述模块和S7-200PLC之间执行通讯。可以提供适当的硬件以便支持由PLC或者所述模块启动的通讯。所述EM253运动模块可以为运动控制提供从每秒12脉冲数(pps)到每秒200k脉冲数(pps)的脉冲输出。如果脉冲频率的跨度不能作为单个范围而被提供,那么所述模块固件可以基于在模块配置中指定的最高速度而自动地选择工作范围。所述模块可以根据最大速度(MAX_SPEED)计算该范围的最小速度(MIN_SPEED).下面的范围可以得到支持:与EM253运动模块的编程接口所述S7-200编程软件可以提供三种功能以帮助模块配置、轮廓创建、和模块操作(控制和状态监视)。所述配置功能可以提示用户输入所需参数。接着所述轮廓创建功能可以提示用户对于每一移动轮廓的必要信息.随后用于每一移动轮廓的信息能被转换为具有移动标识号的步骤序列.一旦用户已经输入用于配置和所有移动轮廓的信息,那么用于每一移动的步骤序列可以被组合在本文中说明的单个表中.指向V存储器表的指针可以被存储在提供给所述模块的SDB的一段中.接着用于V存储器和SDB的数据块两者都可以被下载到PLC中.使用PCALL指令及其相应的子程序的库指令可以被作为标准函数而提供以用于控制所述模块的操作.用户能够通过启用所述库指令的执行状态来监控所述模块的操作.扩展I/O总线接口所述模块可以提供十针的带状电缆用于连接到在所述PLC上的所述扩展I/O总线接口或前述的I/O扩展模块.还可以提供十针带状电缆连接器(公型),另一个I/O扩展模块可以连接到所述连接器里。所述模块可以返回ID码0x21,其将所述模块标识为:(a)一智能模块(b)离散I/O(c)没有输入(d)具有8个离散输出所述模块可以提供一双端口RAM,通过所述双端口RAM可以实现与PLC的通讯.可以使用MPI或者更有效的块数据传输来访问用于所述模块的配置信息.使用S7-200CPU,所述模块的每一事务可以利用最多一个MPI请求和/或多个块数据传输(BDT)请求。作为加电初始化的一部分,所述模块可以全部清除所述双端口RAM存储体0到7中的数据。分配给所述智能模块的SM数据区的50字节被定义在表1(所述定义是将此模块作为I/O系统中的第一智能模块而给出)。为了CUR_POS和CUR_SPEED的值相互一致,模块H/W设计可以提供各种设施来作为一个原子操作捕获这两个值。表1当检测到数据状态的错误状态或变化时,所述模块可以通过更新与所述模块的位置相对应的SM地址而表明此情况。如果是第一模块,按要求它便会更新SMB200到SMB249以报告所述错误状态。如果是第二模块,它便会更新SMB250到SMB299;等等。所述模块可以为由模块启动的与PLC的通讯使用存储体15到127。并不要求所述模块使用存储体128到255。模块配置和轮廓所述配置和轮廓信息两者都可以被保存在PLC的V存储器中的一个表内。使用在PLC中SM地址内所提供指针值,EM253运动模块可以访问它的配置和轮廓信息。所述配置/轮廓表可以被分成三段。第一段是配置块,其可以包含用于设置准备执行运动命令的模块的信息。第二段是交互块,其可以支持用户程序对运动参数的直接设置。第三段可以包含从0到64的轮廓块,其中的每一个都可以描述一个可由所述模块执行的预定的移动操作。在所述模块执行一个定轮廓的运动之前,它可以执行所述计算以将提供在轮廓块中的一般速度和位置数据转换为实际执行所述移动所需的特定数据和动作。每当所述模块首次看到所述轮廓时,就可以执行这些计算,但是为了提高随后的轮廓执行的响应度,所述模块可以提供一个超高速缓冲存储器以为多达四个轮廓存储完整的执行数据.当用户命令执行一个给定的轮廓时,所述模块可以核对所述高速缓冲存储器以判断所述轮廓是否常驻。如果所述轮廓常驻在所述高速缓冲存储器中,则可以立即执行所述轮廓。如果所述轮廓不是常驻在所述高速缓冲存储器,则在执行所述轮廓前,所述模块可以将它从PLC的V存储器传输到高速缓冲存储器.可以将所述轮廓高速缓冲存储器实现为一个先进先出队列,并根据最后执行轮廓的时间排序。当用户命令执行一个轮廓时,不管它以前是否存在于所述高速缓冲存储器中,所述轮廓可以成为最新项。如果即将要执行的轮廓当前没有常驻在所述高速缓冲存储器中,那么在最后一次执行后具有最长时间的常驻轮廓被从所述高速缓冲存储器处移走以为最新的轮廓腾出空间.图4示出了高速缓冲存储器工作情况的例子.所述模块可以自动地管理所述超高速缓冲存储器而无需由用户所要求的任何干预.如果用户改变已经被执行的轮廓的轮廓信息,那么所述用户可以负责命令对模块的重新配置。一个模块配置命令可以导致所述模块读取配置信息并且清空所述高速缓冲存储器.如果用户未改变任何配置信息(仅仅改变轮廓信息),那么所述模块可以清空所述高速缓冲存储器。所述高速缓冲存储器不必用于由交互块控制的运动.当发出执行一个运动的命令时,所述模块可以读取包含在所述交互块之内的所述数据以获取所述移动的规范。下面的表定义了可位于S7-200PLC的V存储器内的配置/轮廓表。所述模块可以访问该信息,但是所述模块一般不能改变它.所述表的字节偏移量的列可以是从配置/轮廓区的指针所指向的地址的字节偏移量.每一项的类型字段可以规定所有双字值的数字格式。如果MEAS_SYS配置值设置为脉冲,可以使用一个双精度整数值(int)。如果MEAS_SYS配置值设置为工程单位,可以使用一个浮点值(fp)。表2给出的用于速度和位置值的范围分别用每秒脉冲和脉冲单位表示。当使用工程单位时,可以要求换算为每秒脉冲数或脉冲以确定所述值在允许的范围之内.在绝对模式中,所述位置范围是-231到231-1。然而,交互移动的每一位置变化或轮廓移动的每一步可以有1到230-1脉冲的范围,除了在起始步允许0的位置变化.就相对模式而言,交互移动的每一位置变化或轮廓移动的每一步可以有1到230-1脉冲的范围。表2如表3所示,所述配置/轮廓表的轮廓块段可以包含从0到64的移动轮廓。如果需要超过64个移动轮廓,用户可以通过改变保存在配置/轮廓表指针中的值而承担调换配置/轮廓表的任务。表3命令字节所述模块可以提供一个字节的离散输出,它可以被用作命令字节。所述命令字节可定义如下,其中R:0=闲置,1=执行规定在command_code中的命令,如下面表4所示.表4在每个R比特的上升沿可以生成一个中断,以表明已经接收到一个新的轮廓执行的命令。同样地,在每个R比特的下降沿可以生成一个中断,以表明转移到闲置状态。所述模块固件有能力禁止该中断。如果当命令有效时所述模块检测出转移到闲置(R比特改变为0状态),那么可以放弃正在进行中的操作,如果在进行一个运动,那么可以执行一个减速停止.一旦完成操作,那么所述模块在接收一个新命令前可以要求转移到闲置.如果放弃操作,那么所述模块在接收一个新命令前可以完成任何减速.当命令有效时,可以忽略command_code值的任何变化。所述运动模块对PLC模式变化或故障条件的响应可以由PLC所施加的影响来控制,这是借助根据现有PLC功能定义的离散输出。可能的模块反应描述如下:(a)所述PLC从STOP变化为RUN:所述模块的操作由用户程序控制.(b)所述PLC从RUN变化为STOP:在转移到STOP时所述用户可以选择所述离散输出将达到的状态,或是所述输出所保持的他们的最后状态.因此,存在下列可能性:1.当进行到STOP时,所述R位变成OFF-进行中的任何运动可以被减速到停止。2.当进行到STOP时,R位变成ON-如果正在进行一个运动,就完成它;如果没有进行运动,那么执行由ID位规定的所述轮廓。3.所述R位处于它的最后状态-可以完成进行中的任何运动.所述PLC检测到一个致命错误并且把所有的离散输出变成OFF-进行中的任何运动可以被减速到停止;只要所述XA_OD信号保持有效就可以防止进一步地移动。(d)如果失去与所述PLC的通信,那么所述运动模块可以使用一个看门狗定时器,所述看门狗定时器将所述输出变成OFF。如果所述输出看门狗定时器到时,那么进程中的任何运动可以被减速到停止。(e)如果所述运动模块在所述模块的H/W或固件中检测到一个致命错误,那么所述P0、P1、DIS和CLR输出可以设置为不活动(inactive)状态。命令0-63,执行在轮廓块0-63中规定的运动此命令的执行能导致所述模块执行所述运动操作,该操作规定在由命令的command_code部分表示的轮廓块的MODE字段中.用于交互块运动操作的规范一般不被高速缓冲存储,因此它们能在每次所述模块接收到此命令时被读取。在模式0(绝对位置)中,所述运动轮廓块能定义一到四步,其中每一步都包含描述所述移动段(segment)的位置(POS)和速度(SPEED)。所述POS规范可以表示绝对位置,其是基于指定为参考点的位置。当前位置和所述轮廓的第一步的位置之间的关系可以决定移动方向。在一个多步移动中,可以禁止反向行进,该反向行进可以导致报告一错误状态。在模式1(相对位置)中,所述运动轮廓块能定义一到四步,其中每一步都包含描述所述移动段的位置(POS)和速度(SPEED)。所述位置值(POS)的符号可以确定所述移动的方向。在一个多步移动中,可以禁止反向行进,该反向行进可以导致报告一错误状态.在单速、持续(continuous)速度模式(2和3)中,可以忽视位置(POS)规范,所述模块可以加速至规定在第一步的SPEED字段中的所述速度。模式2能被用于正旋转而模式3能被用于负旋转。在具有非活性的触发停止和RPS的单速、持续速度模式(6和7)中,所述模块可以加速至规定在第一步的SPEED字段中的所述速度。并且如果当所述RPS输入成为激活的时,在完成规定在第一步的POS字段中的距离后可以停止移动.如果所述POS=0,那么不考虑已行进的距离,所述移动就可以减速到停止.模式6能被用于正旋转而模式7能被用于负旋转.在模式8和9中,所述RPS输入的二进制值可以从如在轮廓块的开头两步中所规定的两个连续的速度值中选择一个。模式8能被用于正旋转而模式9能被用于负旋转。所述SPEED可以控制移动的速度。在此模式中可以忽略POS值。下面的表定义了所述输入和轮廓块内步骤之间的关系。命令118,激化DIS输出执行此命令可以导致激活DIS输出。命令119,使DIS输出无效.执行此命令可以导致使DIS输出无效。命令120、产生CLR输出脉冲执行此命令可以导致在CLR输出上发出一个50毫秒的脉冲。命令121,重新加载当前位置执行此命令可以导致所述模块读取在所述交互块的TARGET_POS字段找到的值并且将当前位置设置为该值。命令122,执行规定在所述交互块中的运动此命令的执行能导致所述模块执行规定在交互块的MOVE_CMD字段中的所述运动操作。用于交互块运动操作的规范一般不被高速缓冲存储,因此它们能在每次所述模块接收到此命令时被读取。在绝对和相对运动模式(0和1)中,基于提供于交互块的TARGET_SPEED和TARGET_POS字段中的目标速度和位置信息可以执行一个单步运动。在单速、持续速度模式(2和3)中,可以忽略位置规范并且所述模块可以加速至规定在交互块的TARGET_SPEED字段中的速度。在手动速度控制模式(4和5)中,可以忽略位置规范并且用户程序可以将速度变化值加载到交互块的TARGET_SPEED字段里。当速度值改变时,所述运动模块可以持续地监控此地址并恰当地响应。在具有非活性的触发停止和RPS的单速、持续速度模式(6和7)中,所述模块可以加速至规定在第一步的SPEED字段中的所述速度.并且如果当所述RPS输入成为激活的时,在完成规定在第一步的所述POS字段中的距离后可以停止移动.如果所述POS=0,那么不考虑已行进的距离,所述移动就可以减速到停止.模式6能被用于正旋转而模式7能被用于负旋转.命令123、俘获参考点偏移量执行此命令可以允许在与参考点位置不同的地址建立零位置。在发出此命令以前,可以确定所述参考点位置并且用户可以将机器缓慢移动到工作起始位置。在接收到此命令时,所述模块可以计算在工作起始位置(当前位置)和参考点位置之间的所述偏移量并且将计算出的偏移量写入到交互块的RP_OFFSET字段。接着,可以设置当前位置为0。这样就可以将所述工作起始位置作为零位置。如果所述步进马达迷失了它的位置(丧失动力,人工地复位所述步进马达,等等)可以发出所述寻找参考点位置(SeektoReferencePointPosition)命令以自动地重建零位置。命令124、慢进(jog)正旋转此命令可以允许用户人工地发出用于在正方向移动所述步进马达的脉冲。如果所述命令只保持激活状态不到0.5秒,那么在加速到JOG_SPEED的同时所述运动模块可以发出规定在JOG_INCREMENT中的脉冲数。如果所述命令保持激活的状态达0.5秒或更长时间,那么所述运动模块可以开始加速到规定的JOG_SPEED。一旦检测出转移到闲置时,所述模块可以减速到停止.命令125、慢进负旋转此命令可以允许用户人工地发出用于在负方向移动所述步进马达的脉冲。如果所述命令只保持激活状态不到0.5秒,那么在加速到JOG_SPEED的同时所述运动模块可以发出规定在JOG_INCREMENT中的脉冲数。如果所述命令保持激活的状态达0.5秒或更长时间,那么所述运动模块可以开始加速到规定的JOG_SPEED。一旦检测出转移到闲置时,所述模块可以减速到停止.命令126、寻找参考点位置通过使用规定的寻找方法,执行此命令可以启动一个参考点寻找操作。当已经定位所述参考点并且运动已经停止时,接着所述模块可以将从交互块的RP_OFFSET字段中读取的值加载到当前位置.命令127,重新加载配置执行此命令可以导致所述模块读取来自SM存储器中适当的地址的配置/轮廓表指针.接着所述模块可以读取由该配置/轮廓表的指针所规定的地址中的配置块.所述模块可以将刚刚获取的配置数据与现有的模块配置进行比较,并执行任何所要求的设置改变或重算.可以丢弃任何高速缓冲存储的轮廓.参考点的定义通称为参考点的所述地址可以有几个模块输入状况的预定序列中的一个。所述用户可以选择最匹配所述应用需要的参考点定义。一旦用户已经选择一个参考点定义并且相应地配置了模块,那么所述用户可以发出寻找参考点命令。应此命令要求,所述模块可以自动地寻找所述参考点位置,在所述参考点处停止并且激活一个周期50毫秒的CLR输出。用户可选择的可能的参考点定一列表如下(当包括所有的RP_SEEK_DIR和RP_APPR_DIR规范的组合时,选项的数目变为四倍):a)模式1:所述参考点可以位于在来自工作区侧的路径上的RPS输入成为激活状态的位置处。b)模式2:所述参考点可以在RPS输入的激活区域的中心。模式3:所述参考点可以位于RPS输入的激活区外。RP_Z_CNT可以确定在RPS输入成为非活性状态之后在ZP输入处有多少零脉冲计数以用于移动.模式4:所述参考点很可能位于RPS输入的激活区内.RP_Z_CNT可以确定在RPS输入成为激活的状态之后在ZP输入处有多少零脉冲计数以用于移动.图5-8分别是用于模式1-4的参考点查找图表.这些参考点查找图表举例说明参考点的定义和发现所述参考点的顺序。对于图5-8,定位所述工作区域以便要求从参考点到所述工作区域的移动是和RP接近方向相同的方向。通过以这种方法选择工作区域的地址,在参考点查找之后,对于第一个到工作区域的移动可以去除所述机械啮合(gearing)系统的所有反冲.图9包括两个参考点查找图表,上面一个表示对于可以消除反冲的接近方向的所述工作区域与RPS和LIM+开关的关系。下面的表配置工作区域以便不必要消除反冲。尽管不推荐,但是对于在模式1-4中间每一个可能的查找顺序,一个类似的工作区域配置是可能的.用户接口表5示出所述模块的输入、输出和灯的状态.表5图10是示出了本发明典型运动模块的灯的典型布局和标记的方框图。图11是示出用于本发明典型运动模块的各输入输出以及相关用户电源终端的典型电路。此图是一个略图并不表示所述接线板螺旋座的顺序.表6示出了用于输入输出的所述模块的的规范。所述开路漏极操作的输出高于5VDC可能增加射频辐射以至超过容许限度。对于某些系统或线路可能需要射频密封措施。依靠脉冲接收机和电缆,一个附加的外部上拉电阻可以提高脉冲信号品质及噪声抗干扰度。表6图12是用于所述运动模块的典型实施例的脉冲输出产生方框图.表7提供图12的运动模块方框图的各部分的功能描述。表7状态图用于所述运动模块的状态图可以包括下面的变量:run_q:合格的运行命令,命令寄存器内容的变化是在选择的安全时间识别的-通常在低于最高级图表的子状态中。XO=stop01=run11=abortmodes:来自pc(31:30)run_steps,last_step,run_cont(连续的),mode_stopxfr_pipeline:用于将刷新的管道值加载到工作寄存器的命令,由CPU或RPS边沿控制。run_cld:对脉冲发生器状态机的运行指令。XO=stop01=run11=abortpc_capture_time:一个计时选通(timingstrobe),其名字来自于其最初用于确定脉冲计数器内容何时稳定以用于读取/捕获.现在仅用于状态转移计时.状态:idle:无所作为,在xfr_pipeline命令退出到ini_tload.init_load:将初始的管道值移动到工作寄存器,等待运行命令以便转移。如果是停止命令或mode_stop就回到空闲去到run_a_step以启动步进的轮廓去到run_continuous用于稳定的速度操作run_a_step:起动脉冲机器,设置run_ack,周期性地检验脉冲计数和运行命令,出口在:如果运行命令=stop、退出到estop如果运行命令=abort,退出到abort当脉冲计数=0时,根据run_steps或last_step所选退出到pipe_load或finish。pipe_load:将更新的管道值加载到工作寄存器,检验新的pc[31:30]以确定下一个状态:回到run_a_step以继续一个步进的轮廓去到用于稳定的速度操作的run_continuous直接去到finish如果没有刷新pc,清除所有管道刷新标志并返回源状态run_continuous:起动脉冲机器,确认运行或放弃命令,周期性地检验运行命令和xfr_pipeline。在pipe_line去到pipe_load以用于新信息如果运行命令=stop,就退出到estopabort:指示脉冲机器固定脉冲宽度,去到run_continuousestop:使脉冲机器不能启动新脉冲,清除run_ack,在脉冲完成时退出到idlefinish:使脉冲机器不能启动新脉冲,清除run_ack,在脉冲完成时退出到idle并且运行命令=stop。如下,表8示出用于脉冲发生器模块的某些可能的操作顺序。表8对于某些运动模块,表9提供了可能的CPUASIC引脚分配和地址映射,如下:表9脉冲计算可以设想许多运动方案。当致动器行进距离很短并且不足以实现最高速度时,就出现了尤其困难的一个方案。对于此方案、至少可以识别三种情况。通常可以由F_start、F_end(FO)和t_a(加速时间)确定一个线性斜率,如此斜率a=(F_end-F_start)/t_a。同样,n_end=从F_tart到F_end的脉冲数。在S曲线的情况下:t_j=最大加速度率时间(jerktime),a_max=(F_end-F_start)/t_a,k=da/dt_max=a_max/t_j所述用户可以确定相应于所期望的运动距离的n_target(nt)。情况1:线性加速度,加速度=减速度图13是用于本发明典型实施例的频率-时间图,示出了此情况。由n_target<2*n_end识别所述问题情况.解决办法:选择刚刚小于nt/2的路标点n1,以及相关的F1。轮廓由从F_end到F1的加速度和从F1到F_end的减速度组成,并具有n_cs脉冲的中间恒定速度步,n_cs=nt-2*n1。情况2:线性加速度,加速度a1不等于减速度a2。图14是用于本发明典型实施例的频率-时间图,示出了此情况。对于减速度斜率:F_end仍是高频,n从低速数起,恰如它是加速度斜率一样。由n_target<n_end_1+n_end_2识别问题情况。ni=1/2a1t12+F0t1;n2=1/2a2t22+F0t2;t2=(a1/a2)t1nt=F0(t1+t2)+1/2a1t12+1/2a2t22,或a1/2(1+a1/a2)t12+(1+a1/a2)F0t1-nt=0a1/2t12+F0t1-nt/(1+a1/a2)=0t1=-F0/a1+sqrt{F02/a12+2nt/(a1(1+a1/a2))}对于很短距离移动,F0*t可能是总移动明显的一部分.对于可实现的运动,在所述根之下总有一个正数并且通过将正平方根添加到所述初始项总是可以发现可实现的根.使用上述表达式以计算t1。现在,发现n1=1/2a1t12+F0t1,选择在加速度斜率上刚刚小于n1的路标点,以及相关联的速度F1。按要求在所述减速度斜率上进行内插以在加速度和减速度斜率之间匹配速度,在所述减速斜率上发现n2。如前所述,得到连接两个斜率的恒定速度步的长度,n_cs=nt-n1-n2.总移动是n1步的加速,一个(短的)恒定速度步n_cs,n2步的减速。情况3:短的S曲线-距离n不足以使得S曲线到最大速度图15是用于本发明典型实施例的频率-时间图S曲线图,示出了此情况。对于所述短S曲线的情况:tj=最大加速度率时间、amax=(F_end-F_start)/t_a、k=da/dt_max=amax/tj在所述初始曲线区:a=ktF=F0+1/2kt2F随最大加速率时间tj而变:Fj=1/2ktj2对于所述S形曲线,记住(recall)有与最大加速度率时间,tj有关的Fj,并且在曲线的提高和减少加速度部分期间,在曲线区F的变化是对称的。如前所述,一个过程将解决该简单的梯形,识别在计数n1和时间t1达到的最高速度F1.接着,将最高频率减少到一个以相同的加速/减速时间t1可以实现的新Fmax。所述n_cs(恒速区)现在从所述简单的梯形情况下稍微扩展,因此:n_cs=nt-2*n(Fmax).如果t1>=2tj:存在一个线性区+2个完全的最大加速度率时间。获取Fmax=F0+2*Fj+(t1-2tj)*amax.把标准S曲线计算应用到Fmax以得到达到Fmax的n-v。接着所述恒速距离是n_cs=nt-2*n(fmax)如果t1<2tj:将有一个在t1/2处带有拐点的纯S曲线。ΔF在所述拐点周围:Finflection=1/2k(t1/2)2,并且Fmax=F0+2*Finflection=F0+k(t1/2)2.把所述标准S曲线应用到Fmax并且如前所述的得到n_cs。下述是一典型的伪码子程序列表,其用于为运动控制轮廓的一部分确定多个目标频率、脉冲宽度、差分脉冲宽度以及脉冲计数,如上所述,所述部分是根据一个确定的开始频率、结束频率、最大加速度和加速度的最大变化(也就是说,S形曲线情况)的单一的频率变化。所述目标频率是半对数分布的,其具有各种约束,以实现可实行的最少时间间隔和最大时间间隔,该最大时间间隔与表示S曲线的较高频率部分的所期望的精确度水平一致.移除所有的数据输入与输出以阐明所述算法。Rem:S-curveversionRem:GeneratetableoftargetpulsecountsandpulsewidthswithinterpolationfactorRem:divideuptherampintosteps(waypoints)ofequalpercentagechangesinFRem:foreachstep,findthetargetF,pulsewidth,pulsecount,andchangeinpulsewidthRem:perpulseneededtogettherewhilestayingontheslopeRem:Rem:limitchangeinaccelerationperJerkTimespec--da_dt=a_max/Jerk_timeRem:keepaworkingbufferofsteps,selectivelyplotpointsRem:sothatacompleteslopecanberecordedRem:usef_end/f_startratiotosettargetstepssizeRem:1.15^32~100;1.1^32~20;1.1^48~100Rem:e.g.,fora5%startspeed(1/20),32stepswillgive~10%dF/FRem:initialdF/F/step=exp(log(fmax/fmin)/max_steps)Rem:ifstep<1mssetsteptimeto1msRem:ifstep<1pulsesetsteptimeto1pulseRen:whenFappreciable,setdF/Ftoamoderatemid-rangevalueRem:thengototighterspacingofstepsinupperjerkrangeRem:m=clocks/pulse,n=pulsecountateachstep,dn=deltanperstepDimm(100)AsLongDimn(100),dnAsLongRem:astepisapre-calculatedwaypoint,controllingmultiplepulsesDimstepAsInteger,pulseAsLongRem:m_sumrecordsactualelapsedtimeinclocksbyaddingm’sforeachpulseRem:m_fix:shiftedfixedpointthataccumulatesfractionalchangesinpulsewidthDimm_sum(100),m_fixAsLongRem:fixedpointshiftisdecimalforeaseofde-bug,willbebinaryfactor(e.g.,1024)inuseDimfix_shiftAsLongfix_shift=1000Rem:elapsedtimetobeginningofstep,time/step,jerktimeDimt(100),dt,t_jAsDoubleRem:dmisshiftedfixedpointfractionalchangeinpulsewidth/pulseDimdm(100)AsLongRem:frequencyatstep,jerkfrequencyassociatedwithjerktime,derivativeofaDimf(100),f_j,da_dtAsDoubleDimi,j,k,clear_rowAsIntegerRem:miscindicesDimm_dt,m_barAsDoubleRem:inputparameters:accelerationtime,frequenciesDimt_a,F_start,F_end,F_clockAsDoubleRem:dF/FfactortocomputeequalpercentagestepsDimdF_factorAsDoubleDimmax_stepsAsIntegerDimplot_row,plot_time,plot_f,plot_m,plot_nAsIntegerRem:startingvaluesforsteppingRem:timeisatthebeginningofapulse&stept(0)=0Rem:misthecountforthepulsethatisexecutingRem:dmisappliedattheendofapulse...thatisRem:thewaypointpulseisexecutedinfullm(0)=Int(F_clock/F_start)f(0)=F_startRem:nisthecountofpulsescompleted,startsat0n(0)=0Rem:a_maxismid-pointslope,da_dtislimitsetbyjerktimea_max=(F_end-F_start)/t_ada_dt=a_max/t_jRem;f_jisfrequencychangeassociatedwithjerktimef_j=0.5*a_max*t_jRem:a_fisacceleration,functionoffrequencya_f=0Rem:accumulatorforallclocksinallpulsesm_sum(0)=0Rem:setexpectationforearlydFstepsalongrampf_ratio=F_end/F_startdF_factor=Exp(Log(f_ratio)/max_steps)f_ddF=F_end*0.5Rem:askabout--canprofile(speed,positionsettings)bechangedpermanentlyfromTD200?Rem:RoundOffErrorControlRem:oneachstep,seektore-establishcorrectSLOPEfromcurrentpositionRem:ratherthancloseadherencetostepsvs.timeRem:choosenextFforeachstepasdF/F*F(laststep)Rem:choosea(=dF/dt)forstepasvalueforchosenFasidealresultRem:fromapplyingda_dtRem:deltatforthisstepchosenasdF/aRem:dm(fixedpointinteger)determinedtoreachfromactualmRem:oflaststeptonewidealminidealtimedtRem:newmactualfiguredasn*dmaddedontopreviousactualRem:newtactualfiguredfromaccumulatedmRem:newfactualfiguredfrommactualslope_complete=Falsestep=0Rem:mainsteppingloop-1loopperwaypointDoUntilslope_completestep=step+1Rem:findthetargetfrequency,time,counts,forendofstepRem:clampdF_factorformid-range,thenreduceforupperjerkregionf(step)=f(step-1)*dF_factorIff(step)>=0.99*F_endThenf(step)=F_endslope_complete=TrueEndIfRem:currentvalueofa(f),subfora(t),determinedseparatelyforRem:lowerjerkrangeRem:midrangeRem:upperjerkrangeRem:firstifcoversF_end<2*f_j,handscontrolearlytolastelseifIff(step)<(f(0)+f_j)Andf(step)<(F_end/2)Thena_f=Sqr(2*(f(step)·f(0))*da_dt)ElseIff(step)<(F_end-f_j)Thena_f=a_maxElseIfNotslope_completeThena_f=Sqr(2*(F_end-f(step-1))*da_dt)dF_factor=1.01+a_f/a_max*0.05EndIfRem:findprovisionaltimedtfornextsteptothistargetFRem:ifneeded,adjuststeptime>1msand>1pulsetimeRem:ifsteptimeisincreasedtomeetmins,adjusttargetFanddF_factordt=(f(step)-f(step-1))/a_fIfdt<0.001Or(dt<(1/f(step-1)))Thendt=max(0.001,1/f(step-1))t(step)=t(step-1)+dtRem:sincetchanged,choosenextfforidealadherencetotf(step)=a_f*(t(step)-t(0))+f(0)RemadjuststepratiotoreachfinalFfromcurrentstepf_ratio=F_end/f(step)Ifstepmax_stepsThendF_factor=Exp(Log(f_ratio)/(max_steps-step))Elset(step)=t(step-1)+dtEndIfRem:findnextmforchosenfm_ideal=F_clock/f(step)Rem:findtotalclockstonextstepm_dt=dt*F_clockRem:averagem/pulsetonextstepm_bar=(m_ideal+m(step-1))/2Rem:pulsestonextstep(dn)istotalclocksdividedbyaveragemdn=Int(0.5+m_dt/m_bar)n(step)=n(step-1)+dnRem:withnewmanddn,finddm/pulseRem:changeradixofdmfixedpointtomaintainprecisionDodm(step-1)=Int(fix_shift*(m_ideal-m(step-1))/dn)If(Abs(dm(step-1))<100)Thenfix_shift=fix_shift*10LoopUnti1Abs(dm(step-1))>=100Cells(plot_row,plot_dm).Value=dm(step-1)Rem:computetruem(step)andt(step)byaddingupdm’sashardwarewillm_fix=CLng(m(step-1))*fix_shiftm_sum(step)=m_sum(step-1)plot_ref=m_fixRem:foreachpulse,adddmtom,accumulatetotalclocksForpulse=n(step-1)+1Ton(step)m_sum(step)=m_sum(step)+Int(m_fix/fix_shift)m_fix=m_fix+dm(step-1)NextpulseRem:endfor/nextloopofpulsesbetweensteps(way_points)Rem:replaceidealmandtforthisstepwithactualsm(step)=m_fix/fix_shiftf(step)=F_clock/m(step)t(step)=m_sum(step)/F_clockLoopRem:endloopingonsteps(way_points)untilslope_completeEndSub尽管已经参考本发明的具体的实施例描述了发明,但是应该明白,许多的变化、修改和附加的实施例还是可能的,并且相应地,所有这类的变化、修改以及实施例将被认为是在本发明的精神和范围之内.例如:运动模块的编程可以发生在因特网上。同样地:脉冲列的传输可以发生因特网上。如在本文中完全阐明的那样,引用在本文中具体确定和论述的参考部分以作参考。相应地,所述附图和说明书将被认为在本质上是说明性的,而不是限制的。权利要求1.一种方法,包括获取多个目标脉冲宽度;从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及将所述多个中间脉冲宽度输出到一个运动装置。2.一种装置,包括适合于产生多个脉冲的脉冲发生器,每一脉冲通过在预计算出的目标之间内插而产生,每一脉冲的宽度由增量和子增量的时钟计数相加确定。3.一种系统,包括用于获取多个目标脉冲宽度的装置;用于从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度的装置,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及用于将所述多个中间的脉冲宽度输出到一个运动装置的装置.4.一种系统,包括用于获取半对数分布的多个目标脉冲宽度的装置;用于从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度的装置,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及用于从可编程逻辑控制器的脉冲发生器输出与所述多个中间脉冲宽度相对应的多个脉冲的装置。全文摘要本发明的至少一个典型实施例包括一种方法,该方法包括获取多个目标脉冲宽度;从所述多个目标脉冲宽度计算在两个时间上邻近的目标脉冲宽度之间的多个中间脉冲宽度,所述中间脉冲宽度根据增量和子增量的时钟计数确定;以及将所述多个中间脉冲宽度输出到一个运动装置。本发明还包括相应的装置和系统。文档编号G05B19/40GK101369131SQ20081014971公开日2009年2月18日申请日期2002年12月17日优先权日2002年1月7日发明者A·D·麦克努特申请人:西门子能量及自动化公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1