AB PLC梯形图下的MOVE指令来看AB PLC编程的一些特点
说明:
AB PLC很早以前接触过,不过没有认真去了解过,这段有时间就来细看一番,发现它和西门子的PLC编程方法和理念还是很不一样,虽然我也用过美国GE的plc,但是还是和这个AB的很不一样,因此AB的PLC有必要仔细的学习一下,故有此随笔。
正文:
Rockwell Allen-Bradley也就是罗克韦尔AB PLC的英文名称,后边我都说AB PLC了。目前AB plc的软件版本非常多,我主要使用RsLogix 5000和Studio 5000这2个软件(需要说明的是这是两个不同的软件,可能你搜索软件的时候都是叫RS5000,但是下载下来却发现是Studio5000),因此后续的文章也都主要是这个2个软件环境下的讲解。
今天本文先来讲一个简单的MOVE指令,让朋友们感受一下,AB PLC和西门子PLC有多大的区别。
MOVE指令的区别
这个图片的上边部分是STEP7软件中西门子300项目中的一个MOVE传送指令,实现把MW20中的值传送给DB1.DBW20中。而下边的这个是AB PLC软件中的MOVE传送指令,这个指令中的source是源,来源的意思;而这个dest不是桌子的是意思,是destination目标,目的地的意思,所就是把来源的数据传送到目标数据中的一个传送MOVE指令。
Move指令不就是把一个数据传送到另外一个数据么?为何AB PLC中的Move指令右侧有四处问号呢?
其实,帮助文件中也没有解释的太清楚,不过我可以测试,请看下图:
AB PLC move指令
这个图片是我把3个图片整合在一起了,图中①是离线时候的原始程序,所以②③图片的左右两侧的母线是绿色的粗线,而①处则没有,因为是在离线状态。
①和②的程序是一样的,是都没有执行时候的程序状态,可以看到TP1下的箭头处是20,TP2下的箭头处是0,TP3下的箭头处是45。而当我把两个MOVE指令前边的常开接点让其接通的时候,可以看到③处Local:2:Data.0两侧的横线变为了绿色表示该接点接通了,而此时TP2和TP3下方箭头的数值都变成了20。---这样的程序接通前后的变化,就可以说明箭头所指的数据,可以理解为是你定义的初始值,比如TP1和下边的20,就相当于TP1的初始值定义为20,TP2的初始值定义为0,TP3的初始值定义为45,经过MOVE指令的传送后TP2和TP3中的值都变为了source中的值。
箭头所指的值是初始值,那TP1是由何而来呢?是我创建的一个标签名字或者说一个变量名字!
示例图片1
AB PLC中的变量系统设置应该说和很多PLC的变量系统设置不一样,因此在使用很多指令的时候都需要建立一个标签。这里先说一示例图片1中Dset处的35为何我放置了一个错误的x号,因为Dset处是只能放标签tag的是不能放立即数的,在程序编译的时候会报错!
再来看一下下方的AAA,就是我要创建的一个标签名字,是随意取的。在没有定义这个AAA之前,我只是在这里写了个AAA,那么下方的??处,将无法写入数值,必须对AAA有个明确的定义,让系统知道你是创建了这个AAA的tag才行,见下图:
创建Tag
该图右上角的Creat就是创建的意思,即使你的一切设置都是按照这个默认设置去设置,也要进入这个画面点击一个这个Creat,这样才算告知系统已经创建了一个叫AAA的变量,进而上边图片中下方赋予初始值那里才能写入数值!
再开看一下之前程序运行时,创建的标签在监控中的情况:
TP2标签的值
这个图片可以看到TP2标签的值是20,TP2是一个DINT类型的变量,所以它是32位的,可以看到有32个位,TP2.4和TP2.2这两个位的值都是1,也说明了TP2中的32个位,数据排列的方法是T2.0是最低位,TP2.31是最高位。
MOVE指令大概就说到这里了,我想朋友们应该已经能看到,还是和西门子PLC有很多不一样的地方。感谢阅读,如果有问题欢迎留言和批评指正,谢谢!
S7-1200 PLC的移动操作指令介绍
前面给大家介绍了数学函数指令,接下来就接着介绍一下移动操作指令吧!
S7-1200 PLC的移动操作指令也包括有多个(如下图),不过这里我们不会所有的指令都介绍一遍,这里就介绍一些常用的移动操作指令,比如移动值指令MOVE,可以说是相当于我们说的传送指令,还有块移动指令MOVE_BLK、填充块指令FILL_BLK、交换指令SWAP、读取域指令FieldRead与写入域指令FieldWrit。
下面我们就开始讲解咯~
1、移动值指令MOVE
移动值指令MOVE,就相当于是我们S7-200/200 SMART PLC中的MOV传送指令,是用于对存储器进行赋值,或者把一个存储器的数据复制到另外一个存储器中,还可以用于清零功能。对于这个指令进行移动复制之后,源操作数的数据是不变的。
我们可以通过点击指令下方的增加管脚的按钮,增加一些输出管脚,这样就可以实现将源操作数的数据复制到多个目标操作数里面去。
对于移动值指令的操作数可以支持基本的数据类型、复杂的数据类型也是可以支持的,但是我们需要注意的是,如果使用复杂的数据类型时,我们需要保证源操作数和目标操作数具有相同的格式才行。
如果要把一个数组的数据复制到另外一个数组,我们需要保证两个数组的元素个数相同,元素的数据类型相同。
2、块移动指令MOVE_BLK
块移动指令是将源存储区的数据移动到目标存储区,注意是有多个存储器的移动,IN是源存储器的首个元素,COUNT是指定需要复制的元素个数,OUT是目标存储器的首个元素。
注意,这个指令只适合于数据块中的数组进行移动,如果需要对非数据块的存储器进行块移动是不能使用这个指令的,比如说将MB0~MB5的数据移动到QB0~QB5,这时不能使用MOVE_BLK指令。
上图的程序首先是创建DB块,再分别创建DATA和数据的数组,元素数为5个,即0~4,所以我们可以看到有以上这些数据,这个指令的功能是将函数DB块中的数组元素DATA[2]、DATA[3]、DATA[4]的数据分别移动到数组元素数据[0]、数据[1]、数据[2]中。
3、填充块指令FILL_BLK
填充块指令可以对数组中连续的元素写入相同的数值,比如对一个数组中的连续N个元素进行赋值或清零时可以利用这个指令去实现。IN是需要填充进入的数据,COUNT是存储器个个数,OUT是需要填入的第一个元素的地址。这个指令跟块移动指令一样,也是只适合于数据块中的数组中连续元素进行填充数据。
上图的程序是将20这个数组填充到函数DB的DATA[0]开始的数组元素的一共5个元素中取,监控的结果是DATA[0]、DATA[1]、DATA[2]、DATA[3]、DATA[4]里面的数值都是20。
4、交换指令SWAP
交换指令可以将输入操作数的数据的字节的顺序进行调换,也就是实现高低字节的交换,交换指令支持WORD和DWORD这两种数据类型。
我们可以监控指令的执行情况,可以以十六进制的数值显示,这样也方便我们去查看。比如16#1234,交换之后是16#3412,而对于16#12345678,交换之后是16#78563412,注意不是16#56781234哦。
5、读取域指令FieldRead和写入域指令FieldWrit
读取域指令和写入域指令主要是用于间接寻址的功能,可以用该指令对一个数组中的任意元素的值进行读取或写入的操作。
读取域指令用于根据指定的元素下标值,读取除对应元素的值,指令中的INDEX管脚是元素的下表值,为DINT的类型,MEMBER管脚是指定数组中的第一个元素地址,VALUE管脚用于存放读取出来的数据。
写入域指令用于根据指定的元素下标值,把VALUE的值写入到对应下表值的元素中,指令中的INDEX管脚是元素的下表值,为DINT的类型,VALUE管脚表示需要写入的值,MEMBER管脚是指定数组中的第一个元素地址。
不过过于博途V14以上的版本软件,对于数组的下标值可以通过变量进行表示,所以读取域指令和写入域指令使用得也比较少,大家了解一下有这样的指令就可以了。
以上这些就是移动操作指令的介绍,对于西门子S7-200/200 SMART中我们叫传送指令,包括有MOV、BLKMOV、SWAP指令,还有表指令FILL_N,其实跟我们S7-1200 PLC的这些指令的功能是差不多的,只是有一些小区别,不同的地方注意一下就可以咯。
移动操作指令部分我们就介绍完了,下一篇文章给大家介绍一下转换操作指令的使用,欢迎关注更新~
(技成培训网原创,作者:蔡慧荥,未经授权不得转载,违者必究)
相关问答
西门子plc,move指令怎么写?
就以西门子300的STEP7软件来讲一下吧,就算你问的是200系列的应该也是一样的做法,不过200的MOV指令更细分了。直接上图来讲吧,STEP7软件中要调出MOVE指令,在L...
欧姆龙NJ系列PLC有MOVE指令吗?
1.欧姆龙NJ系列PLC有MOVE指令。2.MOVE指令是一种在PLC编程中常用的指令,用于将数据从一个寄存器或变量传输到另一个寄存器或变量。欧姆龙NJ系列PLC支持MOVE...
geplcmoveword是什么指令?
geplcmoveword是字的移动指令,是把一个字的数据移动到另外一个字存储区里。geplcmoveword是字的移动指令,是把一个字的数据移动到另外一个字存储区里。...
S7-300PLC中的BLKMOVE(SFC20)怎么用?
CALL"BLKMOV"SRCBLK:=P#M50.0BYTE8RET_VAL:=MW80DSTBLK:=P#M150.0BYTE8参考这个看看就知道了这个程序的意思就是说:将MB...
三菱plc怎么插入直线?
要在三菱PLC中插入直线操作,需要编写相应的程序代码。以下是一个简单的示例:1.首先,在PLC编程软件中创建一个新项目或打开一个现有的项目。2.创建一个新的...
mov_w怎么使用?
PLC机编程中,MOV-W是移动字指令。功能与作用简述如下,因不同PLC的编程指令格式不完全相同,如需要详细了解请参考相应PLC机的编程手册。移动字节(MOVE)指令...
PIC的标准编程语言分别是?
指令格式:MOVWFf说明:MOVWF是MoveWtof的缩写实例:MOVLW0x0B;送0BH送WMOVWF6;送W内容到RB口说明:第一条指令0x0B(常数1...
plc当中MOVD1K1Y000这条指令什么意思?
K1Y000表示Y000~Y003(4个),如果是K2Y000则表示Y000~Y007(8个)以此类推。指令意思:k2变成0010然后放入Y003~Y000,即Y003=Y002=Y000=0,Y00...
怎样理解西门子PLC置位和复位指令?
说一点我个人的看法吧:置位和复位指令是PLC中最常见也最常用的PLC指令,基本的含义就是置位为1,复位为0。通常置位指令和复位指令是成对出现的,这样一个布尔...
三菱PLC中MOVK0Z0怎么解释?
三菱PLC中MOVK0Z0怎么解释,首先我们来分析下这条指令,这是一个数据传送指令MOV,K0表示十进制的0,Z0在三菱PLC编程软件中是一个特殊的数据寄存器,它叫做变址...三...