1 引言
用Atmel89c2051来仿真PLC的控制,能集单片机控制和PLC控制的优点。单片机控制作为嵌入式系统的核心技术,具有高可靠性和高性价比,而且小巧灵珑、成本低廉;PLC控制中的梯形图编程与继电接触控制电原理图相似,简单易学,深受电气技术人员的欢迎。笔者设计了以89C2051单片机为主控芯片的硬件线路,以此仿真板为硬件平台,允许用户先按梯形图对控制对象编程,这对继电接触控制技术较为熟悉的电气技术人员来说提供了方便。由于仿真板本身是一个不带编译程序的仿真PLC的单片机应用系统,所以,先要将梯形图转化为MCS51汇编指令程序。然后,用51系列仿真器,对转化后的汇编源程序进行编辑、编译,直至输出Intel HEX文件,并将此十六进制文件的内容写入到89C2051芯片中。最后,将固化好的89C2051芯片插入其仿真板座子上,就能成功地进行预定的PLC的仿真控制了。
该仿真电路板价格低廉,使得使用者无需购买上千元的PLC,就能进行仿真PLC的控制。因此,它又十分适合做成专用的功能电路模块而开发成产品,还特别适合于教师在讲述PLC控制时的演示实验。同时,只要修改89C2051芯片中的程序,就能改变仿真板的控制功能,所以仿真板又是“柔性”的。
2 ATMEL89C2051单片机仿真PLC电路原理
2.1 仿真电路板的电路原理分析
ATMEL89C2051是20引脚的与8051兼容的8位高性能单片机。它内部含有2K字节闪速存储器,正是闪存的特点,使得ATMEL89系列单片机具有读写容易、价格低、功耗低和掉电信息不丢等优点。这也就是笔者在硬件结构上首先想到了用ATMEL89C2051作为PLC仿真控制电路的主控芯片。图1给出了用89C2051单片机仿真PLC简化后的电路原理。图1左下部分是仿真电路板的输入电路,由SB1~SB5、R3~R7和作为输入口的P3组成,5个开关的状态分别输入到P3口的P3.2~P3.5和P3.7。例如SB1和R3相连端是与引脚P3.2相连的,SB1未按下时,由于下拉电阻R3接地,输入到P3.2的是低电平;当SB1按下时,5V电压就通过开关SB1加到了P3.2,输入到P3.2的是高电平。这里只用了P3口的5条口线,留下的P3.0和P3.1还可以接2个开关,可以参照图1进行扩充。
图1中C2、C3和CR1晶体振荡器与单片机内部振荡器组成的振荡电路构成了时钟电路。C1、R2构成了上电复位电路。SB6按键按下后,将引起按键复位。
下面来分析图1右边部分电路,右边部分是仿真电路板的输出电路,P1口是作为输出口来使用的。P1.0的输出电路由R8、R9、R13、发光二极管D1、三极管T1和微型继电器KM1组成。R8是 P1.0的拉升电阻,又同R9一起给三极管T1提供偏置电流。P1.0输出信号经过三极管T1反相放大,去驱动继电器,再由继电器去驱动执行机构。当P1.0输出低电平时,三极管T1截止,T1的集电极为高电平,发光二极管不亮,继电器KM1也不得电。反之,当P1.0输出高电平时,三极管T1饱和导通,T1的集电极为低电平,发光二极管点亮,继电器KM1也得电。可见发光二极管的状态与继电器的通断状态是一致的,所以可以将发光二极管作为反映输出机构状态的指示。P1.1的输出电路由R10~R12、发光二极管D2、三极管T2和微型继电器KM2组成,其工作原理的分析也是一样的。不过图1中只用了P1.0和P1.1两个口线,留下的P1.2~P1.7还可以接6个输出驱动电路,如果需要的话,可以参照图1进行扩充。
2.2 仿真电路板与被仿真PLC的输入/输出端口之间的对应关系
首先要明确图1仿真电路与被仿真PLC的输入/输出端口之间的对应关系。从图1可以看出,89C2051的P3口对应为PLC的输入口, P1口对应为PLC的输出口。表1中按端口顺序给出了一种对应关系,P3.0~P3.5依次对应的是X000~X005,P3.7对应的是X007;P1.0~P1.7依次对应的是Y000~Y007。必须指出表1给出的仅仅是一种对应关系,完全可以按照实际的输入/输出情况进行对应,如也可以将P3.7对应为X000,等等。
3 仿真板的编程思路
3. 1 梯形图与MCS51汇编指令间的一一对应关系
能否把FX2系列PLC的梯形图转化为51汇编指令程序呢?笔者想到了89C2051具有布尔代数指令,特别是其中的位操作的逻辑指令,可以用这些位操作逻辑指令来替换FX2系列PLC的梯形图中的对应的基本逻辑指令。例如,可以用MCS-51的位与指令来替换PLC的接点串联指令,可以用MCS-51的位或指令来替换PLC的接点并联指令。下面将在仿真PLC控制中经常用到的可以替换的指令用表2列出。
从表2知道,MCS51汇编指令与PLC的助记符指令间的确存在着对应关系的,可以用51单片机的ANL C,BIT指令来代替PLC的AND指令,用ORL C,BIT指令来代替OR指令,用MOV指令来代替LD、OUT指令,用51单片机的跳转指令LJMP/AJMP来模拟PLC循环扫描描,等等。由于PLC的梯形图与其助词符指令之间也是一一对应的,如常开接点的串联对应AND指令,常开接点的并联对应OR指令,这样,就可以用等效替换的方法将梯形图转化为51汇编指令程序了。替换中最常用的方法是:接点串联使用与指令,接点并联使用或指令,具体如何转换将在下面的编程实例中详细说明。
3. 2 编程实例
图2为两台电机顺序控制的PLC控制梯形图。控制功能如下,当按下X002按钮后,使Y000得电而驱动泵电机动作,同时使下一梯级中的常开Y000闭合,从而使得再按X004,Y001才会得电而驱动主电机动作;否则,未按X002按钮,而先按X004按钮时,主电机将不会动作。按X003按钮后,只有主电机停止,而按X001按钮后,两电机才会同时停止。现在要求改用仿真板来实现两台电机顺序控制。
改用仿真板的编程思路是,首先要确定仿真板与被仿真PLC的输入/输出端口之间的对应关系,可按照实际的输入/输出情况进行对应,其中输出端口之间的对应关系如表1所示,而输入端口之间的对应关系如表3所示。对图2中的梯形图按照上述确定的输入/输出对应关系进行替换,就可以得到用仿真板的两台电机顺序控制的梯形图如图3所示。
接着,可以用等效替换的方法将梯形图转换为51汇编指令程序了。例如对于图3梯形图中的第一个梯级就可以按表2 MCS-51位操作指令与FX2系列PLC的基本指令对应关系进行转换,接点串联使用与指令,接点并联使用或指令。
按此方法对图3的梯形图进行转换,得到仿真板两台电机顺序控制的MCS51汇编指令程序如下:
接着,就可以用51系列仿真器(如万利MedWin),对转化后的汇编源程序进行编辑、编译,直至最后输出Intel HEX文件。将此十六进制文件的内容用编程器(如炜煌的WH-200B)写入到89C2051芯片中。最后,将固化好的89C2051芯片插入其仿真板座子上,就能成功地进行预定的两台电机顺序控制了。
4 总结
用本文所述的用AtmelAT89C2051仿真PLC控制方法,已经成功做成专用的功能电路模块,如控制电机运行的星形-三角形减压起动电路模块,电机顺序起动运行电路模块,广告灯控制电路模块等等。由于该仿真电路板小巧灵珑、价格低廉,也十分适合教师在讲述PLC应用时,无需购买上千元的PLC,就能在多媒体教室演示仿真PLC的控制实验,较为生动地讲授学习梯形图编程。此外,仿真电路板整合了MCS-51单片机控制和PLC控制两门技术,还被成功用于本市首期维修电工高级技师培训的单片机和PLC应会项目和考核项目。