S7-1200模块CPU上海代理商
- 供应商
- 浔之漫智控技术(上海)有限公司总部
- 认证
- 报价
- ¥2400.00元每台
- 联系电话
- 15021292620
- 手机号
- 15021292620
- 销售
- 颜娟
- 所在地
- 上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
- 更新时间
- 2023-12-06 16:32
s7-1200模块cpu上海代理商s7-1200模块cpu上海代理商
西门子s7-200模拟量模块6es7232-0hb22-0xa8
西门子s7-200模拟量模块6es7232-0hd22-0xa0
西门子s7-200模拟量模块6es7235-0kd22-0xa8
西门子em223数字量模块6es7221-1bh22-0xa8
西门子em223数字量模块6es7221-1bf22-0xa8
移位指令有左移也有右移,移位指令也分有字节、字、双字类型的移位,同样的,循环指令也有左移右移,也有字节、字、双字类型的循环。除此之外,我们也可以在指令列表看到还有shrb移位寄存器指令。这些指令我们都要灵活地掌握,掌握了这些指令,在以后编程的时候有时可以做到简化程序的效果,所以它还是比较有用的指令。
下面先学习一下移位指令,移位指令格式里面有使能输入、输入、输出和移位位数n。下面就以字节移位指令为例看一下,字节左移shr_b和字节左移shl_b指令是将输入字节(或字或双字)数值根据移位位数向左或向右移动,并将结果送输出字节(或字或双字)。我们要注意的是对一个数左移一位相当于乘以2,右移一位相当于除以2。
对于移位指令,我们要注意的是移位指令是对每个移出的位进行自动补0的。如果移位位数大于或等于8(或字操作16或双字操作32),那么数值多是被移位8(或字操作16或双字操作32)次的。当移位位数大于或等于大允许值时,其实就相当于进行清零的操作。
除此之外,我们还要注意特殊内存位的使用,对于sm1.0,如果移位结果是零,则sm1.0被置位;对于sm1.1,就是把后一次移出位的数值被复制到sm1.1,要注意这个前提是移位位数大于0。我们要注意的是sm1.0和sm1.1是会自动复位的。
就以下面这个程序来说明一下指令的使用,这条指令是i0.0接通执行移位操作,它是接通一次移位一次的,若vw200写入的是11100010 1010 1101,因为移位位数是3,那么移位的后结果是0001 0101 01101000的。因为移位位数是大于0的,后一位移出位的数值是1,那么就把sm1.1置为1。
下面再学习一下循环移位指令,循环移位指令格式里面一样是有使能输入、输入、输出和移位位数n的。下面就以字节循环移位指令为例看一下,字节循环左移ror_b和字节循环左移rol_b指令是将输入字节(或字或双字)数值根据移位位数向左或向右旋转n位,并将结果送输出字节(或字或双字)。
对于循环移位指令,我们要注意的是如果移位位数大于或等于8(或字操作16或双字操作32),那么执行循环移位之前要先对移位位数n进行模数8(或字操作16或双字操作32)操作,使得移位位数在0~7(或字操作0~15或双字操作0~31)之间,得到一个有效的移位位数。这里说的模数8操作是什么呢?它其实也就是对移位位数n除于8再求余数,举个例子,如果移位位数是20,那么20除于8等于2余4,那么4就是实际移位数目。
我们要知道如果移位位数为0,这指令也就没有什么意义了,它是不执行循环操作的。如果执行循环操作,也就是移位位数大于0,那么旋转的后一位数值被复制到sm1.1。对于sm1.1,还有如果移位位数不是8(或16或32)的整数倍,那么旋转出的后一位数值也被复制到sm1.1;对于sm1.0,当需要循环的数值是零时,sm1.0被置位。
就以下面这个程序来说明一下指令的使用,这条指令是i0.0接通执行循环操作,若ac0写入的是01000000 0000 0001,因为移位位数是2,那么移位的后结果是0101 0000 00000000的。因为移位位数是大于0的,后一位移出位的数值是0,那么sm1.1就为0。
下面就以小程序案例的形式讲一下这几个指令。
1、编写跑马灯程序,8个灯从左往右循环点亮,即每隔1秒点亮一个灯,周期循环。
2、编写8个灯先全部亮,接着8个灯从左往右依次熄灭,即每隔1s熄灭一个灯。
s7-1200模块cpu上海代理商s7-1200模块cpu上海代理商西门子电源模块代理商西门子交换机代理商西门子变频器代理商西门子电机代理商西门子电缆代理商西门子plc模块代理商西门子触摸屏代理商