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,试了下, 跟西门子的 symbol table 一样,都是以 csv 文件保存的,不外也发 现了中文表明偶尔会变“乱码”。记得看过讲对如何办理 ab 导出 变量表的中文乱码题目题目,找了下这篇文章,底本乱码切实是 unicode 码,作者编了个 vb 小法度榜样,固然也大概在 excel 内里编写个 vba 代 码,大概有人说用某网页的内码转换去办理也大概。(啥时候看看 vba 的书?) 接下来再看看 16 版本新增的 add-on instructions,之前粗粗的研 究了下,记得是大概编写本人的模块在各个工程间多少次再三操纵。因此决 定用 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 内里形貌:
The JSR instruction jumps execution to a different routine. The SBR instruction passes data to and executes a routine. The RET instruction returns the results. 从 ST 来看用法: Main routine JSR(routine_1,2,value_1,value_2,float_value_1); Subroutine SBR(value_a,value_b); <statements>; RET(float_a); 明白了,Jsr 是调用子法度榜样,sbr 跟 ret 是界说子法度榜样的接口。试着 写一个子法度榜样,发明 SBR 跟 RET 中的 TAG 既可以是 Controller TAG 也可以是 Program Tag, 但必须提前界说好,这有点贫苦, project 在 之间如何能复用呢?岂不是每次都要界说一下接口变量的 tag??? 这岂非就是之前 ab 被人说的不好的地方?不外既然如今有了 add- on instructions,那么我想 sbr 指令大概少用点了。 去 百度 了下,找 sbr 的帖子,公然有人问。 http://www.gongkong.com/Forum/ForumTopic.aspx?Id=2008042415 271100001
帖子内里有人提到参数调用大概用核心变量来实现???岂非是间 接寻址?? 接下来,不晓得该研究啥题目题目好了,头脑有点乱,爽性欣赏一下 logix5000 编程手册: 第 6 章:别号(Alias)的用处: 大概给一个 IO 装备指定一个成心义的名称 (由于 IO 装备 tag 由体系 主动天生);-本质就是给外部 IO 变量定名 大概给数组的一个元素供给一个形貌名; 第 7 章:间接地点 竟然是数组???误感触是间接寻址了。再次夸大:ab 不地点的 见解,只有 tag 名。 第 8 章:缓存 IO 的见解 由于 IO 数据革新与法度榜样推行不合步, 是以大概在法度榜样开端前 copy 一 下输入灯号暗号标签,法度榜样竣过后把输出成果去更新究竟的输出灯号暗号标 签。这点近似于西门子默认的进程映象区的见解,很轻易明白,只是 ab 须要本人做一下,而西门子是默认的。反从前讲,ab 是破即更新 io,而西门子则须要指定一下。 第 12 章:把持器的串口毗连 ASCII 装备
在 controller 属性内里大概决议串口采取 system protocol 还是 user protocol,后者大概撑持 Ascii 跟 谈。 第 15 章:妨碍措置法度榜样,看来近似于西门子的妨碍 ob 第 20 章,加密法度榜样。须要安装“rslogix5000 源粉饰软件”? 16 版本的 Rslogix 不须要象手册内里说的那样再安装粉饰软件,而 是直接从 tools 菜单-security-configure source protection, 如果体系找不到暗码文件(sk.dat)则要先指定一个,加密实现猬缩猬缩猬缩 出 logix5000,尔后把 sk.dat 文件移走便大概。须要解密的话,就 须要指定该文件的职位。加密工程,还大概对全数 project 加密,似 乎不须要吧。 学的有点乱哄哄的,总结一下前面的成果: 1、软件安装,收罗 rslogix5000、rslinx 跟 rsemulate 2、工程成破后,界说 tag,批量导入跟 导出,中文乱码办理,tag 的 别号(alias)的用处,tag 的 scope 要正视; 3、task 跟 program 的见解,连续跟 周期 task,主 program 跟 subroutine,如何界说跟 调用 subroutine(jsr、sbr、ret) 4、16 版本新增的 add-on instructions 如何界说、导出跟 导入 5、编写了 st 跟 fbd 的法度榜样举行测试,有了开端映象
6、缓存 io 的见解跟 用法 7、cpu 串口的设置,大概用来 ascii 通讯――有待背面细致研究 8、法度榜样的加密,某个子法度榜样大概加密,全数 project 也大概加密 下一步,有多少个题目题目要研究一下: 1、把之前在 step7 内里写的一些模块用 ab 来重写一次,熟谙一下基 本指令的用法。 2、妨碍措置法度榜样如何写? 3、在线改削法度榜样的题目题目 三 把之前写的多少个西门子 scl 模块用 ab 的 st 语言重写一遍, 收罗流量 开方、小灯号暗号切除跟 堆集。发明写起来很轻松,贫苦点的就是 ab 的 add-on instructions 内里界说变量是填表格情势的,而西门子都 是用文本情势本人输入的。代码就轻松多了,直接从 scl 内里 copy 从前,check 一下有不弊端,大部分语句都大概直接操纵,但是在这 里发明白多少点 st 跟 scl 的辨别: 1、ab 的 st 在某些方面比西门子的 scl 要暴虐一点,比方 bool 量的 关头字,ab 只撑持 0、1 的赋值,不撑持 true、false(岂非须要做 甚么设置么???),而西门子的 scl 是都撑持的。又比方西门子的
return 语句,ab 不撑持,查了下,return 语句是 iec61131 内里规 定的一个标准语句。而在 ab 内里,找了半天,究竟了局找到一个变更的 指令:tnd。 2、西门子的 in_out 跟 out 辨别很大,特别是用 db 变量赋值参数的 时候,但是我没看出来 ab 的这两种参数有何辨别? 别的,ab 的 add-on instructions 调用时指定的布局变量,有点类 似于西门子的 fb 的背景 db。 下一步,写多少个包罗定时器跟 较多巨大指令的模块,进一步看看 st 跟 scl 的辨别。 四 对定时器参数的用法, 从工控网论坛上找到一篇帖子, 写的很具体: ――――――――――――――――――――――――――――― ―― RSLgix5000 中子法度榜样的内部操纵的输入、返回参数称之为“形参”, 子法度榜样的调用者供给“实参”,以颠末进程子法度榜样实现某种把持哀告。子 法度榜样是由“形参”庖代“实参”来推行的, 对个别的如 BOOL, DINT 等的数据范例, 大概很轻易地实现“实参”对“形参”的赋值。 但是, 计时器等由于把持了 CPU 体系的资源,比方“时钟停止”等,是以不 能像上述范例数据那样大概用赋值的体例实现。 要想操纵计时器就必
须得阐明一个,以便体系能对此计时器举行把持。如果子法度榜样的“形 参”可以是深邃的计时器,那么对 N 个子法度榜样的调用,这个“形 参”计时器就必须实现 N 个计时器的成果, 较着对只能实现一次计 时的深邃计时器是没法实现的, 以是子法度榜样中是不成能有深邃计时器 作为“形参”的。如许便大概明白为甚么 RSLgix5000 子法度榜样中,不 能操纵计时器作为“形参”。 但是,享誉中外,西门子 S7 系列 plc 的 Step 7 编程软件中的 FB, FC 成果块,也就是子法度榜样,大概实现计时器作为子法度榜样的“形参”, 这如何解释呢?切实,在 STEP 7 成果块,大概说是子法度榜样中闪现的 计时器,固然外形跟 深邃计时器一样,但是根据上面的叙述,咱们可 以肯定其并不是是深邃计时器,而是一个“伪计时器”,着实的计时器 应当是阐明的那一个,也就是作为“实参”的那一个。因此可知,每 当子法度榜样被调用推行的时候, “伪计时器”将作为“实参”的那一个 着实的计时器的参数, 诸如, 计时当前时候, 计始终刻到等参数读入, 然掉队行跟 深邃计时器一样的把持。 固然也收罗将“伪计时器”的启 动条件赋值给“实参”计时器,以便使“实参”计时器启动事变。这 样便大概实现子法度榜样中的计时器作为“形参”的成果。也是说,它的 “形参”计时器是颠末特别计划的,并不是深邃的计时器。 是以,西门子 Step 7 中的子法度榜样中的计时器,本质上仍旧操纵了声 明过的,子法度榜样外部的深邃计时器。对 RSLgix5000 来讲,要实现 子法度榜样中的计时器成果也是一样,操纵子法度榜样外部的计时器。
RSLgix5000 子法度榜样操纵计时器的体例 由于在 RSLgix5000 梯形图子法度榜样中,不实现“形参”成果的“伪 计时器”,以是只能在全局变量中阐明的计时器。为了便于在子法度榜样 中操纵这些计时器,咱们将这些计时器放在数组里,如许子边幅法度榜样只有 一个数组下标变量,便可操纵这些计时器。但是,很遗憾,在 RSLgix5000 梯形图中是没法操纵数组下标变量的,是以,咱们就只 能操纵 ST 即布局化文本,一种近似于 PASCAL 语言的编程东西,它提 供完全的数组撑持。 举一个例子,如果要实现 3 个计时器的时候设置事变,对梯形图来 说,即便是操纵数组,由于它不能操纵数组下标变量,也只能是采取 一个一个的赋值体例,即,T[1].PRE = 1000,T[2].PRE = 1000, T[3].PRE = 1000 等等。如果子法度榜样也采取一个一个赋值的体例,就 不任何上风,还不如不操纵子法度榜样来实现,如许的子法度榜样是毫偶然 义的(不带“形参”的子法度榜样除外)。如果采取 ST 布局化文本,由 于其数组下标可操纵变量,便大概用子法度榜样实现,子法度榜样以下所示。 FOR I := 1 TO 3 BY 1 DO T[I] := 1000; END_FOR; 如许就很符合子法度榜样操纵,非论是有 100 个还是 1000 个计时器,也 都只是操纵这一个子法度榜样, 便大概实现全部计时器的计始终