微型嵌入式自编程控制器MEAPC
智能可编程控制电路,具有电路简单,控制方法灵活多变等优点,用它取代传统的纯硬件控制电路,已成为发展趋势。近年来由于单片机的流行,用单片机制作的可编程控制器非常多。但能熟练运用单片机的人并不多。究其原因: 1:学习单片机的设备费用高。 2:单片机的功能复杂,非一般人能轻易掌握。
1、学习单片机的门槛太高
单片机不仅是一门理论学科,同时又是一门应用学科,而实践是学习单片机的主要方法。但是能实践必须具有:PC机、仿真器、编程器。这三样设备全部具备,少则3000元,多则上万元。即便购齐了上述设备,又要面临如何学习使用:PC机、仿真器、编程器的问题。试想一个50岁没有学习过单片机技术的老电子工程师,还会去学习吗?一个青少年又如何入门呐?
2、单片机的功能复杂、指令太多
以现在最流行的单片机MCS-51为例,它的功能虽不算多,但是指令却有115条。许多实际应用却只
用其中少数的指令和内部功能。对一些非专业人员就没有必要全部掌握。这样可以减轻学习的负担。
针对上述问题,本人根据自身多年使用单片机的经验,设计了一种微型、廉价的完全脱离:PC机、仿真器、编程器的集开发、学习、应用于一身的开发设备:微型嵌入式自编程控制器MEAPC。
3、MEAPC控制器简介
MEAPC控制器简单易学,只有43条指令。凡具有数字电路基础的人,可以在1、2个小时内上手。它可以反复编程几万次。编制的程序可以任意备份。在:灯光、电机、开关逻辑等控制中,可以取代纯数字电路,成本低廉。
MEAPC在工业应用时,可以看成是一个具有13个I/O口、上千个软继电器的可编程控制器(PLC)。而在学习时,又可看作是一个简易的可以自编程的单片机,无须其他开发设备。
MEAPC控制器的组成
MEAPC由MEAPC-C主控板和MEAPC-P编程板两部分组成(见图2-1)
MEAPC-C主控板是一块带有单片机的可重复编程的控制板,它由使用者插入MEAPC-P编程板编程,编程完毕后将它插入应用电路中即可工作。单片机中固化了一套监控程序(MEAPC-V3.0),负责管理MEAPC-P编程板的编程和运行输入的用户程序。
MEAPC-P编程板是一块带有键盘、LED显示的编程板,用户必须用它将编制的程序输入MEAPC-C主控板。它可以多次使用。
§ 2-1 MEAPC-C主控板的引脚功能
MEAPC-C的引脚见图2-2,上电后的初始值见表2-2。
MEAPC-C主控板的引脚 图2-2
MEAPC-C主控板的引脚 表:2-1
上电后的初始值 表:2-2
§ 2-2 MEAPC-C主控板的内部资源
MEAPC-C主控板具有以下内部资源:
1.具有13根I/O线:P1~P13
输入时:吸收电流<20uA
输出时:灌入电流:20mA ;导出电流:4mA
其中P11具有负脉冲检测功能,可以计数,最高频率<500KHz
2.内部有16个位:P0~P15 。
其中P1~P13是I/O线,P0、P14、P15是用户使用位;启动计数器T0后,P15是T0溢出标志位。
3.16个内部RAM字节:R0~R15
4.256个外部FlashRam字节:00~FFH
5.一个16位可编程硬件计数器:T0
6.一个模拟SPI通讯口。
7.具有1。5K的程序存放空间(使用E224C16),可存放近:1500条指令。
8.指令平均执行速度:400uS
§ 2-3 MEAPC-C主控板的内存分布
MEAPC-C主控板的内存分布见图2-3,它可以寻址2K的地址范围。
其中:16个位的地址:0~FH;16个RAM的地址:0~FH;256个外部存储器字节的地址:00~FFH;系统子程序的地址:100~1FFH;用户程序的地址:200H~7FFH
MEAPC-C主控板的内存分布 图2-3
§ 2-4 MEAPC-P编程板的引脚功能
MEAPC-P编程板负责为MEAPC-C主控板编程,它自带一个2K的备份程序存储器,便于复制程序;两位LED数码管显示指令和数据;5个按键负责将指令、数据输入MEAPC-C主控板。
1、MEAPC-P编程板的引脚(见图2-5)
2、MEAPC-P编程板的按键分布(见图2-4)
MEAPC-P编程板的按键功能 表:2-2
点击进入:MEAPC介绍资料2
第三章 MEAPC指令表
MEAPC的指令系统由43条指令组成。可完成:位运算、数值运算、逻辑运算、移位、跳转等功能。有一个“布尔处理器 P0”,通过它可以处理大量的位数据信息,在工控中非常有用。同时还有一些特殊功能的“宏指令”。只需少量的代码就可方便地完成各种复杂的智能电路的设计。用它取代一些传统的继电器控制电路易如反掌!MEAPC的指令系统(见表3-1)。
自编程控制器MEAPC-C1指令表 表:3-1
第四章 指令系统使用详解
本章以指令的序号顺序,叙述每条指令的功能并举例。除了指令:MRx是2字节外,其余均是单字节指令。使用时请注意以下几点:
1、D9~DF指令是伪指令,不会写入EE24中。
2、P代表:位。
3、R代表:8位寄存器。
4、只有指令:ADC Rx 影响P0位。
5、Bx指令为程序提供了16个标号,便于编程。如果不够用,可以使用:JMPR14、JMPR15指令完成间接跳转(详见MEAPC-C1指令表3-1)。
6、输入数据必须采用16进制。16进制表示:xxH ;10进制:xx ;2制:xxB。编写程序时为了便于阅读,助记符的数字一般采用10进制书写。
数字:0~15的十进制、二进制、十六进制之间转换关系见表4-1
十进制、二进制、十六进制之间转换关系 表:4-1
§ 4-1 位操作指令
1: 0x CLR Px ;x=0~F
例: 已知:P0=1 执行:
00 CLR P0 ;P0位清零
结果:P0=0
2: 1x SET Px ;
例: 已知:P15=0 执行:
1F SET P15 ;P15位置1
结果:P15=1
3: 2x IN Px ;x=0~F
例: 已知:P7=1 ;P0=0 执行:
27 IN P7 ;读入P7位的数据到P0位
结果:P0=1
4: 3x OUT Px ;
例: 已知:P8=0 ;P0=1 执行:
38 OUT P8 ;P0位的数据送到P8位
结果:P8=1
5: 4x AND Px ;x=0~F
例: 已知:P10=0 ;P0=1 执行:
4A AND P10 ;P10位逻辑与P0位,结果送P0位。
结果:P0=0
6: 5x OR Px ;
例: 已知:P11=0 ;P0=1 执行:
5B OR P11 ;P11位逻辑或P0位,结果送P0位。
结果:P0=1
7: 6x NOT Px ;x=0~F
例: 已知:P12=0 执行:
6C NOT P12 ;P12位取反,结果送P12位
结果:P12=1
§ 4-2 寄存器指令
8: 7x INC Rx ;x=0~F
例: 已知:R2=3 执行:
70 INC R2 ;R2寄存器加1,不影响P0位
结果:R2=4
9: 8x DEC Rx ;x=0~F
例: 已知:R1=8 执行:
81 DEC R1 ;R1数据减1
结果:R1=7
10: 9x CHE Rx
例: 已知:R0=8;R10=15 执行:
9A CHE R10 ;R10和P0的数据交换
结果:R0=15;R10=8
11: Ax ADC Rx ;
例: 已知:R0=5;P0=1;R10=20 执行:
AA ADC R10 ;R10加P0位加R0,结果送R0
结果:R0=26
12: Bx Bx ;产生标号
例: 00 CLR P0
11 SET P1
B0 B0:B0
02 CLR P2
63 NOT P3
70 INC R0
C0 JMP B0
13: Cx JMP x ;见Bx指令
14: Ex MRx ,#d ;(2字节)
例: 已知:R5=8; 执行:
E5 C8 MR5,#200 ;200送入R5寄存器
结果:R5=200
§ 4-3 转移指令
15: F0 JP0
如果 P0位=0 ,则跳过一行 ,否则 顺序执行
例:(采用间接跳转指令:JMP R14)
EE 02 MR14 ,#2 ;设置上跳转的行数
。。。
L0: ;标号
00 P0=0 ;P0=0
F0 JP0 ;跳行
D4 JMP R14 ;上跳2行 (见指令表)
L1: ;继续执行
。。。
程序将进入L1标号继续执行,如果令P0=1,则程序进入L0标号执行。
例:(采用标号指令:Bx)
。。。
B0:B0 B0
00 CLR P0
SET P0
F0 JP0 ;跳行
C0 JMP B0 ;跳到B0行
;继续执行
。。。。
16: F1 JR0 ;当R0=0 则跳行 (见JP0指令)
17: F2 LRP ;
例: 已知:R0=5;(00000101B);P0=0 执行:
F2 LRP ;R0代P0位循环左移1位,结果送R0
结果:R0=0A0 (00001010B)
18: F3 MRP ;R0的值8位并行送到P1~P8位,P1对应低位。
例: 已知: R0=0FFH ;P1~P8=0
E0 FF MR0,#0FFH
F3 MRP
结果: R0=0FF ;P1~P8=1
19~21: F4,F5,F6 ;延时不同时间 (见指令表)
例4-1: 延时3S程序
程序1:
EE 03 MR14 ,#3 ;设定上跳的行数
E0 32 MR0 ,#3 ;赋值R0=3
L0:
F6 1S ;延时1S
80 DEC R0 ;R0=R0-1
F1 JR0 ;R0=0 跳行到L1执行
D4 JMP R14 ;上跳3行
L1:
。。。。
程序2:
F6 1S
F6 1S
F6 1S
程序进入延时后,计数器不影响工作。
22~24: 控制计数器T0的指令,要求外部脉冲是下降沿。
F7 ST0 ;将R0R1中的值送入T0计数器,启动T0计数器
F8 RT0 ;读出T0计数器的值,存入R0R1中,P15溢出标志。
F9 CT0 ;关闭T0计数器,并读出T0计数器的值,存入R0R1中
说明: RT0 指令采用了“飞读”方法,不会产生错相。
例4-2: 记录外部5个脉冲后,停止计数并使P1=1
(采用比较法实现)
CLR P1 ;清P1=0
E0 05 MR0 ,#05 ;设置5个脉冲
DB NOT ;求R0的补码
70 INC R0 ;+1
92 CHE R2 ;R2=FBH (05的补码)
E0 00 MR0 ,#0 ;R0清 0
E1 00 MR1 ,#0 ;R1清0
EE 04 MR14 ,#04 ;上跳4行
F7 ST0 ; 启动T0计数
L0:
F8 RT0 ;读T0 放入R0R1(16位2进制,R0是高位)
91 CHE R1 ;交换R0,R1
A2 ADC R2 ;R0=R0+R2
F1 JR0 ;等于5个脉冲,跳行
D4 JMP R14
L1:
F9 CT0 ;停止T0计数
11 SET P1 ;P1=1
。。。
例4-3: (采用T0溢出法实现。)
01 CLR P1
E0 FF MR0 ,#0FFH ;R0R1=FFFB+5=10000 溢出
E1 FB MR1 ,#0FBH ;
0F CLR P15 ;清标志
EE 02 MR14 ,#02 ;上跳2行
F7 ST0 ; 启动T0计数,T0=0FFFBH
L0:
2F IN P15 ;P0=P15
F0 JP0 ;等待溢出,跳1行
D4 JMP R14
L1:
F9 CT0 ;停止T0计数
11 SET P1 ;P1=1
。。。
25: FA BCD ;2进制转换成10进制
例4-4: 把:16进制数:033FFH 转换成10进制数
E0 33 MR0 ,#33H
E1 FF MR1 ,#0FFH ;设置数据:033FFH
FA BCD ;转换
结果: R0=01(万);R1=3(千);R2=3(百);R3=1(十);R4=1(个)
033FFH=13311
26: FB SEG ;提取相应数字的字符码 (见字符码表4-1) 例4-5: 已知:R0=9
FB SEG
结果: R0=01111111B ;“9”的字符码按ABCDEFGH从高到低排列。
例4-6: 显示“9。”
E0 09 MR0,#09 ;R0=9
E1 20 MR1,#32 ;间隔系数32
00 CLR P0 ;清P0
A1 ADC R1 ;指向“9。”
FB SEG
结果: R0=1111111111111B;“9。”的字符码
字符码 表:4-2
27: FC SPI ;建立SPI接口,P1:数据,P2:时钟
说明:当P0=0时:输出数据,P2脚输出8个脉冲。
当P0=1时:输入数据,P2脚输出8个脉冲。
见波形图4-1:
D0 D1 D2 D3 D4 D5 D6 D7 D0 D1 D2 D3 D4 D5 D6 D7
P1
P2
1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8
P0=0:写时序 P0=1:读时序
28: FD WRE ;写数据到E224单元
例3: 把数据28H 写入E224的30H单元。
E1 30 MR1,#30H ;设置E224的地址
E0 28 MR0,#28H ;数据28H放入R0
FD WRE ;写入
29: FE RDE ;从E224单元读数据
例3: 把E224的30H单元的数据读出。
E1 30 MR1,#30H ;设置E224的地址
FE RDE ;读出
结果: R0=28H
30: FF PWN ;停机并进入掉电状态
程序结束后,进入掉电状态,降低功耗。
31: D0 REP ;程序返回首行继续执行
例: 在P1脚产生宽度约:800uS的脉冲串
61 NOT P1
D0 REP ;返回
32~34: D1 AND ;R0逻辑“与”R1,结果在R0
D2 OR ;R0逻辑“或”R1,结果在R0
D3 NOT ;R0取反,结果在R0
例: R0=0FFH ;R1=01 ;求 R0“与”R1
E0 FF MR0 ,#0FFH
E1 01 MR1 ,#01
D1 AND
结果: R0=01H ;R1=01H
例: R0=0FFH ;R1=01 ;求 R0“或”R1
E0 FF MR0 ,#0FFH
E1 01 MR1 ,#01
D2 OR
结果: R0=0FFH ;R1=01H
例: R0=0FFH ;R1=01 ;求 R0“反”E0 FF MR0 ,#0FFH
D3 NOT
结果: R0=00H
35: F4 JMP R14 ;上跳1~255行(见例4-1)
36: F5 JMP R15 ;下跳1~255行(同 JMP R14)
当R14、R15=0时,进入死循环,要避免!
§ 4-4 转移指令
37: D9 SEE
说明:程序输入完毕后,请输入(D9),LED数码管分两次显示程序的长度,先显示地位字节,再显示高位字节。
38: DA COPYM
说明:程序输入完毕后,请输入(DA),MEAPC-C主控板内的程序,将拷贝到MEAPC-P编程板上,LED数码管显示正在拷贝的地址。
39: DB COPYS
说明:程序输入完毕后,请输入(DB),MEAPC-P编程板内的程序,将拷贝到MEAPC-C主控板上,LED数码管显示正在拷贝的地址。
40: DC BACK
说明:程序输入时,输入(DC),将退回一行。
41~43: DD START
DE MID
DF END
说明:程序输入时,控制编程指针的位置。
§ 4-5 MEAPC应编程技巧1:程序段独立存放 在编程时,为了修改的方便,可将各功能程序段,彼此拉开距离单独存放见表5-5-1。 采用JMP R15间接从程序1段跳转到程序2段,或在中间直接添加空指令(D6~D8)。表5-5-1
2:数据转移指令的合成 例:将R2中的数据转移到R3中。 CLR P0 ;P0=0 MR0,#0 ;R0=0 ADC R2 ;R0=R0+R2+P0 CHE R3 ;R3=R0=R2 3:用MEAPC指令虚拟一个软“SPI”口 例:将R1中的数据从P5脚输出,P6脚同步输出8个正脉冲。
MR0,#08;移位8次
B0: B0
CHE R1 ;R0=R1
LRP ;R0代P0位左移1位
OUT P5
CLR P6
SET P6 ;P6脚输出正脉冲
CHE R1 ;恢复R0值
DEC R0 ;指针减一
JR0
JMP B0
;输出完毕!
。。。
4:用P1~P8口并行输出字符码,驱动LED数码管(当程序执行周期>20mS时,不宜采用!) 例:将R2、R3中存放的BCD码转换成字符码输出 CHE R2 ;取R2数据到R0 SEG ;转换成字符码 MRP ;并行输出 CLR P9 ;点亮LED1数码管 CHE R3 ;取R3数据到R0 SET P9 ;关闭LED1数码管 SEG ;转换成字符码 MRP ;并行输出 CLR P10 ;点亮LED2数码管 D6 ;空指令,延时400uS
SET P9 ;关闭LED2数码管
第五章 应用设计举例
§ 5-1 MEAPC使用说明
将MEAPC-C控制板插入MEAPC-P偏程板的18脚插座内。请注意插入的顺序:MEAPC-C控制板上有缺口处为:1P。
在MEAPC-P编程板的电源插座输入电源,电压范围:4.5~5.5V。
上电后即进入编程状态,两位数码管显示程序区的第一条指令(从地址:202H开始),如果是新的E224,则会显示“FF”,且左边第一位数码管会以0.5S的速度内烁。此时用K1、K2键(见键盘分布图)修改显示的数值,数值范围:0~F。按K3键右移一位,第2位LED数码管开始内烁。同时配合K1,K2键完成数据输入。左边第一位LED数码管显示指令,而右边一位数码管则显示数据。当第一条指令输入完毕后,按K4键将指令存入E224中。之后2位LED数码管显示下一条指令,依次往下输入即可。每次按键时,个位的LED数码管的小数点会闪亮一下!
当程序全部输入完毕后,请输入伪指令:SEE(D9)。这条指令可以将程序的长度(WORD)存入E224。同时两位LED数码管闪烁显示长度的低位字节,再按下K4键,显示高位子节,此时LED显示:“HX”。“H”代表高位字节;“X”是高位字节的值。(用户程序的长度约1.5K),再次按下K4键又显示源程序的下一条指令。
程序输入完毕后,可以用DA~DF伪指令查看每一条指令。也可以可按K5键,复位MEAPC。从头开始查看!
为了确保安全,可以在程序输入完毕后,将程序备份到MEAPC-C的备用程序区。请用COPYM(DA)伪指令。以后设计其它程序,可以在此程序上修改,可以用COPYS(DB)伪指令,将备份程序复制到MEAPC-C的程序区。复制时,两位LED数码管实时显示正在复制的字节地址。约10S复制完毕!
编程完毕后,可将MEAPC-C主控板拨下,插入应用电路中上电中即可工作。
§ 5-2 MEAPC编程举例
现举例介绍MEAPC的使用。设计一个闪光灯电路(见图5-2-1)。要求:从左到右,每只发光二极管依次闪亮2秒后熄灭,一直循环。设计过程:
划出程序流程图(见图5-2-1)
用助记符写出程序:
SET P3 ;关闭LED3
CLR P1 ;打开LED1
1S
1S ;延时2秒
SET P1 ;关闭LED1
CLR P2 ; 打开LED2
1S
1S ;延时2S
SET P2 ;关闭LED2
CLR P3 ;打开LED3
1S
1S ;延时2秒
REP ;回到开始,循环!
查表3-1在助记符左边写出对应的指令:
13,01,F6,F6,11,02,F6,F6,12,03,F6,F6,D0
把MEAPC-C主控板插入MEAPC-P编程板,请注意方向!通电。
将3中的指令依次输入。为确保安全,可在D0后加入伪指令:COPYM(DA)备份程序!
6、按图5-2-1连接好电路,上电! § 5-3 MEAPC使用要求
MEAPC-C控制板内部有复位电路,也可加入手动复位电路或看门狗电路(见图5-3-2)。
MEAPC-C控制板的I/O口只能驱动发光二极管,当要驱动较大的负载时(>20mA),必须要加入驱动电路,在工业应用时,必须加入光电隔离电路(见图5-3-1)。
MEAPC-C控制板的I/O口接开关时,请对地连接(见图5-3-3)。
判别开关是否闭合,要加入延时20mS去抖动:
IN K1;读K1
JP0 ;按下则跳行
JMP B0
10ms
10ms ;延时20ms
IN K1 ;重读K1
JP0
JMP B0
;K1确认按下,做功能处理
。。。
B0:;K1未按下。。
§ 5-4 MEAPC应用实例
现在介绍一些应用实例,通过它们可以举一反三,设计任意功能的电路及软件。
1:MEAPC驱动2位LED数码管 采用74LS595锁存器锁存MEAPC输出的字符码,静态驱动LED数码管。串行数据通过MEAPC的SPI口输出,锁存信号(RCLK)由P3口输出。可以任意连级控制多位LED数码管显示。上面的LED数码管显示K1按下的次数。下面的LED数码管显示K2按下的次数。K3复位电路。LED数码管根据实际情况,使用共阴、共阳均可,只需将输出的字符码取反。
1-1、程序流程图(见图5-4-1)1-2、
程序见例5-4-1 1-3、
电路见图5-4-1
例5-4-1:03 CLR P3 ;74LS595的RCLK=0 24 IN P4 ;K1键 F0 JP0 C0 JMP B0 ;判别K1释放B1:B1 B124 IN P4 60 NOT P0 F0 JP0 C1 JMP B1 ;跳转到B1 ;K1释放 INC R2 ;次数加一B0:B0 B0 25 IN P5 ;读K2 F0 JP0 C2 JMP B2 ;判别K2释放B4:B4 B425 IN 25 60 NOT P0 F0 JP0 C4 JMP B4;K2释放73 INC R3;数据处理B2:B2
E1 0F MR1,#0FH ;R1=0FH
92 CHE R2 ;R2放入R0
D1 AND ;屏蔽高4位
FB SEG ;次数转换成相应的字符码。
00 CLR P0 ;输出数据
FC SPI ;输出
93 CHE R3
D1 AND
FB SEG
FC SPI
13 SET P3 ;打开74LS595
D0 REP 2:简易频率计、计数器的设计见图5-4-2
MEAPC内部有一个16位的计数器,因此可以方便地设计:计数器、频率计。驱动LED数码管的芯片,采用PS7219(参见有关资料,图中只划出4位,可扩展到8位)。脉冲信号必须由P11脚输入,并由74LS14整形。
计数器流程见流程图5-4-2-1,
频率计流程见流程图5-4-3-2。
2-1:计数器程序: 。。。
MR0,#0 ;清零
MR1,#0 ;
ST0 ;启动T0
B0: B0 ;标号 10MS ;延时10ms RT0 ;“飞读”T0存放在:R0R1 BCD ;转换成BCD码存放在:R0R1R2R3R4 SEG ;万位转换成字符码,输出 SPI CHE R1;取千位 SEG SPI CHE R2;取百位 SEG SPI CHE R3;取十位 SEG SPI CHE R4;取个位 SEG SPI JMP B0 ;重新刷新2
-2:频率计程序
。。。;初始化数据
B0: B0
MR0,#0 ;清零
MR1,#0 ;
ST0 ;启动T0
B1: B1 ;标号 1S ;延时1S CT0 ;关闭T0,数据存放在:R0R1 BCD ;转换成BCD码存放在:R0R1R2R3R4 SEG ;万位转换成字符码,输出 SPI CHE R1;取千位 SEG SPI CHE R2;取百位 SEG SPI CHE R3;取十位 SEG SPI CHE R4;取个位 SEG SPI JMP B0 ;重新刷新
3:电机正反转控制
电机正反转控制是工业控制中最常见的一种电机控制。用MEAPC完成控制,可以减少继电器互锁之间复杂的线路连接。为了简单描述,电路中未划出光电隔离电路,实际使用时,请务必加入。J1、J2是中间继电器,由它们控制接触器。器件功能说明:J1:正转继电器J2:反转继电器ZZ:正转开关FZ:反转开关TZ:停机开关RJ:热保护继电器触点L1、L2:继电器工作指示灯(也可并联在J1、J2中间继电器线包上) 电机正反转程序:
IN P4 ;读正转开关
JP0 ;ZZ=0跳行 JMP B0 ;检查反转开关 ;正转开关按下,先判断电机是否反转 IN P2 ; NOT P0 ;
JP0 ;电机未反转,启动J1
JMP B1
;关闭J2,稳定后启动J1
100MS ;延时
B1: B1 ;标号
SET P1 ;启动J1
B0: B0 ;检查反转开关 ;*************************
IN P5 ;读反转开关
JP0 ;FZ=0跳行 JMP B2 ;检查停机、RJ开关 ;反转开关按下,先判断电机是否正转 IN P1 ; NOT P0 ;
JP0 ;电机未正转,启动J2
JMP B3
;关闭J1,稳定后启动J2
100MS ;延时
B3: B3 ;标号
SET P2 ;启动J2
B2: B2 ;检查停机、RJ开关
;******************
IN P3 ;读停机开关
AND P8 ;TZ与RJ JP0 ;P0=0停机 REP ;循环 ;******************* ;停机
SET P1 SET P2 ;关闭继电器
PWN ;进入掉电状态
4:电机的Y/△转换设计
电机的Y/△启动是工控中最常见的继电器控制电路(传统继电器控制电路请参见有关书籍)。用MEAPC控制的电路图见图5-4-4。为了简单描述电路中未划出光电隔离电路,实际使用时,请务必加入。J1~J3是中间继电器,由它们控制接触器。时间继电器、互锁逻辑等全部由软件完成!器件功能说明:J1:控制电机住电源J2:Y启动继电器J3:△工作继电器QT:启动开关TZ:停机开关RJ:热保护继电器触点LP1~LP3:继电器工作指示灯(也可并联在J1~J3中间继电器线包上)
电机的Y/△启动程序: IN P4 ; JP0 ;开始启动,先吸合Y继电器 REP ;返回开始行,循环 ;************* Y启动工作20S CLR P2 ;Y继电器得电 100MS CLR P1 ;接通主电源 MR0 ,#200 ;Y继电器工作20S B0: B0 ;标号
IN P9 ;读RJ热保护
NOT P0 ; JP0 ;RJ=1继续延时 ;**********RJ动作,必须停机 JMP B2 ;**********20S延时 100MS DEC R0 JR0 ;20S延时结束跳出 JMP B0 ;**********△工作 SET P1 ;关闭主电源 SET P2 ;关闭Y继电器 100MS ;等待稳定 CLR J3 ;△继电器工作 100MS ;等待稳定 CLR J1 ;打开主电源 ;***********检查:停机开关、“RJ”B1: B1 IN P5 AND P9 ;TZ 与RJ=0,必须停机 JP0 JMP B1 ;************停机B2: B2 SET P1 SET P3 ;关闭电源 REP ;重新开始
5:直流母线闪光灯控制器的设计
在高压直流母线系统中,为了指明相应控制柜的工作、检修状态,均设有一个闪光灯控制器,当控制柜处于检修状态时,有一个指示灯以1~2S的频率闪烁。传统闪光灯控制器的电路见图5-5-5-1。当有多个闪光灯同时工作时,频率变化大,工作电流变化大,闪光灯控制器(FLASH)经常损坏。用MEAPC代替的电路见图5-5-5-2。 工作原理: 当有开关K接通时,P1将变为低电平0,MEAPC检测到后启动软振荡器(1S~2S),并在P2口输出脉冲,推动J继电器工作。MEAPC在J断电时,再次检测P1口,用以判断K是否短开。闪光灯控制器程序: IN P1 Y JP0 REP CLR P2 1S SET P2 1S REP
6:电子时间继电器
时间继电器在工业控制中应用非常广泛,种类比较多。传统的时间继电器有:空气压缩延时、电子线路延时等方法作成。定时精度低、设定参数不直观。用MEAPC替代时间继电器,电路非常简单、时间设置灵活。在MAEPC中有三条定时指令:10ms、100ms、1s,它们是由单片机内晶振分频得到精度高。在需要长定时时,可通过R0~R15寄存器配合完成。
现介绍一种可灵活配置延时时间,两路输出的电子时间继电器。
6.1时间继电器的硬件电路MEAPC的P1~P8口连接一个8位DIP拨码开关,延时时间分成256档;P9、P10控制两个继电器;P11、P12、P13做外部触发条件输入端。J1是瞬间动作继电器吸合100ms之后释放;J2长吸合继电器。6.2软件设计
将8位拨码开关的二进制值读入内部R0寄存器,再根据实际需要预置定时初值。如果定时初值为:1s,则最长可延时256秒。程序清单:。。。。。。IN P8LRP ; P8左移到R0寄存器IN P7LRPIN P6LRPIN P5LRPIN P4LRPIN P3LRPIN P2LRPIN P1 ;读入8位拨码开关的值到R0寄存器B0:B0 1S ;延时初值1SDEC R0 JR0 ;R0=0 跳行JMP B0;延时时间到J1、J2动作CLR P9CLR P10 ;打开J1、J2100MsSET P9 ;关闭J1
本文来源:https://www.2haoxitong.net/k/doc/b2e0429b580102020740be1e650e52ea5518ce8d.html
文档为doc格式