西门子6ES7221-1BH22-0XA8千万库存
3.2 利用边沿检测、跳转指令
若利用边沿检测和跳转指令,实现起来较为简便,其STL程序如下。
A I0.0
FP M0.0
JNB OUT
AN Q0.0
= Q0.0
OUT: NOP0
程序说明:第4、5个语句的功能是实现Q0.0的自取反,但若没有前面的跳转指令,则程序每个扫描周期都会将Q0.0的状态取反一次;第1、2句的作用是限定只有当I0.0的上升沿到时取反一次,否则跳出取反程序段,从而实现一点两用。
3.3 利用边沿检测、异或指令
若利用边沿检测和异或指令实现起来更为简便,程序如下。
A I 0.0
FP M0.0
X Q0.0
= Q0.0
程序说明:当第1次检测到I0.0的上升沿,此时Q0.0为0,异或后输出Q0.0为1,第2个扫描周期来时,已经不是I0.0的上升沿了,为0,此时Q0.0确为1,异或后保持结果仍为1;第2次检测到上升沿时,Q0.0为1,异或后输出Q0.0的结果为0,等到下一个扫描周期到时,已经不是上升沿了,而此时Q0.0还是为0,异或保持输出仍为0。
4、硬件和软件结合I/O点扩展方法
4.1 硬件编码和软件译码,扩展输入点
在控制系统输入信号较多的情况下,可以利用编码器对输入信号编码,引到PLC的输入端,再通过PLC内部程序配合进行译码,对各个输入信号加以识别,可以大大减少对输入点的占用。PLC的外部接线如图5所示。由于普通编码器在有多个信号输入时会出现乱码,故可采用8线-3线优先编码器74LS148,设定好信号的优先权,有时还要将编码器的选通输出端和扩展端也接入PLC中,配合程序减少误判断。还要注意的是电平的匹配问题(信号电路的+5V和PLC的+24V之间)以及PLC的输入口对信号识别所要求的技术规范(驱动电流和电压能识别的范围),有时还需增加适当的信号放大和隔离电路。
图5 硬件编码接线图
下面以按钮SB2按下为例,说明PLC内部软件译码的程序识别方法。由74LS148的功能表可知,该芯片低电平有效,图5中用3个非门将输出电平转换成正逻辑。若SB2按下,无论SB0和SB1是否按下,但SB3~SB7均未按下;此时,ABC的输出为101,经过非门后I0.0,I0.1,I0.2的状态分别为0,1,0;对应的STL译码程序如下。
LDN I0.0
A I0.1
AN I0.2
= M0.2
这样,笔者在程序里用M0.2的常开触点代替了按钮SB2。即当按钮SB2按下,M0.2为1;SB2弹起,M0.2又为0,从而实现了软件译码的功能。需要指出,该方法在PLC的每一个扫描周期只能读入8个输入中的一个输入状态,若有2个以上开关闭合,PLC只能检测出优先权高的那个信号。
4.2 软件编码和硬件译码,扩展输出点
在控制系统输出信号较多的情况下,可以通过PLC的内部程序对输出信号进行编码,通过硬件译码器进行译码,驱动负载工作,这可以大大的减少对输出点的占用。PLC的外部接线如图6所示,采用3线-8线译码器74LS138。此时,同样存在电平匹配的问题,即PLC的直流模块典型输出为+24V,而信号电路的工作电压一般为+5V,有时同样需要增加信号电路以及功率放大电路以驱动负载工作。
图6 PLC接线图
下面以如何让Q2为1为例,说明PLC内部软件的编码方法。由74LS138的功能表可知,若要使输出Q2为1,应该使Y2输出为0;即对应的ABC应该为010,从而得到只要让PLC的Q0.0,Q0.1,Q0.2分别为0,1,0即可;对应的STL编码程序如下,其中M1.2为置位输出Q2的条件。
LD M1.2
S Q0.0, 1
R Q0.1, 1
S Q0.2, 1
这样,只需对Q0.0,Q0.1,Q0.2进行组合就可以实现对输出Q0~Q7分别置为1。本方法存在一个明显的缺点,即每一个扫描周期只能输出八种状态中的一种,若要置位输出Q0和Q1是不能实现的。
4.3 用N个输入点识别N×(N+1)/2个输入信号
若我们将输入信号接成图7的形式,再配合以软件编程便可以实现用3个输入点识别3×(3+1)/2=6个输入信号。其基本思想是:当SB1按下时,PLC只检测到了I0.0为“1”,此时I0.1和I0.2的状态均为“0”,那么在程序里就将I0.0的常开触点和I0.1、I0.2的常闭触点相与来识别SB1的状态;若SB2按下时,I0.0和I0.1均为“1”,I0.2为“0”,此时识别程序应该为I0.0和I0.1的常开触点与上I0.2的常闭触点;其它点的情况类似,输入信号SB1和SB2的STL识别程序如下,其中,M2.1、M2.2的状态就代表了信号SB1、SB2的状态。
LD I0.0
AN I0.1
AN I0.2
= M2.1 //信号SB1的识别
LDN I0.0
A I0.1
A I0.2
= M2.2 //信号SB2的识别
需要指出:这种方法不能识别2个及2个以上的信号为1的情况,如SB1和SB3接通,程序会把它当成SB2接通的情况识别。图7中二极管的作用是为了隔断寄生电流形成通路。其实,用3个输入点多可以7个信号的识别,如果在图7中再加一个SB7,用3个二极管连到I0.0、I0.1、I0.2上,则可以通过将3个点的常开触点相与来识别SB7,但这样过于繁琐,一般不采用。
图7 硬件接线图
4.4 用输入/输出口组成矩阵式键盘
若控制系统需要设计键盘,常规的思路是每个按键接一个输入口。当键数增加时,极为浪费输入点,仿照微机系统中制作矩阵式键盘的思路,在PLC系统中利用I/O点组成矩阵式键盘,如图8所示为3×3键盘结构图。编程思路:判断整个键盘上有无键按下,方法是将行全输出为1,读入列的状态,如果列读入的状态全为0,则无键按下,不全为0则有键按下;逐列扫描,方法是依次将行线送1,检查对应列线的状态,若列线全为0,则按键不在此行;若不全为0,则按键必在此行,且是与1电平列线相交的那个键。对应的软件编程比较复杂,在有些小型的控制系统中可以避免增加操作屏或触摸屏,从而提高系统性价比。若需要详细的硬件设计图和软件程序可与作者联系。
5、结束语
本文从硬件设计、软件编程以及硬件软件结合三个方面探讨了扩展PLCI/O点的方法。在具体应用时,还需考虑每种扩展方法的一些优缺点以及抗干扰能力等问题。若能合理的利用这些方法,必能有效的节省PLC的I/O点数,降低系统成本,提供性价比,更为充分的发挥PLC的优势。
随着电子技术的发展,可编程序控制器(PLC)已经由原来简单的逻辑量控制,逐步具有了计算机控制系统的功能。在现代工业控制中,PLC占有了很重要的地位,它可以和计算机一起组成控制功能完善的控制系统。在许多行业的工业控制系统中,温度控制都是要解决的问题之一。如塑料挤出机大都采用简单的温控仪表和温控电路进行控制,存在控制精度低、超调量大等缺点,很难生产出高质量的塑料制品。在一些热处理行业都存在类似的问题。为此,设计了较为通用的温度控制系统,具体系统参数或部分器件可根据各行业的要求不同来进行调整。系统采用罗克韦尔SLC500系列PLC,通过PLC串口通信与计算机相连接,界面友好、运行稳定。
1 系统构成
基于PLC的温度控制系统一般有两种设计方案,一种是PLC扩展专用热电阻或热电偶温度模块构成;另一种是PLC扩展通用A/D转换模块来构成。
1.1扩展热电阻/热电偶模块
在SLC500控制器扩展模块中,有集温度采集和数据处理于一身的专用智能温度模块——热电阻/电阻信号输入模块(1746-NR4)。在此模块中温度模拟量产生对应的16位A/D数字值,其对热电阻变送的温度信号的分辨率约为1/8度,控制器在数值处理中可以直接使用模块的转换值,无需在硬件级电路上作其他处理。热电阻温度模块的使用十分方便,只需要将热电阻接到模块的接线端子上,不需要任何外部变送器或外围电路,温度信号由热电阻采集,变换为电信号后,直接送人温度模块中。热电偶/毫伏输入模块(1746-NT4)的功能与热电阻/电阻信号输入模块(1746-NR4)类似。系统如图1所示。
图1 扩展温度模块的温控系统
1.2扩展通用A/D模块
在PLC温度控制系统中,可以用通用模拟量输入输出混合模块构成温度采集和处理系统。通用A/D转换模块不具有温度数据处理功能,温度传感器采集到的温度信号要经过外围电路的转换、放大、滤波、冷端补偿和线性化处理后,才能被A/D转换器识别并转换为相应的数字信号。SLC500系列PLC常用的模拟量输入输出混合模块有——2路差分输入/2路电压输出模块(1746-NIO4V),其A/D转换为16位。由A/D转换模块构建的温控系统不但需要外加外围电路,其软件和硬件的设计也比较复杂。系统如图2所示。
图2 通用A/D转换模块温控系统
2 输入输出控制
比较而言用温度模块1746-NR4构建的PLC温控系统具有较好的控制效果。SLC500控制器的输入通道中一个热电阻模块多可以接4个温度热电阻温度传感器。输出通道为模拟量输出模块(1746NIO4V),其输出信号是电压信号,可以通过电压调整器控制电源的开度(即一周期内的导通比率),从而控制电源的输出功率。
在被控对象要求较高的控温精度时,SLC500控制器可以采用PLC自身具有的PID指令进行PID控制算法的研究。SLC500系列PLC的PID指令使用下列算法:
输出=Kc[(E)+1/Ti∫(E)dt+Td•D(PV)/Dt] +bias
程序设计时,输入PID指令后,要输入控制块,过程变量和控制变量的地址。对于SLC500PID指令,过程变量(PV)和控制变量(CV)两者的量度范围为0到16383。在使用工程单位输入时,必须把用户的模拟量范围整定在0-16383数字量度范围之内,为了实现这个目的,需要在PID指令之前使用数值整定指令(SCP指令)进行整定。整定原理如图3。
图3 数值整定原理
SLC500有RS232通信口,可以通过专用电缆与PC机相连。通过Rsview32软件的组态,PC机可以动态显示PLC传送的温度采集数据,还可以通过联网对多台PLC进行网络监控。
4 PLC与PC通信设计
4.1 PLC数据包的信息格式
SLC500与上位机进行数据交换是以二进制字节数据进行,它包含四种主要命:读命令,代码:01H;响应读命令,代码:41H;写命令,代码:08H;响应写命令,代码:48H。故PLC数据包的信息格式如图6所示:
图6 PLC数据包的信息格式
DST:一个字节,信息接收方的节点号或文件号;
SRC:一个字节,信息发出方的节点号;
CMD:一个字节,命令类型如01H,41H,08H或48H;
STS:一个字节,通信状态,表示通信有无错误或错误类型,0为无错误;
TNS:二个字节,信息包的业务批号,可作为本信息的识别编号;
Addata:地址/字节数/数据,具体内容由不同的命令类型决定。
PLC与PC机的数据通信采用自由端口通信模式,参数设置成为波特率9600bps,每个字符8位数据,无奇偶校验。采用主从式通信协议,PC机为主机,只有PC机有权主动发送报文,PLC则采用报文接受数据。用RSLogix500软件对SLC500的串口进行如下设置:
1)set the module for full duplex BSC(DF1 full duplex)
2)set the module for bbbbbded response
3)set detect for automatic
4)disable duplicate packet detect
5)set the baud rate for 9600.
4.2 PC机程序
PC机采用VB编程,主要有监控界面、当前温度显示、动态温度曲线显示、温度数据库管理、参数设置以及与PLC通信等方面的设计。通信参数设置程序如下:
With MSComm 1 // 通信参数设置
CommPort=1 // 通信口COM1
Settings=“9600,年n,8,1”// 波特率9600 bps,无奇偶校验,8位数据,1位停止
bbbbbLen=2 //一次读取2个字节
bbbbbMode=comLnputModeBinary // 二进制数据格式
PortOpen=Ture // 打开通信端口
End With
PC机采用中断方式接受SLC500传来的实时温度。即串口收到数据,VB通信控件会触发OnComm事件,在OnComm事件程序中接受数据并处理。一个温度数据为16位两个字节,SLC500传送温度数据时,按报文传送格式高低字节正好VB程序要对接收的数据进行处理,并按照SLC500温度采集的精度(1/8度)转换成温度值用于显示。
5 结束语
本系统设计使用了PLC的热电阻温度采集模块,在上位机的控制下,对工业现场的温度进行实时的采集和监控。本文作者的创新点是,采用了罗克韦尔的SLC500控制器来实现整个系统的设计,并编程实现了SLC500控制器与计算机串口的实时通信。由于PLC可以适应环境恶劣的工业现场,故其使用范围十分的广泛。
PLC控制系统由于具有功能强、程序设计简单、扩展性好、维护方便、可靠性高、能适应比较恶劣的工业环境的特点,在工业企业广泛应用。由于工业环境条件恶劣,以及各种工业电磁,辐射干扰等,影响PLC控制系统的正常工作,必须重视PLC控制系统的抗干扰设计。为防止干扰,可以采用硬件和软件相结合的抗干扰方法。防止硬件干扰的方法有:1、采用性能优良的电源来抑制电网引入的干扰;2、电缆的选择与铺设来降低电磁干扰;3、完善接地系统;4、采用光电隔离来抑制输入输出电路引入的干扰等。而利用PLC软件来减少干扰是PLC控制系统正常、稳定工作的重要环节。下面主要分析在生产实践中应用的利用PLC组态软件来减少干扰的方法:
一、减少数字量输入扰动的方法
1、计数器法
图1
CON——计数器
NOT——非门
RS——复位优先触发器
IN——输入
OUT——输出
N——脉冲采样个数
注释:当外部有信号输入时,控制系统采集连续的N个脉冲使RS触发器输出为“1”,只有当外部输入信号由“1”变成“0”时,RS触发器的复位端为“1”,将RS触发器的输出复位成“0”。而当有瞬间干扰脉冲时,CON计数器将采集不到连续的N个脉冲,CON计数器无法输出,这就起到了减少干扰的作用。(N一般情况下取2)
优点:响应速度快,对周期性的瞬时干扰起到了一定的抑制作用。
缺点:不能消除超过CON计数器采样时间的干扰。
2、延迟输入法
图2
IN——输入
OUT——输出
TIME(ET)——延时时间
TON——延时输出(其曲线如下图)
图3
注释:当输入IN=1时,启动计数器直到计时时间(PT)=延时时间,OUT=1。当计数器计时时间〈延时时间,OUT=0。延时时间好取1S以内。
优点:消除了短时的周期干扰。
缺点:响应速度慢,不利于信号的快速传输。
二、减少模拟量输入扰动的方法
1、限幅法
图4
MOVE——移动保持指令(使能端EN=1,OUT=IN。EN=0,OUT保持前次值)
GE——大于等于指令(OUT=1,IF IN1≥IN2)
LE——小于等于指令(OUT=1,IF IN1≤IN2)
HL——上限设定值
LL——下限设定值
注释:当模拟量输入信号在HL和LL之间时,OUT=IN。当IN-AI信号超出或等于HL或LL时,GE或LE判断IN-AI信号,使OUT1或OUT2输出“1”去封锁MOVE,从而保持MOVE的输出为HL或LL的设定值。也就起到了限幅的作用。
优点:能有效克服因偶然因素引起的脉冲干扰。
缺点:平滑度差。
可编程序控制器(Programmable Logic Controller)简称为PLC,它具有可靠性高、抗干扰能力强等突出优点,广泛应用于工业控制领域,已经成为现代工业自动化的主要支柱之一。在PLC控制系统的设计中,经常会遇到I/O点资源紧张以及性价比矛盾的问题。有些被控设备需要具有手动、自动的工作方式,且手动部分控制按钮较多;有些自动生产线中,进行位置检测的行程开关或者用于系统工作状态指示的输出比较多,都会使占用的I/O点大为增加。一般通过增加扩展模块来解决,但PLC的I/O点价格昂贵,且还有扩展模块数目和I/O点数目的限制,如SIEMENS的CPU226大扩展模块数目为7,大扩展168路数字量I/O点或35路模拟量I/O点。若此时再增加CPU,势必使得系统性价比大为降低,在这种情况下,扩展I/O点数具有较大的实际意义。本文以SIEMENS的S7-200PLC为例,探讨如何扩展PLC控制系统中I/O点数的方法。
2、硬件电路I/O点扩展方法
2.1分时分组输入
对于既有手动方式又有自动方式,而二者不可能执行的PLC工作方式,不同工作方式的输入可以共用一个PLC的输入点。分时分组输入扩展I/O点数接线图如图l所示。I1.0用来输入自动/手动命令信号,供自动和手动程序切换用;二极管用来切断寄生电路,避免错误信号的产生;SA用来切换自动和手动操作方式。
图1 分时分组输入接线图
2.2共用输出触点
对于通断状态完全相同的负载,在输出点功率允许的情况下,可以并联于同一输出点上,即用一个输出点带动多个负载,需特别注意的是不能超出每个输出点的允许负载能力。接线方式如图2所示。
图2 共用输出点接线图
2.3合并输入触点
对于一个由如图3所示的按钮和接触器实现的电动机多点起动、停止的控制要求,例如可在三处实现启动和停止,其中,SB1、SB2、SB3为起动按钮,SB11、SB12、SB13为停止按钮。可以将每个按钮接PLC的一个输入点,很容易便可实现。若PLC的输入点较为紧张,则可以用图4所示的方式接线,与每个按钮占用一个输入点的方式相比,该方法的软件编程更为简单。
图3 电动机电气控制原理图
图4 电动机PLC控制接线图
3、软件编程I/O点扩展方法
软件扩展的基本思想是一点两用或轮序复用。即当按钮初次按下时,输出要求为高;当按钮按下时,输出要求为低;再按下时又为高,依此类推。这样就可以节省一个输入点,当系统有较多开关量控制时可节省较多输入点,如主机ON和主机OFF,纸料座上和纸料座下,都可以只用一个输入点来控制。实现“一点两用”的编程方法较多,如利用内部辅助继电器、定时器、计数器、移位指令等,本文仅介绍几种简便方法。
3.1利用边沿检测、输出指令
若按钮SB连到I0.0上,输出控制Q0.0,利用边沿检测和输出指令实现“一点两用”,用STEP7V5.3编制的STL程序如下。
A I0.0
FP M0.0
= M0.1
A M0.1
A Q0.0
= M0.2
A(
O M0.1
O Q0.0
)
AN M0.2
= Q0.0
程序说明:当第1次按下按钮SB时,I0.0的常开触点闭合,在RLO边沿检测指令FP的作用下,辅助继电器M0.1接通一个扫描周期,从而输出继电器Q0.0的线圈得电,且Q0.0构成自锁(保持)电路,Q0.0另一对常开触点闭合,为M0.2接通做准备;当第2次按下按钮SB时,在FP指令的作用下,M0.1的常开触点接通M0.2的线圈回路,M0.2的常闭触点切断了PLC的输出,从而实现一点两用。