1. 数据类型
常用数据类型和西门子类似,SINT(短整形)、INT(整形)、DINT(双整形)、REAL(实型)、STRING(字符串)。区别就在于,西门子多了无符号整形(USINT、UINT等)、WORD(实际应用中我也把它和INT混用),并没什么影响。
如上图,我建立了一个SINT变量,可以看到,可以单独访问SINT的每一个位,这一点做的比西门子灵活。右侧复选框可以选择显示方式,2进制、10进制、16进制及ASC码显示均可轻易切换。
上图为字符串。可以看到,字符串名.LEN变量指明了此字符串包含元素数量,字符串名.DATA数组指明了每一位的数据。其实西门子的数组也是类似的存储方式,但是表达不如AB清晰。
2. I/O地址问题
使用AB的PLC,可以把I/O地址这个想法抛弃了。什么I0.0、Q0.0,根!本!没!有!
如上图,当你工程加入PLC后,会自动加入Local1的一些标签,Local:1:I表示PLC的输入点,同理Local:1:O表示PLC的输出点。Local:2表示PLC本机扩展的第一个模块,以此类推。图中可以看到,我第一个扩展模块是8位输入模块。本机16DI&16DO,扩展模块是8DI,所以Local:1:O.Data是0-15,而Local:2:1.Data是0-7。
如上图,我先定义一个标签InS1,然后点击红色方框,选到Local:1:I.Data,选择12,这个标签就和PLC的第12个输入地址连接起来了,程序中就可以直接调用InS1。当然,也可以直接调用Local:1:I.Data.12,效果是一样的,只是自定义标签用起来可读性更高。输出点及扩展模块类似,不赘述。当然连接的不只是输入输出点,中间变量也可以用标签连接。你定义一个INT,也可以用类似的方式连接他的某一个点。
3. 标签表
项目建立好后会自动生成Controller Tags,默认生成的标签都在里边。Controller Tags生成的标签可以在程序中任何地方调用。建议,尽量把所有的标签都放到这里边,虽然会很长,看起来头疼,但是用起来方便一点。
4. 任务(Tasks)
任务分为三种:MainTask(主程序任务)、Periodic(周期性任务)、Event(事件任务)。主程序是一定要有的。周期性任务可以设置多长时间执行一次,秒脉冲方波就是用这个程序生成的。事件任务项目用不上,我就没玩。
在Tasks上右键,点击New Tasks,可以新建任务。在Type中可以选择周期性任务和事件任务。如上图,选择周期性任务,在红框内设置该任务多长时间执行一次。该参数可以更改。
5. 建立程序
如上图,在MainTask点击右键——Add,点击New Program,即可在主任务中增加程序。主任务中的程序会一直执行。Pulse是我建立的一个周期性任务,也可以同样的方式增加程序,该程序就按照Pulse中设置的时间周期性执行。
6. 自定义
(1) 数据结构体
在Data Types——User-Defined右键,New Data Type,可以新建结构体。
如上图,可以往结构体内添加各个元素。另,数组的设置方法是,在上图所示的Dim0中填入数字,即可设置数组长度。
和西门子一样,结构体定义好以后,就可以在建立变量的时候选择该数据类型了。
(2)附加指令(函数)
老规矩,Add-On Instructions右键——New Add-On Instructions,可以新建自定义指令(实际上就是函数,觉得叫函数更习惯)。如我建立的Mode函数,用作手自动切换程序。
每建立一个函数都会自动生成两个文件,一个是Parameters and local Tags,这里是标签,对应西门子的FB/FC就是定义变量的地方。另一个是Logic,就是写程序的地方。点开Parameters and local Tags,添加新标签,可以选择为Local Tag(相当于静态变量)、Input(输入)、Output(输出)、InOut(输入输出)。建议Input访问方式选择Read/Write,原因以后再讲。
双击Logic,可以编写逻辑程序。
★在函数文件夹上右键——Open Definition可以打开设置选项。最重要是Parameters选项卡。在图上红框部分。绿框部分可以设置调用程序时是否显示该标签。
以此程序为例,我在主程序中,Add-On选项卡中找到Mode函数,拖到梯形图中。程序段如果没有问题,线是蓝色;有问题,线是红色。可以看到我填写了两个参数:ModeDB和InAutoKey。ModeDB相当于西门子FB的背景数据块,是需要建立的。
如果没有建立,可以现在里面填入标签名(例如ModeDB1),然后右键——New ModeDB1,出现标签创建设置界面。Scope选项卡选择将该标签建立在哪里。前面已经讲过了,如果条件允许,建议都放到主标签(Controller Tags)里(把这个选项卡一直往下翻到底,PLC标志项目名的就是)。然后点击Create,该标签建立完成。几乎所有标签都可以用这种方式建立,反正我是没有遇到不行的。还可以在Usage选择标签类型。如函数里边就需要选择输入、输出等。
好了,这些步骤都是为了前面一步做准备。
回到前面★部分,绿框中我勾选了AutoKey一行的两项,所以我程序里需要填写AutoKey的标签。没有勾选的都可以不填!西门子的FB/FC,每一个管脚都得填,相对来说AB节省了一些工作量。举例,我程序中涉及到两个触摸屏的按钮:HMIAuto和HMIManual,按照西门子的做法,我需要先建立HMIAuto和HMIManual两个变量,但是AB不用,我只需要在触摸屏上使用ModeDB. HMIAuto和ModeDB. HMIManual就行了,不需要新建额外的标签(一会标签一会变量烦死了)。下边那个数字1不用管它,如果你填入了某个数值,那就是默认值。