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作为继电器的驱动管,使得上电时晶体管处于截止状态。在软件上只要对相应端口复位,继电器动作。
作者简介:王建明(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]