实战经验分享丨AB PLC调试笔记——程序篇
AB PLC调试笔记——程序篇1
1.软件
软件安装没啥好说的,STUDIO5000。AB有一点没搞明白,同一个软件,为什么要搞这么多版本号!我装了一个V20-V28,貌似更高的是V30多吧,没下。我试过,用V20建一个程序,可以很轻易的升级到V28,不像PORTAL,我接触到最早的V11到现在的V15,前面版本建立的程序理论上可以升级到高版本,实际应用效果却不尽人意,各种问题导致升级失败。不过AB这版本号,是不是升级的太勤快了一点,我都怀疑AB工程师整天闲的没事就商量着怎么升级版本玩……扯远了,我瞎说的。
2.硬件添加
西门子除了别人生的200系列等低端型号,遍历300/400到现在的1200/1500均逃不一点,硬件组态。AB的玩法完全不一样。首先,建立项目的时候你要选取PLC型号、版本号、扩展模块数量等。这部分均可以随意填,反正后期可以随意改。
点击图片查看大图
上图可见,版本选择了28,扩展IO模块根据PLC型号的不同,可选的数量也不同。L16为0-6,L18为0-8。这就是PLC本体扩展模块的数量。
建立程序以后,也可以在里面修改。
点击图片查看大图
如上图,在PLC型号上右键弹出窗口选择Propecties也可以修改各种信息,包括PLC型号。更改PLC型号及版本号点Change按钮,修改模块数量选择Expansion I/O后面的下拉菜单即可。
点击图片查看大图
在Expansion I/O处右键,选择New module,在弹出的对话框里面选择你要添加的模块,双击,填写你要定义的模块名字,就可以添加一个IO模块。重复上述操作直到设计的模块全部添加完成为止。如下图,我添加了若干DI、DO、AI模块。
点击图片查看大图
因为PLC支持的模块数量很少,更多的IO点需要扩展分布式IO模块,这部分内容我在选型篇中已经提到过。增加分布式IO需要在Ethernet上点击右键,选择New module,我选择的分布式IO为1734-AENTR。上图中,我在红框区域内填入了1734,故系统就将1734筛选出来了。
点击图片查看大图
双击以后弹出以上对话框,这里设置好需要连接的分布式IO通讯模块的IP地址。点击Change,这里填写分布式IO的一些设置信息。Connection是有关机架优化的选项,没怎么研究,按下不表(有兴趣可以参照一下AB的文档)。Size必须选!这里表示此分布式IO总共包含几个模块(包含通讯模块,例如,此分布式IO有1个DI模块,加上通讯模块,Size选2),确认以后就可以新建模块了。
点击图片查看大图
如上图,SIZE我设置了2,已经添加了一个DI模块,现在New module选项就是灰色,不能添加更多模块了。把SIZE改大,又可以添加更多模块。
这一点做的不如西门子灵活。西门子根本不用设置这么多乱七八糟的东西,把模块拖进去就行。并且西门子的组态更直观,通讯用线连起来,看起来像一份电路图,并且有缩微图显示,PLC、机器人、阀岛等一眼就看得出来(GSD有问题另说),很直观。
AB PLC调试笔记——程序篇2
1.数据类型
常用数据类型和西门子类似,SINT(短整形)、INT(整形)、DINT(双整形)、REAL(实型)、STRING(字符串)。区别就在于,西门子多了无符号整形(USINT、UINT等)、WORD(实际应用中我也把它和INT混用),并没什么影响。
点击图片查看大图
如上图,我建立了一个SINT变量,可以看到,可以单独访问SINT的每一个位,这一点做的比西门子灵活。右侧复选框可以选择显示方式,2进制、10进制、16进制及ASC码显示均可轻易切换。
点击图片查看大图
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不用管它,如果你填入了某个数值,那就是默认值。
*如果你也喜欢这篇分享,欢迎转到朋友圈*
中华工控网,转载请注明出处
投稿邮箱:blog@gkong.com
商务合作:0755-26546361
❦欢迎私撩,非诚勿扰❦
@工控人都爱关注的公众号
▲长按二维码关注