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有很多不一样的地方。感谢阅读,如果有问题欢迎留言和批评指正,谢谢!
无论啥品牌的PLC,用这种编程方法来进行逻辑控制顺序控制都太棒
不管什么品牌的PLC,使用下面的方式来进行逻辑控制顺序控制,都是非常好的一种编程方法。既方便监控又可以随意跳转到哪一步。请改变一下我们的编程思维好么?我看那些人的所谓步进指令,还有大量的置位复位指令,非常不好阅读,也不好检查和更改。下面贴出利用三菱软件的编程图,其它品牌都一样可以采用(西门子更是如此)。
其实这就是ST编程里的ST语言的CASE语句的梯形图转换。
所以很多人说什么ST语言只适用于计算,不适用于逻辑控制什么的,我就呵呵了。ST语言也一样适用于逻辑控制,只是看各位编程人员擅长于使用哪种编程语言了。下面再贴出上述编程方式的ST语言下的控制:
下面是监视的过程:
这和梯形图下的顺序控制方式是一样的。
这种控制方式比那些所谓的置位复位要方便很多。建议从日系编程学习入门的朋友转变一下思维,摒弃那种编程方式!
看看网友的讨论:
莫头脑 said:
我看那些人的所谓步进指令,还有大量的置位复位指令,非常不好阅读也不好检查和更改 那他们的程序是否正常运行……
965528555 said:
正常运行是一回事,是否更具有阅读性或者说,是否愿意接受更好的表达方式那是另一回事。
1530694073 said:
我表示欧美系都是不步进顺序逻辑,可读性很强
cvlsam said:
真正的日系编程思维是这样的,当然译码编码指令其他PLC厂牌中也有。
D500就是显示运行到哪一步,M寄存器还可以在人机界面上做个跑马灯演示。
Good Luck~
gk_0 said:
我觉得置位复位挺好用的呀,也很直观呢。
楼主例子中大量使用比较、运算指令,如果几千步以上,那么扫描时间是否会比位指令长很多呢?
965528555 said:
这里首先我们明白一个问题,即不管你的程序是多少步,PLC的扫描永远是从程序的首端扫描到END,这个过程是一样的。
而PLC在扫描某一行时,通过你所说的比较运算指令即可判断该行是否成立从而是否继续扫描该行后面,反而可以节省时间,即该条件不满足就可以跳到下一个。而置位复位则不一样了,每行都得扫描完才能下一个。
其实是更节省PLC的扫描时间,比如CASE语句,第一行就会判断Step等于几,然后就直接跳到等于几的那行去扫描了。假如是一万步十万步,这中间就节省了非常多的扫描时间,但是置位复位就没这优势了。必须逐行扫描以免错过任何一个。
bnnyygy said:
一直都是这样写顺序控制的。
欧姆龙ST语音写的,E文不好,变量都是中文。
965528555 said:
非常好,也感谢分享。但是建议最好是使用CASE语句来写你这个程序部分,而不是大量的IF语句。
273708367 said:
感觉越复杂可读性越差,扫描周期也越长,每个人习惯不同改变也不是一朝一夕了。
chi1225 said:
每一步前面都要搞一个比较指令,感觉不好看,指令占的空间又大,发现还是用DECO(解码指令)比较好。。
965528555 said:
那是因为三菱的软件一显示注释就显得大,而且一个比较指令占用的空间长,将近三四列,西门子根本不存在这个问题,人家的一个比较指令就占用一列。
MIC小赖 said:
这个模式从06年的台湾东捷的机台上就已经看到了,目前我们这动作部分管控基本都是这样写的。
965528555 said:
有一种论调很不好,即“我们都习惯那么久了,改变不是容易的事,要么就是你说的也不好用,虽然我没用过但肯定不好用”。
这样想法不太好,之前我也是从日系入门学习的。后来我一学习西门子的时候我也是内心抵制它,一点也不好学,思想转不过弯来,不好用。后来我想我还是去熟悉它我才好判断它到底是不是好用,如果我熟悉它了它确实不好用我就舍弃它,用我认为好用的。
结果经过我的比较,发现西门子的PLC确实好用,那么我就接受它。
就文中所说的编程方法来说,我之前也是采用什么置位复位的方式,后来我看到国外的人是这样写,包括西门子博途软件的官方库写法,我觉得我可以先接受它然后运用一下,来写个实例,看是不是更方便,如果是,我接受,如果不是,我就舍弃。
有一次有朋友说西门子的触摸屏或WINCC的画面编辑用面板技术在某些场合非常方便。于是我就去了解它,当我学习并用面板技术做了一个HMI面面(比如现场十套控制几乎相同的过程画面),我觉得确实不错,那么我就去接受它。
所以如果在工作中有一种别人推荐你而你没有使用过的方式方法,请不要先拒绝,拿你那些老习惯来安慰自己来躲避。应该先尝试一下,然后对比一下,也许你会有所收获呢?或者说你可以试完了再骂人家这SB,不行啊,还是没我之前的习惯用法好。
yinguiyao said:
有步进指令的用步进指令,没有的就用你这个方法,如西门子200 200smart就没有步进指令。
用步进指令好处是不用考虑时序的问题,同一时间段只有指定步被扫描,而你这个方法要注意同一扫描周期相邻两步不被同时执行,例如在每步都加时间延时或者其它的办法。
我发过一个贴子,参考:
http://bbs.gkong.com/archive.aspx?id=463847
cvlsam said:
200中有步进指令,只是中文翻译成顺序继电器指令了。
同一个扫描周期相邻两步并不会同时执行,因为PLC扫描机制决定了顺序执行。
西门子中的Graph并不是步进指令,而是顺序功能,也就是其他厂牌中的SFC,之所以使用Graph,是因为在西门子的PCS7系统中,还存在SFC编程方式,为了区别,就如同西门子的ST语言翻译成SCL,因为和其语句表STL容易冲突。
Good Luck~
zhujilucj said:
我大部分用的还是置位复位指令,有少数几个程序也在用这种方法。这个方法特别适合跳跃分支多的程序。
微信网友也加入讨论:
Electric epoch said:
本人很赞同作者的编程方法,如果是结构化用这种方式会更好
启海 said:
不管作者的方式是否适合,但是有讨论有比较肯定能进步。
代奇伟said:
我一般写时序是通过移位指令写
William said:
我也是用这种方式写的.CASE语句里面写定时器需要注意一些。
耿彪 said:
使用DECO指令完美解决顺序控制
优态 said:
st局部运算用还可以,全用阅读性不好自己都会忘更别说其他人,这东西和高级语言还是有太大差距,好的程序不是有多花里胡哨,稳定,可阅读性才是王道。高级语言也是如此。
上虞宁 said:
其实St挺好使,之前不习惯现在戒不掉
吕·D·Will said:
case写流程很好,但是在日系个别plc里资源消耗非常大
如果你也想加入讨论, 链接在此 http://bbs.gkong.com/archive.aspx?id=470284
温馨提示:本文来源于中华工控网工控论坛(本号)网友和讨论,转载请注明出处。
相关问答
abplc好学吗?
abplc比较好学。1.因为abplc作为一种现代化的自动化控制工具,其使用程序基于可编程的逻辑控制器,相较于传统的电气控制,更为简化和标准化。并且其具有良好...
abplc如何读取温控仪温度?
您好,要使用ABPLC读取温控仪的温度,需要使用以下步骤:1.确认温控仪的通信协议和通信方式,例如ModbusRTU、ModbusTCP、OPCUA等。2.根据通信协议和...
plc里面A指令什么意思?
plc里面标准指令有LD、A、O、LDN、AN、ON等标准触点。详细解析如下:LD,取指令。表示一个与输入母线相连的常开接点指令,即常开接点逻辑运算起始。LDN,取反...
三菱plc编程中的MOV,BMOV,FMOV有什么区别,如何使用?
三菱plc编程中的MOV,BMOV,FMOV有什么区别,如何使用,MOV指令是传送指令,将软元件的内容传送或者复制到其他软元件中,这个软元件可以使数据寄存器D,也可以是...三...
ABLOGIX5000怎样在线监控PLC?初学,求详细的基本操作?
1,找个电脑,下好编程软件。2,设置好通讯协议,然后点上载。3,点击在线监控,就OK了。1,找个电脑,下好编程软件。2,设置好通讯协议,然后点上载。3,点击在线监...
三菱FX2NPLC编程软件怎么输入T0啊~时间的那种-ZOL问答
如果你是FX指令,那么就是使用ADD指令,如果是Q系列的,那么使用+指令。ADD指令为3个操作数的指令,因此,你需要输入诸如ADDD0D1D2OUTT0K100选它的常开LDT...
PLC编程中==B是什么意思?
==表示相等,B表示BYTE(字节),==B即两个字节或一个字节与一个数值比较,相等则有输出,比较数值时,数值是十进制==表示相等,B表示BYTE(字节),==B即两个字节或...
信捷plc顺控编程方法?
假设执行顺序为s1、s2、s3直至结束。在外界条件成立后置s1为"1"在s1段程序最后置s2为"1",依次类推。假设执行顺序为s1、s2、s3直至结束。在外...
PLC如何使用随机函数?
在PLC中使用随机函数可以通过以下步骤:1.首先,找到PLC编程软件中的随机函数或随机数生成器函数。不同的PLC品牌和软件可能会有不同的函数名称和语法,因此您需...
ABPLC与SIEMENSPLC编程软件怎么安装在同一台笔记本电脑上...
应该是没有问题这两种在一起可以安装在一台电脑上有分别的授权就可以200的是STEP7Micro/win300的是STEP7V5.4不同的软件淘宝不行自己也...