北京西门子模块授权总代理
浔之漫智控技术(上海)有限公司(XMZ-WH-SHQW)
西门子PLC的功能块编制
1.定义变量
为了进行结构化编程,必须编制功能块。从搅拌机控制要求可见,泵A、泵B、搅拌电机的控制要求相似,都是接受操作面板的启动按钮、停止按钮控制,都需要满足一定的控制条件,都需要检测错误,都有工作、停止指示灯等。因此,可以通过一个统一的FB块进行结构化编程。
功能块FB需要的变量较多,本例中,作为泵A、泵B、搅拌电机共同的输入,包括了启动信号( start)、停止信号(stop)、接触器辅助触点反馈(fbk)、定时器(T no)、检测时间(fbk time)等,定义的输入变量表。
作为泵A、泵B、搅拌电机共同的输出,包括了故障标志寄存器输出( err)、工作指示灯(start lt)、停止指示灯( stop_lt),定义的输出变量表。
作为泵A、泵B、搅拌电机共同的输入/输出,有接触器线圈输出( coil),定义的输入/输出变量。
作为泵A、泵B、搅拌电机共同的静态变量,有启动延时(timl BIN与timl BCD),定义的静态变量。
2.编制功能块西门子PLC的功能块编制
作为泵A、泵B、搅拌电机共同的输出,包括了故障标志寄存器输出( err)、工作指示灯(start lt)、停止指示灯( stop_lt),定义的输出变量表 。
在使用PLC的过程中,我们经常遇到输入点不足问题,如何解决这个问题呢Z简单的方法莫过于通过扩展输入模块来实现。但是模块的价格可是不菲的,动辄数千元,而且一扩就是8点、16点或32点,如果您仅仅缺一个点,这岂不是太不划算了!?有没有更经济的解决方案呢?
根据实践中的摸索,我总结出两种解决PLC输入点不足问题办法
其一是把多个要输入的信号,先通过外部元件的逻辑组合,然后再接入到PLC的一个输入点上;其二是不需要增加任何元件,通过运用PLC内部的逻辑组合,把连接到输入端的开关变成双稳态开关,来实现我们节省输入点的目的。
下面以工业控制中常见到的电动机的启动停止控制为例,具体来探讨这两种方案的实现方法。为了叙述的方便,我先做这样的假定:PLC系统采用西门子公司的S7-200系列;电动机启动按钮为SB1,定义号为I0.0;停止按钮为SB2,定义号为I0.1;控制电动机的接触器定义为KM1;控制接触器KM1的PLC输出点定义为Q0.0。
方案1:启动、停止按钮SB1和SB2不是单独接到PLC的输入端,而是先把SB1与SB2进行串联再连接到输入模块,这样就节省了一个输入点。控制流程是这样的:按下启动按钮SB2,I0.0输入高电平,Q0.0有输出信号,带动接触器KM1吸合,启动电动机旋转,同时接触器的辅助触点吸合,维持I0.0的高电平,从而电动机的旋转得以保持;按下停止按钮SB1,I0.0变为低电平,Q0.0便由高电平变为低电平,从而使KM1失电,电动机停止旋转。
另外一种解决输入点不足的方法是通过软件来实现,这种方案的接线非常简单,直接把一个按钮连接到PLC输入端,我把它定义为I0.0,但按下这个按钮,可以启动电动机旋转;若再按下这个按钮,又可以使电动机停止,即这个按钮是双稳态的。
我们来看它是如何实现的:按下按钮,I0.0为高电平,由于初始状态下M0.0是逻辑0,只有网络1中有电流流过,M0.1置位,从而在按钮释放后,Q0.0点输出,Q0.0激励KM1,使电动机旋转;同时M0.0变为逻辑1,为M0.1复位做好准备。如果此时再按下按钮,又只能使网络2中有电流流过,M0.1复位。它的复位使Q0.0失电,电动机停止,同时使M0.0复位,又为M0.1置位做好准备。再按下按钮,又会重复上述循环。之所以在网络3支路中串入I0.0,是为了取一个瞬时信号,保证按下按钮并等释放了以后,才使状态发生改变。如果您持续按着按钮不释放,PLC仍维持原来的状态不改变。