优选实施例的详细描述
可编程逻辑控制器(PLC)的总的说明
图1上显示本发明的示例的可编程逻辑控制器(PLC)100。
该图说明PLC100的输入/输出(I/O)能力。用户通过操作运行/停止开关电位计和扩展I/O连接头104而控制PLC100。状态发光二极管(LED)106指示PLC100的状态。卡盘端口108被提供来接受用于扩展PLC100的功能(包括附加存储器)的卡盘。I/O LED110被提供来指示PLC100的输入/输出引脚的状态。通信端口112把PLC100耦合到外部元件,其中包括其它的PLC。通信端口可被使用来以主从关系把PLC100连接到其它的PLC。通信端口112也可被使用来连接计算机(诸如网络计算机或个人计算机)。PLC100也可以通过通信端口112经过调制解调器或等价的通信协议装置连接到互联网。用户写连接器114允许用户把PLC外部连接到诸如电机和其他***设备的设备。
在图上,PLC100被显示为靠近一个扩展I/O,它扩展PLC100的输入/输出能力。扩展模块以及PLC100包括DIN轨道安装插销116和面板安装定位位置118,用于把PLC100和扩展I/O102固定到适当的安装卡具。
将会看到,本发明的PLC100可包括PLC的多个装置和配置、几个扩展I/O模块、以及附件(其中包括存储器卡盘,时钟卡盘,电池卡盘电缆或I/O模拟器开关组件)。本发明将描述与这里描述的各个方面的特定部分有关的一部分可能的配置,专业人员通过了解这里描述的本发明将立即知道这些配置。
本发明的PLC因为它的小的物理尺寸被归类为微PLC。虽然PLC在物理尺寸是小的,但它包括与物理上大型的PLC同样强有力(如果并不比它更强有力的话)的许多特性。图1显示具有可能的尺寸的PLC和I/O模块的图。PLC100的设计可参照图39a和b来描述。
图2显示本发明的PLC的方框图200。所显示的方框图是对于带有用于供电的集成的AC电源202的PLC。中央处理器210是PLC200(100)的核心,它包括ASIC、ROM和RAM。数字输入接口212被提供来用于从用户引线114输入信号(图1)。数字输出接口204把PLC200耦合到用户引线114(图1)。通信接口206把PLC200经过RS-485或令牌总线通信耦合到外部装置。扩展I/O接口208把PLC200经过高速复用总线连接到扩展I/O接口。
运行时,AC电源202可以提供在AC线与输出(诸如24VDC和5VDC输出)之间的隔离边界。PLC也可以用24VDC电源供电。24VDC电源模型不提供24VDC与5VDC的隔离。数字输入接口212可任选地把用户引线与中央处理器(CPU)210相隔离,后者包括所有的逻辑电平信号。数字输出接口提供在用户引线与CPU之间类似的隔离边界。隔离边界以光隔离的形式或通过继电器被提供,其中继电器线圈与继电器触点相隔离。在图上没有显示在CPU与通信接口或扩展I/O接口之间有隔离,但可以提供这种隔离。所有的扩展I/O模块提供在用户引线与5VDC逻辑信号之间的光隔离边界。CPU210由ASIC组成,它包括微处理器、RAM和ROM。ROM包含用于PLC的操作***,以及取决于PLC型号,可以是EPROM或快闪EPROM。RAM被使用于操作***数据贮存器和便笺式高速暂存贮存器,以及用于存储已被编译为可执行的代码的用户程序。
在图3上显示了中央处理器(CPU)300H/W的方框图。这里没有详细地描述所显示的CPU的连接。这里感兴趣的特定的连接是I/O板上的输入电路302、I/O扩展总线304、和I/O板上的输出电路306连接。无论如何,图3充分概略清晰地显示了这些细节,专业人员从图上了解细节将不会发生问题。将会看到,图3只显示一个装置,以及本领域技术人员根据本技术说明将容易了解如何实施其它的、等同的装置。
CPU300和连接被安排为图4以示意图形式显示的ASIC。如图所示,ASIC包括微处理器406(令牌为“core(核心)”),地址译码单元402和映射逻辑。两个UART(通用异步接收机发射机)424、426被提供来实施形成串行端口的电子电路。UART把来自CPU的并行字节变换成串行字节,以便传输,以及反之亦然。然而,其它的通信安排也是可能的。具有数字输入调节电路418、高速计数器410、脉冲串输出电路420、电位计电路414、看门狗电路430和复位电路428。提供了总线接口404。扩展I/O单元1被令牌为422。测试接口被提供来测试PLC100。功率分配电路被显示为电路432。存储器被显示为内部RAM408。中断控制单元412处理用于CPU 406的中断。
PLC100提供供用户创建特定的应用控制程序之用的装置,当程序被PLC执行时,它指示机器的操作和/或在制造各种各样的产品时使用的处理过程。这样,PLC类似于所有其它的PLC,以及专业人员通过对PLC的这样的基本了解,将立即了解本发明的更通俗的方面。尽管PLC的使用和功能上的相似性,然而还有许多独特的特性和功能被综合到本发明的PLC100之中,它扩展和增强对于用户的功用,正如这里描述的。
数字输入点单元
现在将描述数字输入点单元418。在每个数字输入信号(10.0到l1.5)被变换到可兼容的信号(例如,+5V信号)以及与用户引线隔离以后,它被馈送到ASIC的数字输入点单元418。在图5上显示了用于输入点lB0[2:0]的方框图,它显示由数字输入点单元500(418,图4)提供的功能。
这个单元500在从用户应用项被连接到CPU的数字输入点上执行多个功能。这个单元对输入点进行滤波,以及提供对这些点的滤波的状态的访问。脉冲捕获功能在每个输入点上被提供,以便可任选地允许捕获短的持续时间的脉冲。边缘中断功能被提供用来在某些输入点上出现上升和下降沿过渡时产生中断。高速计数器被使用来计数对于CPU扫描速率而言发生得太快的事件。
如图5所示,数字输入滤波器5061-n提供可用软件配置的滤波器。也就是,PLC设置这样的滤波器参量,它们按照由PLC执行的软件控制滤波函数。在至少一种装置中,多达8个滤波器数值是可由软件配置的,例如从0.2ms到12.8ms。滤波器实施方案可以利用在每个输入点上的4比特上/下计数器。脉冲捕获电路5081-n允许捕获滤波的输入的上升或下降沿过渡,直至软件有机会读出数值为止。独立的使能/禁止脉冲捕获功能被提供用于每个输入点。当这个功能被使能时,边缘中断电路5101-n,在多到四个输入点上出现上升沿和/或下降沿过渡时产生中断。高速计数器514(在本例中支持六个高速计数器(HSC))每个包含一个32比特上/下计数器和一个32比特比较寄存器。32比特寄存器捕获计数值,以使得它可被软件读出。每个计数器和比较寄存器可由软件来装载。四个HSC可以处理两个相位的时钟信号。另两个HSC只可以支持单相位时钟信号。当出现计数器对比较寄存器的相等性时,每个HSC可以在方向改变条件时和在确立HSC的外部复位输入时产生中断。
数字输入滤波器电路
在以前的ASIC电路中输入滤波器的实施需要耗费太多的门。在本发明的ASIC中,需要提供可兼容的功能而不耗费这样多的门。以下是参照图6a到6d和7通过利用图6b的真值表对于在本ASIC中用相当少的逻辑实施输入滤波器的说明。
ASIC提供数字输入滤波以用于十四个数字输入点,如图6a和6b所示。在图6a上,数字输入滤波器电路600(506,图5)包括输入602、输入滤波器电路604、选择的延时606和输出608。由选择的延时606设置的滤波器延时是可用软件配置的七个不同的数值之一。滤波器延时通过ASIC内部的可设置寄存器而被选择。图7上的以下的表描述在写入到寄存器的数值与选择的相应的延时之间的可能的关系。当然,其它的关系也是可能的。
每个数字输入滤波器模仿由恒定电流源驱动的电容器的作用,该恒流源的输出电压由带有大量磁滞的比较器所检测。这个模拟电路的数字等价性被实施为四个比特的上/下计数器,它的计数方向由输入点的状态所控制。计数器进行时钟触发的频率由软件根据被写入到ASIC内部的寄存器的选择值来确定。1MHz主时钟被使用作为用于每个滤波器的时间基准,这样,它的运行是与***时钟频率无关的。延时值通过以下的公式被计算:
数字滤波器延时=12*(上/下计数器选择的输入时钟的周期)
图6b上的真值表规定数字等价电路的运行,其中由滤波器产生的结果是输出值608(FIBy.x)。本领域技术人员将立即看到,电路的细节可以通过使用熟知的布尔逻辑根据图6b的表来实施。示例性电路被显示于图6c。
对于每组的四个输入,复接器610输出8个时钟中的一个时钟,以便用来设置输入滤波器延时。由复接器610选择的时钟驱动4比特上/下计数器612(其中的每一个对应于每组中的四个输入的每一个)。实际的输入控制4比特计数器的方向(上/下)。当输入是接通(逻辑“1”)时,计数器向上计数。当输入是关断(逻辑“0”)时,计数器向下计数。计数值的向上计数序列是:
0,1,2,…,13,14,15,15,15,…,15
计数值的向下计数序列是:
15,14,13,…,2,1,0,0,0,…,0
正如计数序列表示的,当向上计数时或当向下计数使,计数器将不翻转。
滤波器延时614被设计来模拟驱动电容器的恒定电流源的运行,该恒流源的电压被带有大的滞后量的比较器所检测。在本例中,为了检测从断开到接通的输入过渡,计数器必须达到计数值12。一旦这个计数值达到,输出端就被接通以及它将保持,直至对于从接通到关断的输入过渡的门限值达到计数值3为止。图上所显示的、与非门逻辑620实施这些门限值。
这些门限值是对称的,因为从稳态的低的或高的输入条件需要12个向上计数值或12个向下计数值。图6b上的表列出在提供给复接器的每个频率下对于12个时钟的延时。当然,其它延时也是可能的。附加的各层(每层包括计数器616)、与非门逻辑622和延时器618可被提供给每个输入,它们以与前面描述的层相应的方式运行。
脉冲捕获电路
在数字输入滤波器电路后面是脉冲捕获电路(508,图5)。这个电路的目的是捕获在从高到低的、或从低到高的输入状态中的改变,以及保持它直至PLC操作***软件识别到状态的改变为止。PLC在STOP(停止)和RUN(运行)模式中以循环方式读出输入的状态。(在PLC中STOP和RUN模式之间的主要差别在于:在STOP模式下,用户的程序不被执行,而在RUN模式下,用户的程序被执行)图8显示PLC扫描周期(该周期通常称为PLC扫描周期或简单扫描)。如图8所示,在RUN模式下PLC扫描周期读出输入,每个周期一次。在STOP模式下,接着出现相同的扫描周期,但在STOP模式不执行用户的程序。
因为每个周期只读出输入一次,输入有可能改变状态,而PLC甚至并不知道该改变。这样的状态改变发生得太快以致于PLC不知道,这种状态改变被称为脉冲。为了防止PLC丢失在输入端处的短的脉冲,用户可以启动输入中断,它将暂停正常的程序执行,而同时PLC管理中断。这个方法非常有效,但它需要来自CPU的附加支持,以及使用相当大的执行时间来处理中断子程序。为此,只允许小量的输入中断。
另一个方法是在通向PLC的每个集成输入端处提供脉冲捕获电路。这个方法允许捕获和保持不经常的、但短的持续时间的脉冲(或者高电平或者低电平),直至PLC知道在扫描周期中适当的点上的改变为止。
脉冲捕获电路顶层方框图
现在更详细地进行说明,图9显示脉冲捕获电路900(508,图5)(其中输入902被耦合到脉冲捕获电路904)按照使能信号906来进行捕获,以及被输出908。这样,脉冲捕获电路能够捕获和保持数字输入点脉冲,它的持续时间大于选择的脉冲时间但小于扫描时间。图10显示由于在输入更新之间出现脉冲而丢失脉冲的问题,
CPU软件被设计成在每次CPU扫描读出所有的输入点的状态一次,以及这个运行被称为输入更新。如上所述,如果在接连的CPU扫描的输入更新之间出现一个脉冲,则这个脉冲会被丢失(见图10的例子)。脉冲捕获电路904捕获和保持这种类型的事件。在一个可能的安排中,具有14个脉冲捕获电路,每个输入点一个。
当脉冲捕获电路被启动时,输入的状态的改变(从低到高或从高到低)被捕获。该输入的进一步的状态改变被忽略,直至捕获值在下一次CPU扫描期间被软件读出为止。一旦捕获值被读出,电路就能够检测新的输入状态值。
脉冲捕获电路的运行可以通过图12所示的用于同步状态机的真值表被更精确地描述。该表上所使用的符号被规定如下:
PCE-脉冲捕获电路使能比特
I-由输入滤波器电路同步到***时钟的输入信号(FIBy.x)
CV-在输入的状态改变后和在输入更新后捕获的输入值(同步到***时钟)
F-状态改变标志(同步到***时钟)
RP-通过读出输入状态字节而产生的读数脉冲(每个输入状态字节一个)(以这样的方式同步到***时钟,即,对于一个时钟周期,它是工作的,以及在转移输入状态的时钟边缘处变为不工作的)
PS-当前的状态
NS-下一个状态
在运行时,参照图12a,当电路在输入中检测到状态改变时,输入的新的数值被捕获,以及状态改变标志被设置。在状态标志被设置时,存储的输入值被保持以及不能被更新。所以,在状态改变标志被设置时出现的任何输入改变被忽略。在存储的数值通过软件被读出后,状态改变标志被复位,以及输入状态改变的检测被重新使能。这个工作程序被称为脉冲捕获电路的重新触发。结果是,即使在扫描周期之间出现更新,输入脉冲也被捕获,如图11所示。例如,参阅CIB1.6,显示即使在扫描周期之间(即在扫描n与扫描n+1之间)出现脉冲,脉冲捕获电路输出908也捕获输入脉冲902。
例如,在这个方块中提供两个8比特寄存器,用于对于16个输入点的每个输入点的单独地使能和禁止脉冲捕获功能。这些使能寄存器在如图12b所示的表中被规定。提供输入状态寄存器,以便对有条件的输入点状态CIB0[7∶0]和CIB1[5∶0]实现CPU软件接入这些状态是从脉冲捕获电路输出的。这些被显示于图112c。输入状态寄存器的格式被显示于图12d。
脉冲捕获电路的电路元件,正如本领域技术人员将会看到的,将很容易从图12a所示的真值表上获知。还将看到,脉冲捕获电路可以具有多种满足真值表的配置。
按照以上说明运行的示例性脉冲捕获电路被显示于图12e和12f。***时钟脉冲驱动触发器1202、1208。输入信号被耦合到第一触发器1202,后者的Q输出端被耦合到与非门逻辑1206。信号PCE、RP和F被延时和被耦合到与非门逻辑1206中的相应的与非门,如图所示。另外,第二触发器1208的输出被反馈到与非门逻辑1206。与非门逻辑的输出被耦合到第二触发器1208,在此处被其锁存后,通过时钟触发控制而加到输出端。在图12f上,产生F信号,其中***时钟驱动触发器1210和1216。第一触发器锁存所述输入,以及第二触发器锁存与非门逻辑1214的输出。与非门如图所示,逻辑1214被安排成可对从第一触发器输出的信号(Q)、Q的倒相值、输入信号的捕获值和它的延时的值(由延时器1212延时)、由延时器1212延时的RP信号、和PCE信号实施前面所述的逻辑。
脉冲保护电路可单独地被使能和被禁止。如果脉冲捕获电路被禁止,则电路输入被传送到电路输出端。如果被使能,则上述的脉冲捕获电路是工作的。
数字输出点单元
这个数字输出单元(420,图4)允许直接软件控制每个输出点的状态。另外,脉冲输出能力允许在多达两个输出点上的脉冲串输出和脉冲宽度调制输出。
现在参照图13,ASIC提供两个输出点状态寄存器1302、1304,用于对十个数字输出点的状态进行软件控制。另外,两个脉冲输出块1306、1308(PLS)被实施成可提供以快于软件可完成的频率产生脉冲波形的能力。
在脉冲输出块1306、1308内,ASIC提供两个输出功能的选择,例如PWM(脉冲宽度调制)或PTO(脉冲串输出)。PWM功能为连续的脉冲输出提供可编程的周期时间和占空比。主要是打算用于步进电机应用,PTO功能提供用于特定的目的约50%占空比脉冲的输出。当然,本领域技术人员将会看到其它的应用。在PTO功能中的周期时间也是可编程的,以及可以是固定的或可以按用户特定的速率被自动调节增加或减小。
当PLS0运行(被使能)时,它通过MUX(复接器)1310控制输出点XQB0.0。或者,XQB0.0通过由软件写入到ASIC的输出点状态寄存器的数值而被控制。同样地,PLS1如果被使能,则通过MUX 1312控制XQB0.1的状态,以及如果PLS1没有被使能,则ASIC的输出点状态寄存器控制XQB0.1的状态。
脉冲输出块
所显示的ASIC支持两个脉冲输出块(PLS)。当然,可以配置任意数目的PLS。这些块允许CPU以快于CPU软件能够人工产生的频率去产生波形。来自脉冲输出块0(PLS0)的输出是输出点XQB0.0的一个源,以及来自脉冲输出块0(PLS0)的输出是输出点XQB0.1的一个源。
ASIC为PLC提供脉冲串输出(PTO)和脉冲宽度调制(PWM)功能。PTO是这样一种运行模式,其中该波形的周期(周期时间)和周期的数目(脉冲计数)由软件规定。波形的占空比约为50%。PWM是这样一种运行模式,其中周期(周期时间)和占空比(脉冲宽度)由软件规定,以及波形被连续地输出。
可以发现,这些功能的实施有一个基本问题:从一个PTO或PWM波形到另一个PTO或PWM波形不能平滑过渡。每次过渡需要脉冲输出块被软件所中止,然后重新启动,这将在最终的输出波形中引入不连续性。
因为如上所述的逐个波形的过渡的问题,本发明的ASIC为脉冲输出块提供硬件流水线机制,从而允许逐个波形的、平滑的硬件控制的过渡。另外,为了允许对于步进电机的良好的运行,把按特定的速率自动按斜坡方式改变周期时间的数值的能力附加到ASIC中。
PLS方框图和运行概况
图14a上所示的方框图显示了每个脉冲输出块1400的组构和部件。
PLS时间基准的产生-时间基准(例如,1ms或1μs)由复接器1402提供,后者选择1MHz主时基时钟或从主时基时钟得出的1kHz时钟。
波形周期控制-时基复接器驱动16比特向上计数器(它被称为周期时间计数器1420)。这个计数器在时基时钟的上升沿处被递增。由比较器1430对该计数器的输出与被存储在16比特周期时间预定值寄存器1422中的数值进行比较,以便控制输出波形的周期。当周期时间计数器的数值达到周期时间预定值寄存器的数值时,当前的周期可完成,以及产生一个CycleDone(周期完成)事件。
被存储在周期时间寄存器1420和周期时间预定值寄存器1422中的数值是未加正负号的数值。周期时间寄存器1420的正确的范围,例如,是0到65535。周期时间预定值寄存器的正确的范围是2到65535。为确定CycleDone所进行的比较是未加正负号的比较。
周期时间差值寄存器1406被使用来在PTO模式中保存带正负号的、二的补码的16比特数值,该值在每次CycleDone事件时被附加到被存储在周期时间预定值寄存器1422中的数值上。如果和值超过65535或小于2,则产生AdderError(加法器错误)事件。例如,
预定值=65530(FFFAH未带正负号的) 预定值=65530(FFFAH未带正负号的)
差值=-20(FFECH带正负号的) 差值=20(0014H带正负号的)
和值=65530+(-20)=65510 OK 和值=65530+(20)=65550
AdderError!!!
预定值=100(0064H未带正负号的) 预定值=100(0064H未带正负号)
差值=-20(FFECH带正负号的) 差值=-120(FF88H带正负号的)
和值=100+(-20)=80 OK 和值=100+(-120)=-20AdderError!!!
在PWM模式,周期时间差值寄存器被保持在数值0。
只有在PLS块被禁止时,软件才可以装载周期时间预定值寄存器1422和周期时间差值寄存器1406。在PTO模式时,这个寄存器的正确的范围是,例如,-32768到+32767。
波形占空比控制-周期时间计数器1420的输出也被使用于控制波形占空比。在这个计数值与脉冲宽度预定值(其来源由PLS运行模式确定)之间执行未带正负号的比较。PLS块输出信号PLSxOUT的状态由这个比较确定。当计数值小于脉冲宽度预定值时,PLSxOUT信号是高电平。当计数值达到或超过预定值时,则PLSxOUT信号被驱动为低电平。如果处在PWM模式,则脉冲宽度预定值从脉冲计数/宽度预定值寄存器1408的较低的1 6比特得出,或如果处在PTO模式,则脉冲宽度预定值是被存储在周期时间预定值寄存器1422中的数值的一半。
如果脉冲宽度预定值是0,则PLSxOUT对于整个周期是低电平。如果脉冲宽度预定值等于或大于预定周期时间,则PLSxOUT对于整个周期是高电平。
脉冲计数/宽度预定值寄存器1408由软件装载,但当运行在PWM模式时,只有较低的16比特是重要的。所以,软件只应当在PWM模式下写寄存器的最低位字。在这个模式下这个寄存器的正确的范围是0到65535。这个寄存器只有在PLS块被禁止时才可以被软件装载。
周期数量控制(仅仅在PTO模式)-32比特向上计数器(它被称为脉冲计数器1428)在每次Cycle Done(周期已完成)事件时被驱动,以便计数在PLSxOUT信号时产生的周期的数目。被存储在这个计数器中的数值由比较器1434与在32比特脉冲计数预定值寄存器1416中的数值进行比较,以便确定当前PTO运行的完成。当脉冲计数器1428的数值达到脉冲计数预定值时,产生PTOComplete(PTOC完成)事件。在PWM模式下,这个计数器不被使用。
在PTO模式下,脉冲计数/宽度预定值寄存器1416的全部32比特是重要的,以及由软件装载。在这个模式下这个寄存器的正确的范围是1到(232-1)。这个寄存器只有在PLS块被禁止时才可以被软件装载。
运行控制-控制寄存器包含用于允许软件使能或禁止PLS块的运行的比特。一旦软件使得PLS块能够运行,则输出点从QBxPS控制到PLS块控制的切换以及内部计数器的运行和比较都会与时基时钟的下一个上升沿同步。这样做是为了确保输出波形的初始周期具有正确的持续时间和脉冲宽度。这个寄存器在看门狗超时故障条件的情况下或由于输出禁止功能的直接软件控制时被保持在它的复位状态。
建立寄存器包含用于允许软件配置PLS块的运行的比特。其中包括有PLS时基选择和运行模式选择。中断使能寄存器给予软件对于PTOComplete和AdderError中断事件单独地使能和禁止中断产生的能力。状态寄存器被提供,以便允许软件得到有关PLS块的当前运行状态的信息。这个信息包括使能状态和流水线装载标志的状态(在下面描述)。
中断状态寄存器提供关于中断源或产生中断条件的源的信息。INTxPLS信号始发于PLS块,以及被中断控制单元所使用。当PLS中断产生事件中的一个或两个事件发生时(取决于中断使能寄存器中的中断使能比特的状态时),这个信号成为激活的。通过读出中断状态寄存器,将能清除在PLS块中所有工作的中断指示以及释放INTxPLS信号。另外,通过禁止中断使能寄存器中的中断产生源,将能清除来自该源的挂起的中断。如果在PLS块中没有其它中断正在挂起,则INTxPLS信号将被释放。
硬件流水线机制-流水线机制被提供来使得可以施加对波形特性的修正,而不产生波形失真。以下的流水线寄存器被用来保存用于周期时间、脉冲宽度等的新的数值:
·周期时间流水线寄存器被使用来存储新的周期时间值。
·周期时间差值流水线寄存器被使用来存储新的周期时间差值。
·脉冲计数/宽度流水线寄存器被使用来存储新的脉冲计数或脉冲宽度值(如果在PTO模式下,这个寄存器存储新的脉冲计数值以及使用该寄存器的全部32比特。如果在PWM模式下,这个寄存器存储新的脉冲宽度以及只使用寄存器的较低的16比特)。
当使用硬件流水线机制时,流水线装载标志作为在PLS块与软件之间的接口的一部分而被实施。无论何时软件把一个数值写入到脉冲计数/宽度流水线寄存器的最低位字节时,流水线装载标志就被设置。所以,为了使用硬件流水线机制,软件必须常常写一个数值到脉冲计数/宽度流水线寄存器中,以及它必须是要被写入的最后的流水线寄存器。
所有的流水线寄存器必须由软件装载,因为所有流水线寄存器的内容将被传送到运行的寄存器。在PWM模式下,软件不需要写入到周期时间差值流水线寄存器,因为在PLS块处在PWM模式时周期时间差值寄存器被保持在0。该流水线寄存器的任何内容实际上被丢弃。
一旦流水线寄存器被写入以及流水线装载标志被设置,流水线寄存器的内容在以下的条件下被传送到运行的寄存器:
·如果PLS块被使能,则如果在PTO模式下当出现PTOComplete事件后、或如果在PWM模式下当出现CycleDone事件后,将进行传送。
·如果PLS块被禁止,则当PLS块被软件使能时,将立即进行传送。
在传送到运行的寄存器后,流水线装载标志然后将自动地被清除。
一旦流水线装载标志在使能的PLS块被设置,就阻止软件写入到任何的流水线寄存器,直至它们的内容被传送到运行的寄存器为止(通过由ASIC对流水线装载标志进行的清除来表示)。如果PLS块被禁止,则流水线寄存器可以由软件写入,而不受限制,以及每次脉冲计数/宽度流水线寄存器的最低位字节被写入时,流水线装载标志将被设置。
自动禁止机制-在PTO模式下的使能的PLS块可在以下的条件被自动禁止:
·出现PTOComplete事件,以及没有新的波形建立被存储在流水线寄存器中(流水线装载标志是0)。
·出现AdderError事件。
当PLS块被自动禁止时,在控制寄存器中的主使能比特被ASIC清除。流水线装载标志不受影响。
人工禁止-无论何时在控制寄存器中的主使能比特被软件清除时,PLS块将立即进入PTO禁止状态或PWM禁止状态(在下面描述),这取决于块的当前的运行模式。软件禁止也将流水线装载标志和任何挂起的中断。
正确的寄存器范围-图14b中的表显示在PLS块中对于每个数字寄存器的正确的数值的范围。
PTO运行
这个模式通过使得PLS块能够运行而被选择。软件将控制周期时间、周期时间差值、和脉冲计数。占空比被固定在50%。所以,PLS块的以下的功能能够在这个模式下被使用:
·周期时间预定值和周期时间流水线寄存器;
·周期时间差值和周期时间差值流水线寄存器;
·脉冲计数/宽度预定值和脉冲计数/宽度流水线寄存器(被配置成保持32比特脉冲计数);
·32比特脉冲计数器;
·16比特周期时间计数器;
·进行比较以产生CycleDone事件;
·进行比较以产生PTOComplete事件;
·进行比较以控制PLSxOUT的状态;
·流水线装载标志;
·PTOComplete和AdderError中断。
在PTO模式下PLS块的主要状态转移被显示于图15的状态图1500。
当PLS块处在PTO禁止状态1502时:
·QBO.x输出由输出点状态寄存器控制,而不是由PLS块控制。
·周期时间计数器和脉冲计数器被保持在0。
·PLSxSTAT.EN状态比特表示是被禁止的。当PLS块处在PTO运行状态1504时,
·QBO.x输出由PLS块(通过PLSxOUT信号)控制。
·PLSxSTAT.EN状态比特表示是使能的。
·正常的PTO运行是使能的。
周期时间计数器在PLS时基的上升沿处被递增,以及PLS块的大多数功能从该计数器直接地或间接地被驱动。伪随机码的图16的段中列出在PLS时基的上升沿处出现的、在PTO模式下ASIC的动作(动作的次序是重要的,所以假设这些语句的顶部到底部的估计)。本领域技术人员将从伪随机码立即理解PTO模式下ASIC的运行。
PWM运行
这个模式通过使得PLS块能够运行而得到选择。软件将控制周期时间和脉冲宽度。所以,PLS块的以下的功能能够在这个模式下被使用:
·周期时间预定值和周期时间流水线寄存器;
·脉冲计数/宽度预定值和脉冲计数/宽度流水线寄存器(被配置成用于16比特脉冲宽度);
·16比特周期时间计数器;
·进行比较以产生CycleDone事件;
·进行比较以产生PTOComplete事件;
·进行比较以控制PLSxOUT的状态;
·流水线装载标志。
周期时间差值寄存器和周期时间差值流水线寄存器被保持在0,以及用于该块的脉冲计数和中断产生被禁止。INTxPLS信号在这个模式下应当总是被驱动到不工作状态。
在PWM模式下PLS块的主要状态转移被显示于图17所示的状态图。
当PLS块处在PWM禁止状态1702时:
·QBO.x输出由输出点状态寄存器控制,而不是由PLS块控制。
·周期时间计数器被保持在0。
·PLSxSTAT.EN状态比特表示被禁止。
当PLS块处在PWM运行状态1704时,
·QBO.x输出由PLS块(通过PLSxOUT信号)控制。
·PLSxSTAT.EN状态比特表示被使能。
·正常的PTO运行被使能。
周期时间计数器在PLS时基的上升沿处被递增,以及PLS块的大多数功能从该计数器直接地或间接地被驱动。伪随机码的图18的段列出在PLS时基的上升沿处出现的、在PWM模式下ASIC的动作(动作的次序是重要的,所以假设这些语句的顶部到底部的估计)。本领域技术人员将从伪随机码立即理解PWM模式下ASIC的运行。
脉冲串输出概况指令(PTOP)
由ASIC提供的脉冲输出功能主要打算用于控制步进电机。PLC提供一个用户指令,用于产生用于加速/减速和运行步进电机的概况。这个指令被显示于图19。
扩展I/O单元
扩展总线概念的总貌
物理地,扩展子***包括所含有的I/O模块,它们被独立地安装,而不具有公共的后板。十导线带状电缆被使用来连接到上述的模块或CPU。这个电缆载送用于模块运行所需要的5V电源和逻辑信号。见图20。在I/O扩展总线中的信号在图21上描述。
虽然所有的信号通过模块被物理地进行菊花-链接,但只有EMA信号在每个模块中被逻辑地断开和重新产生。所有其它的信号形成延伸I/O模块链的长度的单个电总线。EMA信号的数值在被传送到下一个模块之前被递增。对扩展I/O总线的每次接入包括模块地址域,以用于选择要被接入的模块。只有其地址能与消息的模块地址域一致的模块将响应该接入。这种方案允许要被级联的I/O模块类型的任意混合,而不需要地址开关和固定的后板。多达8单元的逻辑扩展可以具有三条EMA信号线,然而现在只允许有7个模块。当然,其它的扩展单元也是可能的。
图22显示在本发明中的逻辑结构2200和I/O模块2202的信号流。I/O扩展逻辑结构的细节不在这里描述。图23上的表给出对于在扩展I/O模块的电接口中使用的每个部件的数值。图24上的表描述I/O总线信号的电特性。对于扩展I/O的接入由CPU中的ASIC控制,以及将从图25和26的图上看到,该图可显示在扩展I/O总线上的读和写周期序列。
ASIC(主状态机和事务处理定时)
以下描述总线事务处理序列。EM总线定时被安排成在需要的地方提供用于传播延时的时间和信号扭曲。主机在EMC的下降沿时钟处提供信号,在下一个上升沿处被从属机锁存。一半的EMC时钟时间被允许包括供给从属机的数据的建立,以及考虑通过ASIC缓存器、外部电缆、和可能的中继站缓存器的EMC对EMD的最坏情形的扭曲。从属机在EMC上升沿处给出数据,以及主机在下一个上升时钟沿处锁存数据。这允许将一个完整的时钟时间用于时钟到从属机的传播、从属时钟到输出延时、和返回传播时间。
在总线事务处理期间,寄存器域首先在总线最高位处被给出。2比特奇偶校验域的P1比特首先被给出,然后是PO比特。相对于EMC的上升沿和下降沿对主状态机的动作进行了描述,而从属机假定除了EMC以外没有其它时基,以及可以完全在EMC上升沿处运行。EMC在不使用时被驱动到低电平,以使得时钟输入虚假数据到从属机的可能性最小。
总线事务处理序列
以下的段落描述在写入数据到从属机和从从属机读出数据时的EM总线事务处理序列的各个部件。以下的动作假定是从主机(EM单元)中产生的,除非它们被特别规定由从属机执行。以下的正文和以后的时钟图将有助于了解事务处理序列。
序列启动-EM总线事务由写入到EMOSTART或EM1START寄存器中的软件触发。EM状态寄存器的进行比特(in progress bit)被立即设置。在进行比特被设置以便避免打扰在进行过程中的总线序列的同时,进一步写入到EM寄存器将被ASIC禁止。软件的责任是确保新的总线事务处理只在EM单元是空闲时(进行比特是低电平)才被触发。如果该序列是通过写入到EMOSTART寄存器而被触发的,则总线事务处理从EMCO信号被时钟触发。如果序列是通过写入到EM1START寄存器而被触发的,则总线事务处理从EMC1信号被时钟触发。EM总线序列的实际启动(被称为EMCST)发生在事务处理触发后EMC时基的第一个下降沿处。
模块/寄存器地址-在EMCST时间点,主机驱动XA_OD信号以及启动EMC和EMD信号。对EMC上升沿处的工作的XA_OD的检测被从属机使用来识别寻址运行的开始。然后主机在EMC信号上产生10个时钟,在EMD上顺序地对EMADDR寄存器的内容以及2个奇偶校验比特、P1和PO进行时钟触发。在EMD上呈现的EMADDR的第一比特在EMCST时间点是正确的。XA_OD信号在EMC↓1时被再次驱动到高电平。主机在每个EMC↓时呈现EMD上的新的比特。EMD信号在EMC↓10时被释放。从属机在EMC↑1∶10时(在EMC1∶10的上升沿处)锁存正确的信息。
读数据序列-对于读事务处理,EMDDIR信号在EMC↓10时被驱动到低的状态。在对模块/寄存器地址比特进行时钟触发后,主机在EMC信号上产生另外13个时钟(11∶23)。EMC时钟11∶12是空闲时钟,以便允许从属时间使得适当的寄存器数据和奇偶校验可被提供用于传送。已选择的从属机在EMC↑13∶22时在EMD信号上提供8个数据和2个奇偶校验比特,以及在EMC↑23时返回到空闲状态(从属机在这时释放EMD信号)。主机在EMC↑14∶23时锁存信息。从属机首先提供数据值的最高位,然后是P1奇偶校验比特,最后是P0奇偶校验比特。数据值被存储在寄存器EMDATA中。主机确定被存储在EMDATA中的数值的奇偶校验位,以及把这个所计算出的奇偶校验位与从从属机接收的奇偶校验比特进行比较。如果计算的奇偶校验位与接收的奇偶校验位不一致,则EM状态寄存器中的错误比特被设置。否则,错误比特被清除。EMDDIR信号在EMC↓23时被释放(被驱动到高电平)。
写入数据序列-对于写事务处理,在时钟输入模块/寄存器地址比特后,主机在EMC上提供另外14个时钟(11∶24)。主机在EMD上提供8个数据比特(来自EMDATA寄存器),接着是2个奇偶校验比特(首先是P1,然后是P0)。主机在EMC↓10∶19给出数据和奇偶校验比特,然后在EMC↓20释放EMD信号和驱动EMDDIR信号到低的状态。从属机在EMC↑11∶20时锁存正确的信息。从属机通过先在EMC↑22∶23时从EMD时钟输入0然后是1,从而响应完整的写周期和正确的奇偶校验。主机在EMC↑23∶24时锁存这个应答响应。从属机在EMC↑24时返回到空闲状态以及释放EMD。如果由主机读出的2比特应答值不是01,则EM状态寄存器中的错误比特被设置。否则应答值是正确的,以及错误比特被清除。EMDDIR信号在EMC↓24时被释放(被驱动到高电平)。
序列结束-总线序列的结束被规定为跟随在EMC↓23(读事务)或在EMC↓24(写事务)后面的EMC时基的第一上升沿处发生。在EMCND时,EM状态寄存器的进行比特被清除。当进行比特被清除时,错误比特必须是正确的。总线信号应当是处在它们的空闲状态。
奇偶校验比特
两个奇偶校验比特被使用来表示单个8比特值的奇偶校验。2个奇偶校验比特中的每个比特代表对5比特的数值的奇数的奇偶校验,正如图27的表所显示的。对奇数个比特的奇数奇偶校验确保全1或全0的域具有相反极性的奇偶校验比特。
软件接口考虑
典型的EM总线事务处理将包括写EMADDR寄存器、写数据字节到EMDATA寄存器(如果是写事务处理)、然后写入到EMOSTART或EM1START寄存器以便启动该序列的软件。软件将重复地读出EM状态寄存器的进行比特,以便确定事务何时完成。EM总线事务完成时,进行比特将被清除,以及错误比特将被适当地设置。如果读事务被执行,数据值现在可以从EMDATA寄存器读出。软件可以确保:在事务处理正在进行时,只有EMSTAT寄存器被读出,以及EM单元可被设计来由软件在任何时间正确地处理该寄存器的读数接入。
如果在EM总线事务处理正在进行时发生中断事件以及中断子程序需要使用EM单元,则该子程序可以采样该进行比特的状态以及在接入任何其它EM单元寄存器之前等待事务处理完成。这样的中断子程序将具有义务去保存和恢复EMADDR和EMDATA寄存器的内容以及错误比特的状态。这是所需要的,以使得一旦控制返回到该子程序时,那些寄存器将包含由中断子程序启动的总线事务处理的正确数值。
使用XA_OD信号的输出禁止
XA_OD信号被使用于识别地址周期的开始和输出禁止条件的发生(它由CPU***故障所造成)。在约1MHz的最慢的预期总线速率下,在地址用法中XA_OD的最长的正常持续时间是约1μs。用于XA_OD作为输出禁止的从属识别的、约100倍的这个数值的门限值(即100μs)考虑从属机中的简单的二极管/R/C滤波器,以及给出适当的响应的输出禁止功能。XA_OD外部信号将是来自EM总线的地址周期识别信号与起源于看门狗定时器单元的输出OK信号的逻辑OR(或)。
用户程序存储器
用户程序存储器可被使用来存储用户程序。主程序的结尾可以通过使用MEND(主程序结尾)指令而被终结。除MEND指令以外的、用户程序存储器的其余部分可被保留用于子程序和中断子程序。
串行通信
PLC提供串行通信端口,正如参照图1描述的。通信端口使用RS485信号电平,以及能够运行在9.5KB、19.2KB或187.5KB,而同时支持***通信协议(PPI或DP/T)。这个端口用作为到PLC的编程器接口。此外,端口在运行模式下是可提供的,作为在用户程序的完全控制下的通用通信端口(被称为自由端口模式)。在自由端口模式下,通信端口能够运行在从300波特到38.4KB的波特率。到RS485端口的物理连接由9引脚D连接器提供。
特别存储器(SM)比特(见6.2节,SM2,SM3,SM30和SM130)被提供作为通信端口的自由端口来使用。用于控制通信端口的使用的特别存储器的缺省状态使得能够使用通信端口作为编程器接口。如果用户程序接通用于控制通信端口使用的特别存储器比特,则将使得用户程序能够通过通信端口发送和接收消息。在这个运行模式下,用户可以用想要的、任何基于字符的协议(7或8比特/字符,奇数的、偶数的、或没有奇偶校验,以及波特率)来配置端口。端口将运行在半双工模式,以及用户程序可以在轮询或中断模式时管理端口。在SM用户区域提供接收字符缓存器,并且还提供通信状态寄存器以及配置寄存器,后者包括控制端口的运行模式的比特。除了发送的所有的通信功能可以通过SM存储器中的特别寄存器来执行。发送只能通过使用特别的写端口消息指令来完成。用户程序绝不会直接接入到通信控制器或机器的中断结构。
PPI主模式和从属模式网络读出和写入
PLC可以用作为PPI从属设备。在PPI从属模式,PLC用作为对于通信消息的应答器。
在本发明的一种安排中,当CPU被设置在运行模式时,PLC可以用作为PPI主设备以及PPI从属设备。用户可以在被存储在用户程序存储器中的用户程序的控制下选择PPI主模式。在这种安排中,熟知的令牌环通信协议可被实施来在主设备与从属设备之间进行通信。在PPI主模式下,PLC能够保持令牌以及发起PPI请求,由此使得用户能够通过网络读和写指令去存取在其它CPU中的数据。当CPU没有保持令牌时,它作为从属设备应答所有的请求。用于PPI通信的通信缓存器的尺寸在图28所示的表中被规定。
在PLC用作为PPI主设备的同时,它按照熟知的通信标准(诸如由EN 50170欧洲标准给出的PROFIBUS规定)维护网络。PLC将使用以下的算法,以便计算目标令牌旋转时间。
TTTR=(8+HSA)(256)(1/BR)其中
TTTR-是目标令牌旋转时间
HAS-是最高的站地址
BR-是以每秒的比特计的波特率
如果在接收令牌以后,目标令牌旋转定时器满时,则PLC立即把令牌传送到下一个令牌保持器,而不必发送在接收令牌以前被询问的任何的消息。
在PPI主模式时提供的自由端口链路
本发明提供通信端口的自由端口(此后称为“自由端口”)运行,它允许用户人工地或通过用户程序的运行来控制端口。自由端口运行的程序过程显示于图30a。
在本发明中,用户通过按照上述的中断结构迫使PLC中断(步骤S3002)而实施自由端口(步骤S3000)使用。在本例中,用户发起自由端口通信,同时通过在主模式下附加上一个把通信端口的控制传送到用户程序的中断事件从而运行PLC(步骤S3004)。这是在***协议保持令牌的同时执行的(步骤S3006)。
作为应答,PLC把控制传送到用户程序(步骤S3008)。PLC按照图30b所示的SM比特规定SMB30和SMB130来控制UART设置(步骤S3010)。在该事例中,由PLC把SMB30和SMB130规定的模式比特设置给PPI模式(步骤S3012)。
一旦控制从***传送到用户的中断子程序,用户程序就控制使用自由端口的消息发送和接收(步骤S3014)。一旦用户程序完成它的任务,用户程序就通过执行一个用于终结自由端口运行的特定指令而把控制返还到***(步骤S3016)。被使用来终结自由端口运行的指令在图29所示的表中被描述。***然后通过把令牌返还到下一个站而继续正常的运行(步骤S3018)。***负责维护网络的所有方面,就好像在PLC的令牌保持时间期间从来没有将一个时间片给予用户程序那样(步骤S3020)。
内建的自由端口协议
为了给使用PPI协议的通信提供更高的性能,为PPI协议提供了内建的协议选择任选方案。当PLC被设置在运行模式和自由端口PPI协议由被写入到SM30或SM130的数值所选择时,通信端口将按照被写入到SM30或SM130的数值来配置。当退出自由端口模式时,PLC将以选择的波特率回复到缺省的PPI协议。用于选择自由端口PPI协议的代码将是如由SM30(端口0)和由SM130(端口1)所规定的那样。图30b上的表给出SM30和SM130的规定。
自由端口接收消息中断
为了简化用于自由端口通信的编程过程,PLC支持接收消息指令,该指令可以结合接收消息事件中断一起被使用。用户规定对于规定消息的开始和结尾所需要的条件。PLC支持以下的消息条件技术规范:
端口0:
SMB86-消息状态字节:表示终结条件
SMB87-消息控制字节:使能所选择的消息接收准则
SMB88-开始字符:唯一地表示新消息开始的字符
SMB89-结尾字符:唯一地表示消息结束的字符
SMB90-空闲行:一个其后所接收的第一字符将开始新的消息的时间间隔
SMB92-字符/消息间的超时:在字符之间所允许的、或对于要被接收的消息的最大时间。用法由消息控制字节来确定。
SMB94-字符计数:接收消息的最大长度
端口1:
SMB86-消息状态字节:表示终结条件
SMB87-消息控制字节:使能所选择的消息接收准则
SMB88-开始字符:唯一地表示新的消息的开始的字符
SMB89-结尾字符:唯一地表示消息的结束的字符
SMB90-空闲行:一个其后所接收的第一字符将开始新的消息的时间间隔
SMB92-字符/消息间的超时:在字符之间允许的、或对于要被接收的消息的最大时间。用法由消息控制字节来确定。
SMB94-字符计数:接收消息的最大长度
接收缓存器的第一字节被用作为字符计数,它可以表示有多少字符已被接收消息功能接收。每个执行特别的存储器的规定在图30c和30d所示的表中给出。
DP_S7通信
PLC可以支持DP/T协议,该协议提供用于主-从属通信的MPI输送。PPI消息是与DP/T消息完全兼容的,所以不需要对协议的特别选择。PLC可以接受PPI请求或DP/T请求,以及因而进行响应。对于在PPI端口上的DP/T通信的支持可以包括遵从HD4的被支持的所有波特率的来自PLC的传输。
当PPI是无连接的协议时,DP/T是面向连接的协议。图30d的表规定DP、T连接的数目和用于由在每个端口上的每个PLC所支持的每个连接的缓存器的尺寸。这个表不包括用于可以在每个端口被支持的缺省SAP的缓存器。
调制解调器通信
本发明的CPU支持通过标准10比特全双工调制解调器的通信。这是相当重要的,因为得到广泛使用的较新的11比特调制解调器常常要贵很多倍。已经发现,在工业技术典型地落后于计算机硬件当前技术水平的工业基础下这是特别正确的。另一方面,老的10比特调制解调器被认为是价格低廉的。本发明利用了这样的发现,即,在工业界有过剩的10比特调制解调器,所以,提供一种独特的10比特协议,允许本发明的PLC(或在这方面的任何PLC或处理器)连接到这样装备的工厂基本产品。当然,本发明的10比特协议对于在利用10比特调制解调器情况下的其它装置也是有价值的和可应用的。
本发明的10比特协议的另一个优点在于,10比特协议与更高阶的比特协议是可兼容的。因此,10比特协议可以被11比特调制解调器或更高的调制解调器接受。
本发明的10比特协议与传统的知识相反。当然,从直觉上看,它的运行与利用比最新调制解调器技术能够支持更少的比特不同。它甚至与利用10比特调制解调器协议的传统的知识不同,因为本发明牺牲了奇偶校验,即所有远端通信为保数据的完整性所依赖的关键措施。事实上,当考虑到PLC负责控制机器(例如笨重的设备或精确的机器人)时,可以看到,公司可能会破产,或更坏地,会有人由于PLC的不适当的指令而受到伤害。普通专业人员将强烈反对10比特协议。
现在参照图31描述本发明的10比特协议。在一种安排中,用于调制解调器通信的协议是标准PPI协议的修正方案。当然,其它的比特分配方案也是可能的。这里规定的PPM即点对点调制解调器协议将分配以下的比特:
1开始比特
8数据比特
1停止比特
0奇偶校验比特
在PPM协议中,来自主设备的每个请求接收回答,而无需中间的应答或轮询(步骤S3100)。建议在PPM协议中只使用针对PPI协议而规定的SD2消息类型(步骤S3104)。为了满足这个要求,主设备可以规定在建立联系请求中使用主/从属协议(DP/T)(步骤S3106)。在每个请求后,主机可以允许提供15秒以用于从属设备在结束事务之前作回答(步骤S3108)。在接收请求后,从属设备将允许在发出回答之前有最小的返回时间(例如20毫秒)(步骤S3110)。
每个请求/回答消息优选地是SD2 PPI消息(步骤S3112),16比特的CRC检验码作为消息的最后两个字节被附加在其上(步骤S31140)。CRC使用工业标准多项式(X16+X12+X5+1),它被称为CRC-CCITT多项式(步骤S3116)。CRC在包括开始和停止比特的整个SD2帧上被计算(步骤S3118)。CRC产生器可以被预先设置到所有的用于发送和接收的装置(步骤S3120)。这样,正确消息的接收产生一个Ox1DOF的图案(步骤S3122)。
通过把通信端口连接器的第9引脚接地从而将PPM协议告知PLC。PLC在这个引脚上提供内部的上拉电阻,以便选择标准PROFIBUS协议。
将会看到,本发明的10比特协议不必限于10比特,以及可以扩展到任意数目的比特,包括{1,2,3…9,10,11…∞}。事实上,本发明可更好地被看作为一个不包括奇偶校验比特的n比特协议。n比特协议可以通过使用以上的说明被实施,以便确保数据完整性。
隐匿部分用户程序
本发明的PLC提供专用软件或代码的保护。同样的特性允许PLC向用户隐匿那些不打算给用户观看的部分代码,诸如由PLC产生的用于执行PLC的子程序操作的代码。将会看到,这个功能鼓励第三方软件开发者提供软件,要不然他将会退避,因为否则代码将会提供给用户。
为此,PLC支持HIDE(隐匿)指令,它允许用户(或编程装置)识别和隐匿部分的用户程序。PLC程序被传送和被存储在用户程序存储器中,而隐匿的代码段则被加密。PLC在编译时间解密隐匿的代码段,以便产生可执行的程序。一旦完成编译,隐匿的代码段被重新加密。
提供用户供给的密码能力,它被用来加密要被隐匿的部分程序。这样,只有合法的个人能够观看被隐匿的程序段。
如图32所示,本发明的隐匿指令标记加密部分的开始点。在本发明中,标志P被设置来表示存在加密的代码。现在参照图32b,描述隐匿功能的运行。在步骤S3200,用户调用用于专用代码的特定片段的隐匿功能。作为应答,PLC使得P标志被设置(步骤S3202)。PLC用可以由用户提供的密码来加密代码(步骤S3204)以及在代码的开始点和结尾处把隐匿标签***到用户存储器中,以便标记出加密的部分(步骤S3206)。在用户程序编译后(步骤S3208),PLC使得加密的部分被解密(步骤S3210),以及用户程序被正常执行(步骤S3212)。一旦完成程序的执行,PLC就重新加密专用代码(步骤S3214)。
用户密码
通过使用允许用户配置接入限制的密码,可以提供对接入到PLC功能和存储器的限制。如果没有密码,PLC可以提供无限制的接入。当PLC受密码保护时,PLC可以禁止按照在设置密码时提供的配置而进行限制的所有的运行。PLC可以允许一个站对通信链路合法化,以使得该站的用户可以具有无限制的接入。知道密码的用户可以通过输入密码和编辑限制类别而在任何时间重新配置限制。不知道密码的用户必定逃避不了由知道密码的用户指派的限制。
在用户忘记密码的事件中,主密码可被使用来达到接入到PLC。为了主密码能够起作用,PLC模式开关可以处在STOP或TERM位置。当主密码被使用时,PLC软件采取以下的动作:
1.PLC将转移到STOP模式;
2.用户程序(OB1)被清除(被删除);
3.用户数据存储器(DB1)被清除(被删除);
4.如果SDBO存在,除站地址和波特率以外的SDB2的所有的参量将被复制到SDB0;
5.所有的SM标志被设置到它们的缺省状态;
6.所有的标志被清除;
7.所有的SCR比特被清除;
8.模拟输出将被冻结;
9.所有***数据存储器被设置到缺省状态;
10.所有强制的点被清除和不加以强制;
11.日时钟的时间将不改变;
12.所有的定时器/计数器的当前数据被清除;
13.内部的EEPROM被初始化(OB1和DB1被删除,和SDB2中除了站地址以外都被复制到SDBO,以及所有的输入、输出和数据值不加以强制)
***功能调用支持
PLC100支持***功能调用(SFC),它允许用户把定做的功能上载到PLC。
一般地,SFC可以由Siemens S7-200开发小组来创建,以及由编程装置下载到PLC。PLC支持至少两个SFC。每个SFC的最大规模取决于在特定的PLC中可提供的资源。对于在本发明中想像的CPU,每个SFC的最大规模是8KB,其中包括块标题信息。SFC并不一定需要任何用户数据,虽然可以提供***数据的分配。被下载到PLC的SFC变成为该PLC的操作***的一部分。PLC还允许SFC被上载、下载、删除、和被复制到存储器卡盘。PLC报告SFC在适当的目录通信功能中的存在。
在图33a的表中显示示例性SFC指令。图33b现在更详细地显示***功能调用的方法。在步骤3300,用户提醒PLC:SFC下载是所需要的。PLC执行用于下载所必要的信息交换协议(步骤S3302),以及SFC被下载(步骤S3304)。PLC存储已下载的功能作为操作***的功能库的一部分(步骤S3306)。
装载新的操作***
PLC可以使用快闪EPROM,以便操作***贮存支持通过通信端口去装载新的操作***。这是通过使用在快闪EPROM中的引导块(它在被安装在PLC时不能被擦除的)而完成。
新的操作***的装载可以通过使用PC/PPI电缆把个人计算机直接连接到PLC而被完成。由于PROFIBUS协议的复杂性(它是可以结合这些装置被使用的唯一的协议),使用安装在个人计算机或PG的一部分的PROFIBUS卡并不是优选的。
被使用来装载新的操作***的协议的规定将通过设计而被标识,每个通信消息将提供具有检验和或CRC代码的形式的数据完整性检验。新的操作***的完整性的验证是在正常的运行被调用以前、但是在FLASH EPROM被编程以后。
STL状态
已发现用于诊断程序的传统的诊断***是有缺陷的,因为现有的PLC的诊断***将在执行整个程序以后进行诊断,或对程序执行的时序产生很大地干扰。为此,PLC支持在一组中的每个指令被执行的时刻获得执行该组指令的结果。这个新颖的特性在PLC执行指令的同时实时地完成。为了实施这个功能,PLC提供其状态要被收集的被编译的代码段。
在一种安排中,STL状态在诸如由被耦合到PLC的、作为熟知的人机接口所提供的显示器上被实施。在显示器上状态窗口的尺寸将由可被返回的操作数值的数目确定。PLC可保留200字节缓存器以用于操作数值。这个缓存器的尺寸是基于在单个通信帧中可被返回的数据量的。
优选地只支持一个STL状态窗口。支持多个窗口需要附加的RAM,这会引起同步和触发问题。当然,通过存储器技术的将来的发展,可能有多个窗口。
应当只有一个装置能够打开STL状态窗口。STL状态窗口功能将与打开STL状态窗口的装置的站地址相联系。只要STL窗口保持打开,对于要求打开STL窗口的所有其它请求将被PLC拒绝。
为了打开STL状态窗口,编程装置可以识别窗口中第一指令的地址,然后识别窗口中指令的数目。窗口技术规范的基本格式被显示于下面。
窗口开始点的指令地址 |
2字节 |
STL状态窗口中指令的数目 |
2字节 |
在本例中,规定的唯一指令地址是在窗口中第一指令的存储器地址。编程装置承担确保在建立STL窗口时请求的应答数据适合于应答缓存器的200字节的全部负担。
STL状态显示器不可跨越各个程序部分(例如主程序到子程序,子程序到子程序,子程序到指令,指令到指令)之间的边界,这是一个原则。这会引起破坏。
应答缓存器的示例性格式被显示于图34a,其中STL状态窗口的开始点的指令地址被返回以便肯定地确认:PLC和编程装置正在观看同一个窗口。长度域表示有多少数据值的字节被包含在用于每个指令的数据区中。现在将描述代码:
V 0-用于这个指令的数据是不正确的,因为在这次扫描该指令没有被执行。
1-用于这个指令的数据是正确的。
ENO使能输出比特,它表示指令是否无错误地执行。
SCR SCR堆栈的比特数值。
S4-S0 S0是指堆栈值的顶部,以及S1是指紧接着堆栈值的顶部的下一个。
Data对于指令所返回的STL状态信息。编程装置负责根据建立STL状态窗口的请求来分析数据。
PLC负责确保在STL状态窗口获取的数据来自单个扫描周期。PLC通过使用正确的标志(V)向编程装置表示这一点,该标志(V)是通过按下对于每个指令的堆栈值而被提供的。在内部,PLC通过使用扫描计数值来跟踪正确的值,该计数值通过对STL状态缓存器的请求被复位以及每次扫描该计数值被递增。当一个数值要被写入到STL状态缓存器时,缓存器的扫描计数状态字与扫描计数器的当前的数值进行比较。如果数值不同,则扫描计数值将被复制到STL状态缓存器的扫描计数状态字,以及缓存器中所有的V标志将被清除。然后新的数值被存储在缓存器中,以及用于该指令的V标志将被设置。如果扫描计数器的数值都是相同的,则新的数值将被存储在缓存器中,以及用于该指令的V标志将被设置。这允许缓存器总是利用来自最新的扫描数据进行更新,而同时保持数据同步到同一个扫描。
装备用于STL状态的已编译的代码窗口
现在参照图34b和34c同时描述STL状态的设备和运行。对应于SYL状态窗口中的指令的已编译的代码段被PLC所识别(步骤S3400)(图上画阴影线部分)。在阴影线区中原先已编译的代码被保存(步骤S3402),然后一旦STL状态运行完成,它就被恢复(步骤S3404)。一旦原先已编译的代码被保存,被装备的代码就被编译在RAM的另一段中(步骤S3404)。
为了讨论装备代码的处理过程,需要如下地定义几个术语:
编译的指令-编译的指令是机器码或通过编译STL指令而产生的可执行码。通常,每个STL指令被编译成多个机器指令。
装备的指令-装备的指令是编译的指令连同为了节省功率流的状态和操作数值所需要的额外的机器码。
为了保留标签的地址,对于下一个环路、子程序和中断子程序,在STL状态窗口中每个编译的指令将被一个至所述装备的指令的分支所代替(步骤S3406)。每个装备的指令利用返回指令而被终结,该返回指令把控制转移到下一个编译的指令(步骤S3408)。
至装备的代码的所述分支是通过使用LCALL指令完成的(步骤S3410)。LCALL把控制转移到装备的代码,该代码获取用于该指令的STL状态(步骤S3412)。对于长于3字节的那些编译的指令,返回的数值被调节以使得控制将被转移到下一个编译的指令(步骤S3414)。
在STL状态窗口中首先编译的指令的开始地址可以在实施之前被确定(步骤S3416)。为了减小对于确定这个地址所需要的时间量,可以保存包含对于每个二十五编译的指令的地址的指针的一个表(步骤S3418)。这样的表对于8192字节用户程序需要约300个字节。如果更多的RAM是可提供的,则地址指针的表可以指出每第十个编译的指令,这进一步减小用于STL状态实施的时间。
PLC利用图34c的表,该表列出最快的布尔指令并且显示:为了编译代码需要进行怎样的改变,以使得所有的指令在长度上是三字节的最小值。在表的阴影部分中的指令告诉PLC:哪些指令可被修正。
以上的技术需要最小的RAM的量,但它也需要所有编译的代码指令至少要取LCALL指令所需要的字节数目,该LCALL指令将被使用来转移到被装备的代码段。为了清晰起见,上面假设LCALL指令取三个字节,以及所有的编译的指令取三个或更多的字节。
设计概念
图1上显示对于PLC系列的机械设计概念。设计概念是“砖块”型式的,它具有把各个单元相连接起来以便扩展的能力。这些扩展单元也具有相同的型式和形状。设计目标是使得这个单元尽可能低成本,而同时保持与Siemens S7-300TM和S7-400TM相同的系列外貌。PLC系列将具有与与S7-300TM和S7-400TM系列相同的彩色和文本型式。
外壳
PLC外壳以均匀的塑料和彩色进行压模塑造(Noryl GFNl SElAnthrazit 614 Herst N.R.GE 93263)。单元由顶部、基座、两个进入盖、一个DIN导轨插销、和两个尺寸的光管道。所有这些部件啮合在一起,以便容易安装。外壳中的设备被做成允许PWB也易于快速安置到位。I/O外壳以与PLC外壳相同的方式被设计。所述外壳被设计成用于IP20保护,以及阻止其它物体(诸如钱币)进入该装置。图35a的表显示单元的一个可能的尺寸组。
单元安装
图35b所示的PLC3900设计成被安装在DIN导轨3906上,或被进行面板安装3908。当单元要进行DIN导轨安装时,安装插销被使用来把单元锁定在标准类型50022DIN导轨上。当单元要进行面板安装时,提供了一些安装孔,以便接纳公制M4或#8类型的螺钉尺寸。PLC3904在这里被显示为与I/O扩展模块3902相啮合。在单元的上面和下面需要25mm的空隙,以便允许用户引线进出,以及考虑单元的适当的冷却。
虽然参照特定的数值和电路安排描述了本发明,但将会看到,属于本发明的精神和范围内的、其它的数值和电路安排可以代替所揭示的安排。另外,将会看到,专业人员将立即能知道如何实施PLC的软件代码,以及在这方面将会看到,各种软件应用可以以任何适当的编程语言被编写以及被存储在任何适当的记录媒体(诸如非易失性存储器,其中包括软盘、CD-ROM或DVD等)中。
用于可编程逻辑控制器的高速分立输出端
可编程逻辑控制器通过使用作为5V或3.3V低功率电路运行的标准数字逻辑电路而求解编程逻辑方程。这些方程的结果是一些逻辑信号,它们然后被提供给控制很大的功率(例如,24VDC或更大的电压和接近1A或更大的电流)的直流分立的输出点。这些分立的输出点可以驱动各种各样的负载,包括需要增强的驱动器电路的电感负载和灯负载。可编程控制器的某些用户也希望驱动带有快速的精确的切换的负载,来产生用于步进电机的计数的脉冲串或精确的模拟值的脉冲宽度调制的表示。
满足这些需要的一个方法是提供专门用于高能量的输出器件(例如,光隔离的功率晶体管),以及专门用于高速和精确的切换的其它输出器件(例如,非隔离的开关晶体管或5V数字逻辑输出)。
如果同一个输出设计可同时地或在不同时间被使用于高功率应用和高速/精确定时应用,这将是一个优点,正如可编程逻辑控制器的不同的用户可能需要的。在该设计中也希望保持光隔离,这是在工业控制中为了得到熟知的优点而非常经常地被采用的。还希望在保持类似于具有更多限制的应用的现有设计的成本的同时,实现组合的应用的优点。
在这样的设计中还希望限制输出电路的功率消耗,以使得可编程逻辑控制器的热升最小化。
对于这种分立的输出电路的附加的需要的特性是:它们具有抑制与感性负载的关断有关的电压瞬态的装置。这样的分立输出电路的另一个要求是,它们能承受得起某些标准电磁抗噪声测试,而不会引起与命令的逻辑状态相反的虚假接通或关断。这样的分立输出电路的再一个要求是,它们在很宽的电源电压范围内(例如,20到30VDC)正确地和可协调地运行。这样的电路的又一个要求是,它可以以低消耗高产量系列产品的形式可协调地再生产。这样的电路的另一个要求是,如果控制逻辑元件不被供电而输出电路功率存在时,则电路被默认为安全的已知状态。
在图38上显示典型的可编程控制器分立直流输出电路,它利用光隔离的晶体管(3801)通过适当的电阻网络(3803)来驱动FET器件(3802)的栅极。用户提供的电源(3804)和外部负载(3805)与可编程控制器逻辑元件相互隔离。可能需要附加元件(诸如正确地设置的电容器)来满足抗噪声要求。
另一个实施方案利用双极晶体管代替FET,并且带有用于驱动基极的不同的适当的电阻网络。其他的替换形式包括使用互补型FET或双极晶体管的电流阱型输出电路,而不是所显示的电流源(高端驱动器)形式。
这种基本电路结构提供增强的输出,但不容易被做成以大于几kHz的速度进行转换(或等价地,具有低于几微秒到几十微秒的接通/关断延时)。更高的转换速度的主要障碍是光耦合器,特别是对关断时间而言。为了在全部用户电源电压范围上和对于与大批量低成本的生产有关的光耦合器增益的变化以及光耦合器增益由于老化的变化提供可靠的运行,必须设计光耦合器输入驱动电路和光耦合器输出电路处的栅极驱动电路的阻抗,以使得当输出信号是ON时,光耦合器典型地很强地饱和。为了保持栅极驱动电路中的功率耗散为可接受的数值,栅极驱动电路必须是高阻抗。对于高阻抗输出电路,光耦合器从饱和到关断的过程非常慢。而且,驱动电路的高阻抗能通过限制基极或栅极电荷的变化速率而有助于功率晶体管的慢的转换。所有这些效果还由于任何附加电容添加到电路上提高了电磁抗噪性从而被加重。
光耦合器器件是通常市场上可提供的,它可以以远大于对于这个应用所需要的转换速率来耦合数字信号。这些器件通常依靠在小的信号线性范围上切换光晶体管,然后放大和调节最终的输出,从而得到逻辑电平数字信号。这样的器件不容易适用于这种应用,因为它们典型地具有以下的一个或多个缺点:
·所述器件在用于输出放大器/信号调节器的光耦合器的输出端处可能需要低电压(5V或3.3V)的低阻抗电源。在电路的现场侧形成这样的电源电压,需要附加的元件和成本。
·所述器件可能承受不了直接连接到与FET栅极或双极性晶体管基极电路有关的较高的电压,因此需要附加的元件来控制栅极或基极。
·所述器件比起简单的光晶体管可能在成本上高得多。
图39显示所揭示的本发明的基本元件。外部输出负载和输出负载电源电压像以前一样被连接到PLC DC输出电路。在PLC内,负电压稳压器(3901)提供-Vg的栅极驱动电压电源,它被设置为比外部电源电压(例如V+-12V)更负的、适当的数值。光晶体管(3902)在被接通时把输出晶体管(3904)的栅极连接到电源电压V+,从而把输出晶体管关断。另一个光晶体管(3903)在被接通时把输出晶体管(3904)的栅极连接到电源-Vg,从而把输出接通以及驱动外部负载。PLC逻辑把光晶体管(3902)和(3903)驱动为互补对,这样,对于输出关断状态,一个晶体管(3902)导通而另一晶体管(3903)不导通,以及在输出接通状态,另一晶体管(3903)导通而前一晶体管(3902)不导通。一个相当高的阻抗(例如,10KΩ)的上拉电阻(3905)保证在外部负载电源电压被加上但PLC内部元件没有被供电情形下,其输出是关断的。
在输出关断与输出接通之间的过渡过程,光晶体管(3903)快速接通,从而提供把FET栅极电容放电到-Vg的路径,以及也提供对于(3902)快速关断所需要的低阻抗路径。同样地,在从接通到关断的过渡中,(3902)把FET栅极快速拉到V+,以及提供对于(3903)快速关断所需要的低阻抗路径。用于光晶体管的驱动电路利用数字逻辑门(3907)通过并联RC网络(3905)和(3906)驱动每个光耦合器的光二极管。在逻辑信号处于适当的状态时,每个网络中的电阻(例如,1KΩ)提供流过光二极管的有限的直流电流。每个网络(3905)和(3906)中的电容(例如,100nF)允许流过相关的光二极管的电流脉冲在数字逻辑信号转换到适当的状态时接通该二极管。这样做的纯效果是:光晶体管初始很强地接通,然后跟随着稳态的最小光驱动。这在光耦合器的输出端处对应于FET栅极电荷和相反的光晶体管的基极电荷的初始的强导通,然后跟随着稳态的导通,该稳态的导通只够将FET栅极保持在需要的接通或关断电压电平上。
电阻/电容网络(3908)(例如,10KΩ和1μF)提供负电压稳压器的最小负载和去耦合。跨接在每个光晶体管的集电极/发射极的电容(3909)(例如,1000pF)为经过现场连线和FET耦合到电路的噪声提供通路,以便旁路光晶体管而不造成那些器件的不需要的切换。
与反向阻塞二极管(3910)相耦合的齐纳二极管(例如,36V)提供电感性负载箝位。当FET(3904)企图关断感性的外部负载时,电感的反作用将驱动FET漏极为负的,因为电感力图保持电流。齐纳二极管允许这个负的电压被发送到门电路。FET被保持在线性区的接通状态,允许电流被保持在电感中,而不会在FET漏极感应出一个会造成损坏的电压。FET的线性工作区电压降与负载中任何电阻相组合,它们将最后耗散掉存储的电感能量,在这时,电路将完成关断。阻塞二极管(3911)保护电路不会由于外部负载电压电源错误的反向极性连接而造成损害。
通过以上的发明,前面所述的问题被解决。