PLC增扩输入口的硬件电路及与之配合使用的PLC梯形图的构思与解析
正常情况下PLC设计要求其I/O点应留有一定的余量。如PLC的I/O点不够,可增加I/O扩展模块。但有些特殊情况,例如对一台旧设备进行改造,要求要利用设备上原有的PLC,而原PLC的输入与输出口已用到其I / O口的最大数量,还需再增加多个输入点及输出点才能实现改造后的控制功能。在此情况下,用增加I/O扩展模块的办法是行不通的,就得采用硬件电路配合PLC编程,来实现I / O口的扩增。下面就这一问题谈谈个人的想法(本文仅谈输入口的扩展,输出口扩展将在另文论述)。
第一种扩展输入口的构思:采用数学组合的思路扩展输入口:如选用N个输入口,除每个口接一输入开关(或电位输入信号)外,还可用俩俩组合来代表一个新的输入点。
图一的K1~K4为原I0.0~I0.3的输入开关,K5~K10 这6个开关是利用数学组合思路扩展的6路输入开关,即每个开关连接2个二极管的正极,而二极管的负极分别接2个输入口,如K5的触点,其一端接+24V,另一端接2个二极管的正极。这2个二极管的负极分别接I0.0与I0.1输入口,当按下K5开关时,将使其I0.0=1与I0.1输入电压=+24V,此时4个输入口的输入值=0011。即0011则表示K5的信号代码。如K6连接的2个二极管的负极分别接I0.0与I0.2,其0101输入状态则代表K6的信号输入代码……,而K1~K4的输入代码分别为:0001、0010、0100、1000表示。
第二种扩展输入口的构思:采用二进制编码组合的思路扩展输入口:如选用N个输入口,其各个输入口分别代表二进制数的各位的值:如I0.0=1代表二进制数的个位数“1”(即十进制数1), I0.1=1代表二进制数的十位数“1”(即十进制数2),I0.2=1代表二进制数的百位数“1”(即十进制数4)……,如用N个输入口表示N位二进制数,它将有2的N次方个不同数字组合。
如仍取N=4,用I0.0~I0.3这4个数入口分别作为二进制数的个位、十位、百位、千位的数,从0000 到4位二进制数的最大值 1111,共含有:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、1100、1101、1110、1111这16个不同数值,除0000外,其余15个数中的4位数至少有一位=1,即相当有1个输入开关接通该输入口使其置1。我们可用15个开关,按着这15种4位数不同的数字组合,用二级管连接该对应输入口,就可构成用4个输入点实现15个输入信号的控制功能。见下图:
图二、4位二进制数编码式组合构成的输入控制电路图
图二中的K1、K2、K4、K8 这4个开关分别直接与I0.0~I0.3输入口相连,其输入值为0001、0010、0100、1000这4个二进制数,其余11个开关则通过二极管不同组合与I0.0~I0.3连接,即按各开关序号值对应的二进制数中的各位值=1的输入口相连接,构成11个扩增输入点。
通过图一与图二比较可已看出:选用相同数量输入口。采用第二种方式扩展输入口比采用第一种扩展方式所扩展的输入口要多,而且N数越大,扩增的输入口越多:
下面图三是用S7-200编写的用4个输入口按组合思路实现扩展10路输入开关的梯形图:
下面图四是采用第二种扩展方式用S7-200编写的用4个输入口实现15路输入开关的梯形图:
图四、4个输入口扩展为15个输入信号的梯形图
二、硬件电路图与梯形图的分析
上述这二种扩展方案虽然能扩增输入口,但都存在着一个致命的弱点,即:各个输入开关(或输入信号)只容许独自进行输入控制,即不容许同时进行二个以上的信号输入。否则就会造成错误的输入命令。以图二为例:如同时按下K1、K2、K5三个按钮,其此时I0.0~I0.3的输入状态只能为一种:I0.0=1、I0.1=1、I0.2=1、I0.3=0,而这种输入状态是K7的输入代码,而K1与K2及K5的输入代码却不存在,其结果,PLC将执行K7指令动作,K1、K2、K5指令皆不予执行,这是控制程序所不容许的。
这个问题如不能解决,此设计方案就没有实用价值,为解决这个难题。为使这一设计思想不予流产,对此方案进行深入的研究与分析,最终选用如下的解决方案,见图五与图六。
图五、在图一基础上改进的用4个输入口扩展为10路输入控制的电路图
图六、在图二基础上改进的用4个输入口扩展为15路输入控制的电路图
图五是在图一的基础上改进的用4个输入口扩展为10路输入信号的电路图。图六是在图二的基础上改进的用4个输入口扩展为15路输入信号的电路图。二者电路构思是相似的,下面只讲解图五电路的工作原理及其编程:
图五是用COS集成电路按第一扩展思路构成的用4个输入口扩展为10路输入信号的控制电路,图中用3个4011(为四2输入与非门集成块),共含12个2输入与非门,其中二个与非门门(U3C、U3D)用于做振荡器,剩下的10个与非门的二个输入端分别连接10个输入信号(K1~K10)和4028 的10个输出端(Q0~Q9)。如:U1A门的一个输入端(1脚)接输入信号K1,另一个输入端(2脚)接4028的Q0输出端, U1B门的一个输入端(5脚)接输入信号K2,另一个输入端(6脚)接4028的Q1…。
连接10个输入信号(K1~K10)的10个与非门的输入端各加一下拉电(4.7K),其作用是:当各输入点的输入信号=0时(即K1~K10处于断开),使其与非门的输出=1。即10个与非门输出皆为1,那么后级的四个4输入与非门(U6与U7)的输出皆为0,又使之连接的NPN型晶体管G1~G4截止,输出高电平,即G1~G4管输出为1,又使后面4个PNP晶体管截止。使PLC的I0.0~I0.3无注入电流,即I0.0~I0.3输入皆0.
如K1闭合(即K1=1,输入高电压),4028的Q0也输出为1时,与非门U1A的二个输入皆为1,使其输出(3脚)为0,即使U6A的输入2脚=0,其U6A的输出1脚=1,U6A的1脚输出高电位加在G1晶体管的基极,使G1导通,其集电极输出0电压加在G5的基极,又使G5导通,使24V正电压加在I0.0输入口,即I0.0=1。此时由于U6B与U7A、U7B 的输入端无输入信号,其输出仍保持0,故使其后面的晶体管截止,使I0.1、I0.2及I0.3的输入皆为0。
图五中的与非门U3C与U3D构成自激振荡器,其振荡频率为1.2KHz,该振荡脉冲输入给十进制计数器4518,4518 的4个输出端:Q0~Q3,分别代表1、2、4、8,其十种输出状态为0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 ,随着输入脉冲的连续触发,上述的十种输出状态会依次重复出现,每种输出重复出现的间隔为10个计数脉冲间隔,其频率为计数脉冲频率的十分之一(即为120Hz,周期=83.3mS)。
4518的4位输出(Q0~Q3)输送给4028 的4个输入端(A、B、C、D),4028为BCD输入4线-10线译码器,当其输入端A、B、C、D的输入信号由000、0001…1001依次变化时,其10个输出端Q0~Q9也随之由Q0、Q1…Q10依次轮流输出为1。例如:当输入为0000时,其输出Q0=1,其余输出端输出为0,当输入为0001时,其输出只有Q1=1。
那么这10个与非门起什么作用呢?现举一例说明:以U1A门为例,假设K1输入脉宽为1分的正方波,而4028的Q0输出为120Hz的连续脉冲,这二种信号相与,使与非门U1A的输出端1脚的输出波形变为频率=120Hz,长度为1分钟的脉冲串。见下图:
此脉冲串的脉冲个数=60×120=7200.4028的10个输出端是分时轮流输出的(即互不重叠),故10个与非门的输出也一定互不重叠,即在K1=1而Q0也=1时,只有U1A输出=0,其它9个与非门因Q1~Q9皆为0其输出都=1。此时4个4输入与非门只有U6A的输出端=1,其它3个输出为0,使PLC的I0.0~I0.3的输出状态为:0001。这0001输入状态是每隔83mS重复出现一次,在1分钟内将出现7200次。
对应K1输入,PLC是这样编程的:见下图
当K1=1,4028的Q0输出端第一次=1时,其上图支路通导,使定时器T101得电且使T101=1,当4028转为下一个输出时(如Q1=1)该支路断,但T101仍保持输出为1(它需延时100mS才可断),延时83.3Ms,此支路又通导,使定时器T101又得电且使T101=1……,在K1的输入1分钟的方波脉宽内,T101从第一个脉冲使其数出=1起,一直保持输出为1状态,直到K1的脉冲结束,其脉冲串的最后一个脉冲结束,再延时100mS,T101才由1下跳回0状态,见下图:
从上图可见。通过T101使输入的脉冲串又转换为脉宽为1分的方波。从图中会发现T101输出波形与K1波形稍有滞后(小于100mS),这对K1的长时间通导是微乎极微的。
再举一例:K1与K2分别输入正方波,二者是同时出现但导通时间不等,见下图:
图七、电路波形图
从图七可见,由于4028的输出端Q0波形比输出端Q1波形提前一个正方波脉冲宽度,确保二者形成的脉冲串(U1A3脚波形与U1B4脚波形)互不重叠,二者先后送入PLC的I0.0~I0.3口,由下梯形图实现T101与T02二个方波输出(见上图七)。
通过上述讲解,可以知道,用硬件电路配合PLC编程来增扩输入口的设计构思:
1、硬件电路:完成将10路输入信号,转换为与原信号等宽度的脉冲串,各路脉冲串的频率相同,但相位依次相差十分之一脉冲的周期,它们是分时循环输入给PLC的I0.0~I0.3各端口,
2、PLC编程:PLC输入口(I0.0~I0.3)的10种输入状态:0001、0010、0100、1000、0011、0101、1001、0110、1010、1100,对外分别对应K1、K2……K10十个输入信号,对内分别对应T101、T102……T110十个断电延时定时器,由于这10种信号是分时传送给PLC输入端的脉冲串,使各定时器能分别产生与对应输入相似的方波脉冲,从而达到10路输入信号通过4个数入口可以随意输入,PLC照样可以获得与之同时序的10路输入信号。
图七为配合图五输入电路图编写的PLC梯形图:
图七、与图五硬件电路相配合的PLC梯形图
关于图六的电路图原理及其编程思路与上述图五相似,本文就不再作重复讲解。就写到这里,供大家分析与参考。谢谢大家!
回14楼:关于用单片机的一个8位 口(如P1口)连接16键键盘的编程,20多年前是经常使用的,由于多年不搞单片机,编程软件使用都有点忘记了,我找到过去编写的键盘程序,贴出来供你参考:
KYCL: MOV P1,#0F0H //将#F0—>P1口
MOV A,P1 // 将P1—> A 累加器
ORL A,#0FH // #0F 或到 A 里
MOV P1,A
MOV A,P1
CPL A
RET
KYDC: ACALL KYCL //调KYCL子程序
ADD A,#0EFH
JNC KYDC
ADD A,#11H
MOV R3,A
ACALL KYCL
CPL A
INC A
ADD A,R3
JNZ KYDC
KYDC1: ACALL KYCL
JNZ KYDC1
CLR A
MOV R4,A
MOV DPTR,#KYBL
KYDC2: MOVC A,@A+DPTR
ADD A,R3
JZ KYDC3
INC R4
MOV A,#0F0H
ADD A,R4
JZ KYDC
MOV A,R4
SJMP KYDC2
KYDC3: MOV A,R4
ADD A,#0F6H
JC KYDC5
MOV R5,#4
MOV R0,#33H
MOV R1,#34H
KY1: CLR C
MOV A,@R1
RLC A
MOV @R1,A
MOV A,@R0
RLC A
MOV @R0,A
DJNZ R5,KY1
MOV A,@R1
ORL A,R4
MOV @R1,A
ACALL CSZC
AJMP KYDC
KYDC5: MOV A,R4
ADD A,#0F6H
JZ KYA
DEC A
JZ KYB
DEC A
JZ KYC
DEC A
JZ KYD
DEC A
JZ KYE
AJMP KYDC
KYA: MOV 33H,#1FH
KYA1: MOV 34H,33H
ACALL CSZC
AJMP KYDC
KYB: MOV 33H,#2FH
SJMP KYA1
KYC: MOV 33H,#3FH
SJMP KYA1
KYD: MOV 33H,#4FH
SJMP KYA1
KYE: MOV 33H,#5FH
SJMP KYA1
键盘与P1口连接图:
你可根据上图与程序仔细分析此就可搞懂,有不明白的地方,可提出来。