AB PLC学习笔记.pdf
文本预览下载声明
AB PLC 自学笔记
一
以前断断续续的学了一点,但大多是三天打鱼两天晒网;也参加了一
次培训,但是短短的课程、大量的产品介绍和难得的上机实验,很快
就忘记了学了点啥。翻开以前的学习记录,零散而杂乱,不少要点看
上去是那么陌生。也罢,再来一次打鱼又如何?
第一步,安装软件。
手上有去年培训的时候从老师那里搞来的 16版本的logix5000,以
前也安装过,里面有很好的英文语音教学,当时老师开玩笑说,可以
锻炼下听力。安装完logix5000 V16,再安装一个模拟器软件:
Emulate,安装过程中告诉我需要rslinx,昏,看来安装次序错鸟。
其实在安装logix5000的过程中,最后一些小工具的安装也提示我需
要rslinx 的,被我忽略了。于是安装rslinx,再安装emulate。最
后一步,把网上找来的授权导入。发现用老版授权的话,软件第一次
运行会提示你,现在16版本采用所谓的factorytalk管理授权了云
云,我不管,反正能用就行。
接下来的问题就是,怎么用这个模拟器?以前用过,但是忘鸟。只记
得要选择一个特殊的硬件,还好有份模拟器的使用手册,简单看了下
几个插图就回忆起来了,试了下,ok。个人觉得ab的emulate有点
别扭,因为用惯了西门子的plcsim,那个不需要选择什么特殊的硬
件,原工程就可以很仿真的download下去去模拟运行。而ab的东东,
却不能用真正的硬件配置,那么一个实际个工程文件必须修改下
controller才能去仿真了???
万事具备,就开始学习软件吧,从何入手呢?先找几个自己感兴趣的
问题研究研究吧。先看看变量的定义,ab的独特之处就包括tag是
以名称作为关键“索引”,没有西门子那种地址的概念,这样当然简
化了开发。那么如何批量的导入/导出变量呢?我用s7的编程习惯是
在excel里面编辑好变量表,再导入到程序里面。在logix5k软件里
面找了下,果然可以,tools菜单下有import和export,试了下,
跟西门子的symboltable一样,都是以csv文件保存的,不过也发
现了中文注释偶尔会变 “乱码”。记得看过讲关于如何解决ab导出
变量表的中文乱码问题,找了下这篇文章,原来乱码其实是unicode
码,作者编了个vb小程序,当然也可以在excel里面编写个vba代
码,或者有人说用某网页的内码转换去解决也可以。(啥时候看看
vba 的书?)
接下来再看看16版本新增的add-oninstructions,以前粗粗的研
究了下,记得是可以编写自己的模块在各个工程间重复使用。于是决
定用st编写一个max3 函数,就是在三个real数据中找一个最大的。
先定义接口变量,ab是在对话框里面定义,不象西门子的scl是完
全手工输入变量定义。模块写好以后check没有error,然后在main
program 中调用,check一下却总是报错。弄了半天,才回忆起来以
前碰到过这个事情,应该再定义一个类型为该模块的结构变量,调用
模块时填这个结构变量名就行了。然而这样的话,如果要把某个外部
io变量或者某个内部变量单独给模块的一个输入端,岂不是要先赋
值给这个结构变量的其中一个?太麻烦了吧,也不合情理啊。再看看
接口变量的定义,发现有req属性,看看help里面的描述,再测试
了下,原来关键就在于req是否勾上了。勾上req 以后,就可以用单
独的一个tag去填到这个参数去了。下一步就是模块如何在工程之间
复用呢?也很简单了,可以导入/导出成一个xml格式的文件,甚至
可以用ie打开,毕竟是标准的xml格式嘛。
最后一个问题,是program 的理解。以前做的笔记里面,写了默认每
个task下面的第一个program是循环执行的,其余program是被调
用的,测试下,果然如此。试着去修改program 的属性,图标上面有
个 “1”就表示了该program是被执行的。碰到了调用program 的问
题,我找了jsr指令,ms一共有三种指令:jsr、sbr和ret,下次
再研究吧。
ok,今天到此为止。
二
先解决上次遗留问题:JSR/SBR/RET三个指令有何区别?
看help里面描述:
TheJSRinstructionjumpsexecutiontoadifferentroutine.The
SBRinstructionpassesdatatoandexecutesaroutine.TheRET
instructionreturnstheresults.
从ST来看用法:
Mai
显示全部