PLC技术资料
    第五章:(2)s7-200 smart plc基本指令
    发布者:  发布时间:2023/4/16 6:04:27

    位逻辑

    关于置位和复位指令是这样用的:上面那个bit写地址,下面的n是写你要连续置位或者复位的位数。例如下面的那个梯形图,他是从q0.0开始,连续置位两位,也就是从q0.0开始到q0.1,两位都置一,然后下面的r也是,从这个脉冲开始,连续两位置零。

    置位优先和复位优先双稳态触发器指令

    这个和数电那个rs触发器是一样的

    bit是地址,然后看表格

    sr置位优先

    rsbitout
    1111
    0111
    1000
    00不变不变

    rs复位优先

       rsbitout
    1100
    0111
    1000
    00不变不变

    根据表格我们不难看出来,你看在sr置位优先的时候,我是s优先的,所以当我s作用的时候r是没有用的,只有当我s为0了,你r才起作用。

    同样的,在rs复位优先的时候,我只有在r等于0时我的s才能起作用。

    立即io指令

    立即指令就是不用等到cpu的扫描,执行后立即刷新或者采集输入,这样的速度就非常快了,因为是对物理输入点直接存取的

    立即输出指令

    只能用于输出继电器q,执行命令时立即执行。

    注意:立即io指令是通过直接访问物理输入输出点的,比一般指令访问输入/输出映像寄存器占用cpu的时间要长,所以不要乱用立即指令,不然会增加程序响应时间。

    立即置位和立即复位指令

    其实和之前的线圈是一样的,不同的就是立即两个字而已

    只能用于输出q,从指令开始操作的那个地址开始连续n个地址被立即置位或者立即复位并保持,n的取值范围为1-255,执行后,新值被同时写到物理输出点和相应的输出映像寄存器

    取反指令和空操作指令

    1.取反指令(not)

    将其左边的结果取反,例如一个常开触点,经过取反之后就变成了1,再往下一级传输

    2.空操作指令(nop n 【n取1-255】)

    这个对程序是没有影响的,相当于c语言里的空函数,在程序设计之初留下空白用的.

    正负跳变指令(上升沿和下降沿)

    分为两个:

    -|p|-是正跳变指令,就是上升沿触发,当上升沿到来的时候,产生一个宽度为一个扫描周期的脉冲

    -|n|-是负跳变指令,就是下降沿触发,当下降沿到来的时候,产生一个宽度为一个扫描周期的脉冲

    定时器指令

    接通延时定时器(ton)

    这个接通延时寄存器你可以理解为,我in输入,pt是设定值,然后例如我这里是pt=50,50x100ms就是五秒钟,i输入开始计数,记够五秒钟我就向外输出一个脉冲,但是如果这个时候i不断电我就会一直记数,直到最大值32767,在这期间,t还是保持on的状态,到32767就自动断开了。

    如果我i断电了,那就复位归零,马上断开

    保持型接通延时定时器(tonr)

    这个和之前那个最大的区别就是他断电后不会自己置零,而是累加一直到32767也不会掉下来,就会一直保持on的状态。直到直到我外部给他一个复位信号,就是i0.1那个复位开关,按一下线圈产生复位脉冲,t3这时候才置零。

    计数器(c0-c255)(数据类型为int整数)

    增计数器(ctu)

    首次扫描时,计数器位为off,置零。ld端是脉冲输入,来一个脉冲计一个数,pv是设定值,记到pv就整体输出为1,然后r是复位键,r来一个脉冲就置零。

    减计数器(ctd)

    一样的,只是首次扫描时,计数器位为0,当前值设定为pv值,然后来一个脉冲就往下减,减到0整体置1.

    增减计数器(ctud)

    对比普通的只有加或减的计数器他有一个比较特别的地方

    有cu和cd两个脉冲输入端,还有个r和pv是一样的

    脉冲嘛,就加到哪里就相应地增减就可以了

    但是!!!当记到最大数32767的时候,再加1就变成了-32768(16进制的#8000)当记到最小的数-32768的时候下一个再减就变成了最大值32767

    为什么是32767呢,因为plc每个地方都分配了16bit的空间,刚好16位数然后最高位是符号位,那剩下的15位就2的15次方就是32768.

    比较指令

    按照需求不同可以分为不同的比较。这个就不多讲了。

    (书p127)

    移位寄存器指令

    这是书上的说法,但是我觉得这个有点抽象,不好理解。所以看下面的例子。

    这是一个用移位寄存器控制的8盏小灯每隔3秒点亮,全亮3秒后全灭然后再循环。类似于一个流水灯吧大概是这样一个意思。

    看这个例子,en是使能位,这里的t37是作为脉冲发生器使用的,稳定隔3秒钟发送一个脉冲给移位寄存器。然后呢data位是数据输入口,这个程序用的是m0.0的数据,你可以看到m0.0在开头是被置一了的,所以他这里数据输入源永远是1.然后呢s_bit就是要移动的地址了,n是移位寄存器的长度。

    还有一个mov_b拓展以下,是赋值指令。移动字节指令将输入字节移至输出字节,不改变原来的数值。所以说可以看到in是0,out是vb100,就是把0移到vb100,相当于就是置零了。en是输入端,eno是输出端

    移位寄存器最高有效位地址的计算

    这是书上的算法,其实可以不用记公式,靠常识就能解决这个问题

    我们抛开公式不看,你看啊按照书上的例题

    v33.4往上移n=14位,那最终值是多少呢?

    每一个字节里面有8个位

    例如v33里面就有v33.0、v33.1…v33.7

    那么我v33.0移8位是v33.7,v33.0移16位就是v34.7

    那v33.0移14位呢?就是v34.5

    所以我v33.4移14位就是v34.5移4位,v34.6、v34.7、v35.0、v35.1

    这就是答案

    所以不用去记公式的,这样就能推出来。

    顺序控制指令scr

    这个看书p131,就不讲了。

    版权声明PLC信息网转载作品均注明出处,本网未注明出处和转载的,是出于传递更多信息之目的,并不意味 着赞同其观点或证实其内容的真实性。如转载作品侵犯作者署名权,或有其他诸如版权、肖像权、知识产权等方面的伤害,并非本网故意为之,在接到相关权利人通知后将立即加以更正。联系电话:0571-87774297。
0571-87774297