PLC高手必备技能,施耐德PLC与变频器的CANopen通讯程序编写
在前文 PLC高级应用技术,PLC与变频器的CANopen总线通讯控制之线路介绍,PLC高级应用,PLC与变频器总线(CANopen)通讯之硬件组态篇中分别向大家介绍了PLC和变频器的CANopen通讯的线路知识和硬件组态,当我们完成了上述两项任务之后,就进入了正题,通讯程序的编写,今天就给大家如何写程序。接上两篇,仍然以施耐德CODESYS平台的PLC编程软件Somachine 为例讲解。变频器采用施耐德ATV71。
当我们把硬件组态程序下载到PLC中之后,PLC会主动寻找从站,建立通讯连接,如果线路没有问题,从站的参数设置正确,PLC与从站之间的总线通讯会自动完成,PLC会给出通讯正常的信号,一般是个布尔量。施耐德CODESYS平台的PLC处理起来比较麻烦,需要利用几个功能块把它读出来,在这里不再展开讨论。一般我们都把这个状态做在触摸屏上,作为监控。但是,如果我们只是想看到这个状态,不做在触摸屏上,是可以在编程软件中直接看到的。
图一
如 图一所示,这软件中的硬件树,注意看红色的三角形,表示通讯是失败的,因为小编只是打开了仿真功能,并没有连接实际的从站。如果这个三角形是绿色的,就表示通讯正常了。在施耐德的Somachine软件中,所有的硬件组态都是采用此种形式来告诉编程开发人员,硬件是否正常。
小编曾经说过,欧美系PLC和日韩系PLC是不同的,欧美系PLC注重功能块的概念,不存在所谓的指令,因此,对于从站的读取和写入,都是通过功能块来完成的。由于是同一品牌的通讯,官方都已经开发好了专门的功能块,也就是符合PLCopen标准的功能块,我们直接调用接可以了。
对于变频器的使能采用 MC_POWER_ATV 功能块。其中前面的MC_POWER是标准的PLCopen功能块,后面的ATV是施耐德官方在开发此功能块时加上的后缀,用来区分不同的从站,ATV是施耐德变频器的型号代码。同样,不同系列的变频器和伺服驱动器时通过后缀来区分的。
图二
如图二所示,这是对两个从站的使能操作,注意看红色圆圈部分,这是对不同从站的区分,功能块中输入引脚Axis表示我们要操作的从站轴号,在欧美系PLC中,几乎我们能操作的对象都是可以定义成变量的,同样,对于总线通讯的不同从站,也是按不同变量处理。因此,此处我们要填写我们在硬件组态中定义的轴名称。
当变量A 和变量B 分别为高电平时,就会对变频器进行使能操作。 输出引脚STATUS 和 ERROR是表示使能状态的,同样,我们也可以引入变量对此进行处理。
变频器主要就是进行速度控制的,同样,它也是有相对应的功能块来完成的。
图三
如图三所示,通过MC_MOVEVELOCITY_ATV 来进行速度控制,大家可以看到,它是可以和使能模块共享轴号这个输入引脚的,这就是使用CFC编程语言的好处。当变量E_Fan为TRUE的时候,变频器就会以变量Vel_Fan定义的速度运行。
3 变频器的停止
变频器的停止和我们使用硬接线的停止是不同的,必须使用专门的功能块
图四
如图四所示,变频器需要使用MC_STOP_ATV 功能块来停止,当变量S_Fan为TRUE的时候,变频器就会停止。
以上,就是通过总线对变频器进行控制时基本的程序的编写,大家可以看到,采用CFC语言编写是非常便捷的,当然,日系PLC采用梯形图就可能不会使用此模式了,但可移植性大大降低。当然,控制变频器不止这三个功能块,还有很多,大家如果使用施耐德PLC可以参考相关手册,如果使用的是欧美系PLC,其套路是差不多的。
0716 「万泉河」PLC编程CFC语言在烟台方法中的地位
0716 【万泉河】PLC编程CFC语言在烟台方法中的地位
CFC原本是PCS7中的主要编程方式。
然而其中的CFC软件包可以单独安装在STEP7 V5环境下,即便在S7-300的编程中也可以使用。所以,有那么将近十多年,我都是大力主张用CFC编程的。
2008年, 西门子在新的PORTAL系统上线之前请我帮忙测试,所以我应该算是国内最早接触到PORTAL软件的TOP5, 全球也不超过20人之一。 网上现在还有人能翻到我当时访谈的视频。 那时候我是原原本本按照测试员的要求做了软件功能测试, 也把一套原本STEP7的程序移植到了PORTAL环境,演练了一遍,对软件的使用便捷性人性化赞赏不已。
但私下里, 测试员提出让我把程序应用到项目中,因为S7-300也支持PORTAL编程的。 我拒绝了。甚至更决绝的提出,在PORTAL支持CFC之前我是会尽量避免使用S7-1500 。因为那个时候我的认知里, 做项目的最便捷的方式是使用CFC。 我翻译的那套S7-300程序,只是公司当时用的一套垃圾框架程序,根本没什么意义。
所以,在之后的十多年时间里, 我做项目的时候,都是尽量避开使用S7-1500的。 甚至,有项目,盘柜都设计好了,元器件都采购安装好了, 我又经过协调, 把上面的S7-1500的CPU拿下来, 换上了自己的一台S7-300 。就为了要用CFC做程序。 只换了主站,而从站还是原设计的ET200SP远程IO。
所以那台CPU 1511被我换下来倒成了学习工具。 每当TIA PORTAL 发布新版本,我就拿来把玩学习一下。而真正的工程项目中,极少用到。 印象中能记得住的可能也就一两回使用S7-1200做的小项目。
然后后来的故事大家也都知道了。 2018年, 我拿到了TIA PORTAL 最新的V15版本,在研究学习时发现,其软件能力终于可以满足我对标准架构面向对象编程的所有功能的需求了。由此开启了轰轰烈烈的PLC标准化编程的创新开发及应用推广即今天称之为烟台方法。 除了在工程项目中成熟应用之外, 还成功扩展研发到了西门子之外的所有其它主流品牌的主流PLC, 三菱, AB, OMRON , 施耐德, 倍福等等。 其他的一些品牌, 甚至小型PLC, 也都大致做了可行性研究。
后来证明软件提供的功能也并不是先决条件,只要思想架构成熟,再弱的PLC, 比如SMART200这样的小型PLC, 最终经过一番改造, 也仍然实现了。所以这不完全赖操作系统, 还是自己能力成长不够。然而这个成长的过程是一个对自己知识架构重新解构的过程, 是需要有一定的创新思维的。
所以当S7-1500的标准化程序架构和理论思想一旦成熟,我就开始转向专心用S7-1500而拒绝使用S7-300/400了。有项目开始技术要求S7-300的,也会尽量劝说升级到S7-1500来实现了。
而对于CFC编程语言,则不再那么感冒了。 因为烟台方法的编程架构,比当初的CFC里面搭图形, 效率高到不知道多少倍了。
去年去唐山帮一位朋友做一套S7-400H的程序,系统中的电机阀门设备数量非常多,电机数量到将近400台。 在去的高铁上就一直在犹豫,到底用不用CFC。 最终落地之后决定,还是未用CFC。那么多台设备一个个连线过来, 手腕子恐怕都要断掉了。 工作过程中,优雅更重要。
所以最终还是参考标准化程序架构中的方法,在STEP7中优雅实现。 相当于现上轿现包腳,临时连夜实现了烟台方法在旧的STEP7系统中的应用。
2021年, TIA PORTAL升级到了V17,终于算是支持CFC语言了,然而我已经毫无兴致了, 甚至安装之后都没有正式演练一下。 到目前为止,电脑上也主要使用V16。
总之,一句话, 烟台方法不使用CFC。
烟台方法是一套创新的PLC编程方法, 然而并没有独占的专用权利。所以,更本质的说法是,烟台方法对PLC所有编程技术中的技术点和技术方法, 做了黑名单,白名单,绿名单的区分。
我曾经写过很多文章,对各种技术点和技巧逐一做了评析。 褒贬都有。 所以严格说来, 烟台方法是划定了一个矩阵范围。等哪天有机会的时候,我会把这个矩阵图完整绘制出来。
上周, 和一位众多网友公认的同行高手聊天, 因为他现在主要搞PCS7,所以顺便把对CFC的缺点跟他抱怨了一通:
万泉河:
PCS7不好玩。 CFC只能做垃圾程序。
万泉河:
我去年帮人做个项目, 倒不是PCS7, 但我犹豫很久最后还是没用CFC
万泉河:
400台电机, 最后还是用的SCL
万泉河:
看过我写的双线圈的系列文章了吗?
万泉河:
CFC的连线本质上也是线圈。
万泉河:
而且入线还是独占的。
万泉河:
CFC的连线, 在输出侧本质是线圈, 在输入侧则是独占。
万泉河:
CFC也不能用INOUT管脚
万泉河:
太讨厌了。
然而最后这段聊天他没再回复, 估计是没看懂,没理解我在抱怨什么。 因为他对我整个烟台方法都还没搞懂,所以我的那些痛点他还感觉不到。
当然啦, 大部分的读者对我上面这段话恐怕更难看懂。不过没关系, 领先的技术是不会过时的。我把这个FLAG先立在这里,大家暂时读过看过能有一点点印象就可以。 早晚一天,等你技术能力提高了,理解力到了以后,再来看看我说的话,说不定会对你有用。
就好比, 关于我发表的反UDT的观点的文章,就有很多人,包括跟我学习标准化的学员也不理解并反对。也有很多人如实跟我承认在自己的项目中还是喜欢用UDT来做数据打包传递。我当然也不会多过问。然而上个月,就有一位学员跟我私信讲到,2年来一直对我说的不要用UDT不理解, 最近则刚刚终于领悟了, 认识到我说的对。
这很好呀, 这不就说明学习有成果有进步有提高了嘛!
相关问答
麻烦在线的大神 谁知道:机房专用pdu插座16a价格大概多少?...
[回答]施耐德I-LINE-B系列,BFC2525GSTM54或I-LINE-C系列,CFC2520GSTM54不同型号的价位都不一样,根据自己的需求选择相应的插座。可以直接在某宝上的公牛...