随着高职教育的迅速发展,将PLC技术引进高职教学并作为一门较为重要的课程,在高职教育中已达成共识,是课程建设现代化的重要措施。本文在研究 AT89C55单片机后,以该单片机为核心设计了一个综合PLC系统,集成了多路开关量I/O及模拟量输入,并可以通过RS232/RS485与上位机进行通讯,已经作为若干高校的实验设备使用,并且,在要求较高的工程项目中也得到了具体的应用。
1 PLC的硬件功能设计
该PLC的设计思想基于三菱PLC的操作语言,仿照三菱编程器的操作,利用AT89C55单片机作为主控芯片,辅以其它芯片完成相关功能,其逻辑图见图1所示。为了达到教学目的,在设计思路上和常规的PLC有几个不同点:一是为了使学生更多地接触不同的输出方式并进行相关的实验,设计了两种输出形式,即8路继电器输出和4路晶体管输出,而且,继电器输出的端子中有四路没有公共端子,三个端子完全引出,由学生自由组合,可扩大控制范围;二是在输入上,除了16路开关量输入外,还设计了2路模拟量输入和高速开关量计数器输入;三是源代码开放,工科院校自控和计算机专业都开设单片机课程,由于条件所限,学生将实践和学习相结合的机会并不多,鉴于这种情况,将源代码开放,学生可以学习、补充、修改程序,既完善了PLC程序,又锻炼了教师和学生。
在大部分PLC中,例如,三菱[1]、欧姆龙和西门子等,上述功能一般由独立的模块来实现。这里将各种功能集成到一个PLC 模块中,可以降低实验设备的成本。在图1中,为增加学生对输出模块的认识,可控硅模块可以和继电器模块互换,结构只是一个可控硅光耦(例如 MOC3023)驱动一个双向可控硅(例如BTA10-600)。
IC卡的目的是当学生使用编程器编程时,用来记录学生的程序,有利于程序的修改和调试以及教师评分,用于实际工程项目中的PLC省略此功能。串行通信接口支持RS232和RS485两种标准,拨码开关给出本机地址,使用RS485接口组成监控网络时使用。
2 单片机语言的选择及系统软件设计
一般说来,现在通用的单片机编程语言有汇编语言和C语言,C语言编程方便、易读,但需要占用较多的内存,从而导致执行速度变慢。PLC是以循环扫描程序行的方式来工作的,对实时性要求较高,一个扫描周期一般不大于20ms,这样,当程序较长时,速度就显得尤为重要了。因此,选择汇编语言作为PLC的系统设计语言。
由于PLC语言是面向用户的,可以支持的语言并不是单片机可识别的,而且要求可以由用户修改并下载到单片机的程序存储器中,因此需要一个译码模块,在执行中把每一行用户程序翻译成机器可识别的子程序或过程。具体实现的方法为:
用户程序4个字节为一帧:“XX XX XX XX”,其中第一字节为命令,例如,OR、 MOV、OUT等;第二字节为执行元件,例如,继电器、输入等;第三、四字节为相关数据,这与不同的命令内容相关,例如,“01 10 00 03”定义为“LD Y 03”,“00 XX XX XX”定义为“NOP”等。但是,数据区不足以表达数据,可以有后续数据,也是4字节为一帧,以FE为第一字节,例如,“FE XX XX XX”,这样,就将命令帧和数据帧区分了。用户程序下载到 EEROM(FM25640),由主程序依序读出,再交译码模块翻译后执行。
程序中较难实现的是继电器的上升沿或下降沿检测。在PLC语言中许多情况是要检测上升沿或下降沿的,有近千个继电器,在每个循环中对所有的继电器都进行检测记录,无论时间或记录位置(寄存器)都是难以实现的,故开辟了一个存储区,专门记录激活了(即使用中)的继电器状态,在程序运行前,先对继电器扫描,把激活的继电器依序登录,当程序运行到该继电器时就对该继电器进行当前状态同前一周期状态比较登记,当前一次状态与当前状态相反时便认为是上升沿(或下降沿)到达。
3 开关量I/O的软硬件设计
开关量I/O是PLC的重要内容,一般来说,为了提高抗干扰能力,输入与MCU之间是通过光耦隔离的,考虑到成本和尽量减少接口的占用,采用16选1模拟开关CD4067(U8),4条地址线用4个光耦521-1(U10-13)隔离。
由于受光耦响应速度和扫描周期的限制,不允许使用每个周期依序查询的办法,故在程序中设计了一毫秒定时(2)中断,每毫秒查询一个接口,同时将接口状态映射到BIT 30H-3FH,因此,只需要对BIT30H-3FH查询,便可知道接口状态。中断程序如下:
ORG 2BH
LJMP INPUT ;每毫秒中断一次
INPUT:PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
MOV C, P1.4
MOV A, 25H
MOV DPTR, #INPUT1
RL A
RL A
JMP @A+DPTR
INPUT1: MOV 30H, C
SJMP INPUT2
MOV 31H, C
SJMP INPUT2
MOV 32H, C
SJMP INPUT2
MOV 33H, C
SJMP INPUT2
MOV 34H, C
SJMP INPUT2
MOV 35H, C
SJMP INPUT2
MOV 36H, C
SJMP INPUT2
MOV 37H, C
SJMP INPUT2
MOV 38H, C
SJMP INPUT2
MOV 39H, C
SJMP INPUT2
MOV 3AH, C
SJMP INPUT2
MOV 3BH, C
SJMP INPUT2
MOV 3CH, C
SJMP INPUT2
MOV 3DH, C
SJMP INPUT2
MOV 3EH, C
SJMP INPUT2
MOV 3FH, C
INPUT2: INC 25H
ANL 25H, #0FH
ANL P1, #0F0H
MOV A, 25H
ORL P1, A
POP DPH
POP DPL
POP ACC
POP PSW
RETI
首先保护PSW、ACC和DPTR,读入当前输入P1.4至C寄存器。25H是CD4067的地址映像,指向当前输入地址,将当前地址乘以4(跳转地址占4个字节),跳转到相应位置得到输入映像,指向下一个输入地址,然后,恢复被保护的寄存器,返回。程序代码长度为103个字节,执行所占用的时间为 0.018毫秒,完全满足PLC的实时性要求。
输出分为两部分,8个继电器输出和4个晶体管输出,由于单片机上电时端口被置位,为了防止出现上电时误导通,故而选用PNP管8550作为继电器的驱动管,使得上电时晶体管处于截止状态。在软件上只要对相应端口复位,继电器动作。
4 PLC的测试与应用
利用文献[2]中的通用多功能计算机监控系统测试软件,在摄氏40℃以上的环境中对PLC进行测试,采用CRC校验,每4秒发送一个数据包,连续测试48小时,PLC都能够成功识别数据包,并返回正确的结果,完全能够满足实际的工程要求。
内蒙第一机械制造集团公司是国有特大型企业,生产军用装备。该公司的液压件打压试验台,就是采用该PLC进行监控的。全部试验过程通过PLC、数据采集卡、工控机等进行控制。试验过程及结果通过计算机显示屏随时监控,并通过打印机打印输出试验数据。
在北方奔驰重型车辆制造有限公司的发动机转速测量中,也使用了该PLC。这两个监控系统目前运行可靠。该PLC还批量投入实验室使用,在高级技工考试中也得到了成功的应用。
本文作者创新点
本文利用AT89C55单片机实现了工业和教学使用的PLC系统,系统稳定可靠,并用于实际的工业控制系统和教学设备中,对于替代昂贵的进口PLC和节省教育经费具有重要意义。
作者简介:王建明(1957-),男(汉族),内蒙古包头人,包头职业技术学院副院长,副教授,主要从事计算机监控技术的开发研究。E-mail: wjm7591@yahoo.com.cn
Biography: Wang Jianming, male, the Han nationality, born in 1957, deputy headmaster and associate professor of Baotou Vocational & Technical College. His main research field is the development of computer monitor system. E-mail: wjm7591@yahoo.com.cn
参考文献
[1] 沈世斌. 三菱PLC 与PC 机间的通讯应用[J], 微计算机信息, 2006,22(4-1):81-83.
[2] 王建明. 智能设备的通用测试.工业控制计算机, 2002, 15(12):10-12.
上一篇:PC机与多台单片机实时通信系统的设计与实现
下一篇:基于8250的多机通信设计
推荐阅读最新更新时间:2024-03-16 12:51