六盘水S7-1200PLC西门子代理商原装现货 六盘水西门子S7-1200PLC代理,六盘水西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
PLC双线圈输出与双线圈驱动的工作原理和区别是什么
1.位元件输出执行和双线圈
位元件的驱动输出在梯形图中是由线圈输出指令 OUT 和功能指令的操作来完成的,但两种指令的执行有很大的区别,
1)OUT指令执行
不管驱动条件是否成立,OUT 指令都要执行输出。驱动条件成立,则输出执行为 ON(下面用1表示),驱动条件不成立,则输出执行为OFF(下面用0表示)。
西门子PLC延时中断组织块的应用
PLC的普通定时器的工作与扫描工作方式有关,其定时精度较差。在接通延时定时器的输入信号的上升沿和定时器输出位的上升沿,分别调用SFC1读取CPU中的日期和时间,用IEC功能FC8从其中提取实时时间(TIME_OF_DAY)。设置时间预置值分别为5s和50,扫描循环时间为10ms。作者做了多次实验,发现定时器的定时误差为1~9ms。
如果需要高精度的延时,应使用延时中断 OB。用 SFC32“SRT_DINT”启动延时中断,延迟时间为1~60000ms,精度为1ms。延时时间到时触发中断,调用SFC32指定的OB。CPU316及以下的 CPU 只能使用 OB20,暖启动或冷启动将清除延时中断 OB的启动事件。
1.硬件组态
用新建项目向导生成一个名为“OB20例程”的项目(见随书光盘中的同名例程),CPU模块的型号为CPU315-2DP。打开硬件组态工具HWConfig,将硬件目录中名为“DI4xNAMUR,Ex”的4点DI模块插入4号槽,自动分配的DI模块的字节地址为0。双击该模块,打开它的属性对话框(见图4-47)。用复选框启用硬件中断,设置I0.0产生上升沿中断。在5号槽插入一块16点DO模块。
2.程序设计
在10.0的上升沿触发硬件中断,CPU调用OB40,在OB40中调用SFC32“SRT_DINT”启动延时中断(见图4-51),延时时间为10s。从LD12开始的8B临时局部变量是调用OB40的日期时间值,用MOVE指令将其中的后4个字节LD16保存到MD20。
2)功能指令执行
位元件也经常作为功能指令的操作数进行驱动,例如 SET Y0、RST Y0、MOV K10 K4Y0等。同样,这些功能指令均有驱动条件,功能指令仅当驱动条件成立时,才执行指令的操作功能。其执行结果会送到 I/O 映像区或 RAM存储区中去保存,而驱动条件不成立时,执行的结果仍然保持不变,直到通过执行新的指令操作得到新的执行结果为止。
什么叫双线圈?在梯形图程序中,如果一个位元件的线圈被驱动两次或两次以上,就叫双线圈。根据驱动所用的指令不同,双线圈在程序中又分为三种结构。
(1)用OUT指令驱动同一个位元件两次或两次以上。
(2)用OUT指令和功能指令驱动同一个位元件两次或两次以上。
(3)用两个功能指令驱动同一个位元件两次或两次以上。
上面三种结构,第(1)种和第(2)种称为双线圈输出,第(3)种称为双线圈驱动。在程序中这两种情况执行的结果是不同的,下面分别给予讨论。
2.双线圈输出六盘水S7-1200PLC西门子代理商原装现货 六盘水西门子S7-1200PLC代理,六盘水西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
所谓双线圈输出是指位元件在编程中用OUT指令驱动了两次或两次以上,或者用OUT指令和功能指令驱动了两次或两次以上,程序如图5.1-8所示。
图5.1-8 双线圈输出程序例1
图5.1-8(a)为Y0用OUT指令驱动了两次,是一种典型的双线圈输出。这种程序设计的本意是:如果输入采样为X0接通,X1断开,则Y0,Y1,Y3均为1;如果输入采样为X0 断开,X1 接通,则 Y0,Y3 均为 1。那么程序运行结果是不是这样呢实际上不是,图5.1-8(b)是实际运行监控结果,当X0 接通、X1 断开时,Y0,Y3均为0,仅Y1=1。发生了一个初学者感到奇怪的现象,X0接通,Y0没有输出;Y0常开触点没接通,YI却有输出,这种现象只能通过OUT指令的执行特性和程序的扫描执行过程来说明。
对于图3-77的程序,定义FMT为2,小数点后的数据为2位,小数点以“.”表示。转换后的数据应为12.34对应的ASCII码“0031 322E 333 34”(参见表3-5)。
S7200转换指令中的ATH、HTA是十六进制数与ASCII码间的转换指令,梯形图编程相似,ATH指令的程序格式如图3-78所示。
ASCII指令的程序格式
梯形图中的 ATH为ASCII码转换成十六进制数的指令(HTA:十六进制数转换成ASCII码)。IN为需要转换的数据;OUT为转换结果存储器起始地址;LEN为转换数据的长度,单位为字节。
对于图3-78中的程序,假设VB40以后的连续8个字节存放的分别是ASCII码“3235、41、43、36、38、46、32",转换成十六制数后为"35AC68F2"(参见表3-5)。
ATH、HTA指令编程需要注意如下两点。
a.每次可以转换的ASCII代码数量不可以超过255个;
b.ASCIl码必须为十六进制数可以对应的字符0~9、A~F(即表3-5中的代码编号30~39、41~46,其余代码为非法)。
当X0接通时,第0行,Y0=1,执行结果马上影响第2行,Y0触点动合,Y1=1。到第4行,由于X1断开,但OUT指令仍然得到执行,使Y0=0,执行结果马上影响第6行,Yo触点不动作,使 Y3=0。由扫描原理可知,输出 Y 的状态是以 I/O 映像区中*后的状态在END指令执行后统一刷新送到输出锁存存储区中,传送到各相应的输出端子,结果是Y1=1,Y0=Y3=0。正是OUT指令的这种执行特性和梯形图的扫描,才产生了所谓的双线圈问题。
再来看看图5.1-9(a),图中Y0用OUT指令和SET指令分别驱动了一次,这是另一种形式的双线圈输出。这种程序会不会同样存在线圈驱动互有影响而得不到预想得结果呢假定X1接通,X0断开,希望得到Y0=Y1=Y2=1的输出结果,但实际上,X1接通后,SETY0指令使Y0=1,到第6行,Y2=1,重新扫描原第0行,执行OUT指令,Y0=0,到第2行,Y1=0。这就是为什么实际运行结果却是Y0=Y2=1,Y1=0。当X1断开后,Y0应该保持置1状态,但实际监控结果却是 Y0=Y1=Y2=0。为什么?因为,X1 断开后,Y0 保持置1状态。但扫描到首行时,由于X0断开,OUT指令执行使Y0的状态由1变为0,相当于执行了一条RSTY0指令,Y0=0,使Y1=0,如果这时X1已断开,则SETY0指令得不到执行,而又使Y2=0,程序执行的*后结果是Y0=Y1=Y2=0。在含有OUT指令输出的双线圈输出中,由于OUT 指令执行的特性会使输出状态互相影响而导致程序运行后得不到预期的输出结果。
图5.1-9 双线圈输出程序例2
对图5.1-8和图5.1-9的双线圈程序分析可以得出这样的结论:双线圈输出不存在编程语法错误。编程软件可以接受双线圈输出,但由于两个线圈的驱动互有影响,在程序结构复杂时,会得不到程序设计所预想的结果,导致控制失误。在梯形图程序中,应避免出现双线圈输出设计,特别是输出继电器Y的双线圈输出设计。
PLC**地址的定时器与计数器
a.定时器T与计数器C。定时器T、计数器C的地址以十进制位的形式指定,格式相同,具体如下。
定时器:T***,可以使用的点数取决于PLC的型号,且可以使用T**8、T**9;计数器:C***,可以使用的点数取决于PLC的型号,且可以使用T**8、T**9;定时器、计数器可以以二进制位的形式使用,在这种情况下,相当于一个延时继电器(或计数器)的常开触点,在延时(或计数)到达设定值时,触点接通。它们还可以以字的形式使用,在这种情况下,相当于通过数据操作指令读取16位的定时器、计数器的当前定时、计数值。
b.速计数器输入HC(仅S7-200有)。高速计数器为32位信号,只能以"双字"的形式进行读入,其地址为HC0~HC5。
高速计数器用于记录频率高于PLC循环扫描速度的外部输入脉冲信号,它能对PLC循环扫描不能检测的外部信号进行计数。每个高速计数器有一个带符号的32位当前值(HC),高速计数器的当前值通常只能读取,且必须以双字为单位进行;高速计数器的数量取决于CPU型号。
但也有例外,如果双线圈输出并不在同一扫描周期内,则不会产生双线圈输出问题,如利用条件转移指令CJ设计的手动、自动程序。由于手动和自动程序不会在同一扫描周期被执行,在这两个程序段可以允许有相同的线圈输出,并不构成双线圈输出。类似的还有STL指令步进程序SFC梯形图。在步进程序中,由于一定时间仅在一个状态被激活,在一个状态里不能出现双线圈输出,而在不同的状态可以有相同的线圈输出,这不叫作双线圈输出。但也要注意,两个相邻状态也不能出现相同线圈的输出。
六盘水S7-1200PLC西门子代理商原装现货 六盘水西门子S7-1200PLC代理,六盘水西门子PLC代理,西门子S7-1200PLC代理,西门子PLC代理
3.双线圈驱动
在梯形图程序中,如果相同的位元件输出仅出现在功能指令的操作数中,在一个扫描周期内出现在两个或两个以上的功能指令,则称为双线圈驱动,以示与双线圈输出的区别。
双线圈驱动属于指令的操作与驱动,关于功能指令的执行已在上面给予说明。由于功能指令仅在驱动条件成立时才执行,而当驱动条件断开后,执行结果仍然被保存,直到下一条功能指令改变执行结果为止。双线圈驱动不存在双线圈输出那种输出驱动互相影响的情况,双线圈驱动是一种正常的编程。
在双线圈驱动中,如果多个功能指令驱动一个线圈,线圈的状态则以*后一个执行的功能指令的操作结果为准。图5.1-10为一个多次用SET,RST指令对Y0进行操作的程序。Y0的状态决定于*后执行的SET、RST指令,而与指令在梯形图中的位置无关。如果有几个指令被执行,如先接通X0,又接通 X2,再接通X1,则 Y0 的状态由*接近 END 的功能指令执行结果决定,图中,为X2所驱动的SETY0指令*接近END指令,Y0=1。而不是*后执行的X1所驱动的RST Y0指令。