如何实现PLC与多台变频器的MODBUS/RTU通信{控制柜}{变频柜}{配电柜}{PLC控制柜}{郑州{PLC控制柜}
如果现在有个项目,需要MODBUS控制五个变频器,那该怎么办?
也许你会说,这还不简单,把前面的通信程序复zhi五遍不就行了?理论上,这是可行的,但却是不可行的,为什么呢?因为串口在同一时间,只能进行一次数据交互。这个一次,是指一次读或是写操作。这就好比一个很窄的路口,一次只能通过一辆汽车,如果五辆汽车一起通过,势必会引起堵塞,一辆也过不去,但我们需要过五辆怎么办?那就需要交通灯或是交指挥交通,通信也一样,也需要有交通灯或是交,而在MODBUS通信中,就需要我们自己来当交,通过程序控制通信流程,工业自动化控制柜,这就是轮询方式。
而MODBUS通信实现轮询,有两个常用的方法。
1 时间间隔法
所谓时间间隔法,就是每个操作分配一个固定的时间,比如第yi秒写入频率,***秒读取频率,第三秒读取电流,当然,这个时间是要根据实际情况来设置的,我们看一个例子:
图一时间间隔
如图一所示,这是一个BLINK 和计数器两个功能块组成的程序,BLINK产生一个50毫秒的脉冲,而计数器对此脉冲进行计数,因此,计数器的当前计数值CV 也就是图中黄色荧光笔部分,就会从1 到6每隔50毫秒递增一次。这样,就为每一次操作分配了50毫秒的时间。
图二 利用时间间隔触发通信
如图二,红色圆圈部分,当数值等于1的时候,我们写入地址0002,当数值等于2的时候,我们读取103,依次类推。黄色荧光笔部分是触发路径。
2 功能块触发法
功能块触发法,是利用功能块的状态参数来触发下一次通信,也就是我在介绍通信的时候使用的BUSY信号。
图三 利用BUSY信号触发下一次读写
如图三所示,当写入0002通信完成后,利用BUSY信号来触发下一次通信,读取103的值。图中黄色荧光笔的部分,就是触发路径,当上一个通信功能块的BUSY信号产生下降沿的时候,证明这次通信已经完成,以此来触发下一次通信
以上,就是两种常用的轮询方法,它们各有优缺点,最的方式就是两者结合。利用时间间隔,这个时间间隔的设置就很讲究,时间太短,可能通信还没完成,时间太长影响效率。而利用功能块的BUSY信号,可以很好解决这个问题,但是,一旦一个环节通信出错,BUSY信号无法给出,就会造成后面的通信无法进行,那么该如何结合呢?那就是用时间间隔来确定从站之间的通信间隔,而同一个从站的读写就用功能块信号触发,这样即使通信有错误,也只是影响一个从站。
我们为每个从站分配30毫秒的时间,那么轮询10个从站只需要300毫秒,这基本能满足我们的需求,而又能***每个站的通信时间。因为超过10个从站,就不建议用MODBUS通信了,那样就要考虑使用总线了。而一个从站内部,要读写多次的时候,就用BUSY信号触发。这样,即使一个从站通信出现问题,也不会影响下一个从站的通信。
PLC入门指导{控制柜}{配电柜}{PLC控制柜}{郑州PLC控制柜}{变频柜}
1、编程需要坚强的毅力和足够的耐心
人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强 烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊 讶于我面对这一堆堆符号所表现出的专注。其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。经过无数次失败后,当看到一个个符号按我的思路整齐的排列, PLC 按我的要求有条不紊的运行时,兴趣得到了***的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的 舞者,而我则是她们的导演。
2、编程需要敢于实践的信心
我曾经教过一个学生学 AutoCAD ,我对她的要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最 坏的结果是系统崩溃, 没关系,系统重做, 再来;只要电脑没被砸了, 怎么都行。 两年后, 我再看到她做的 CAD 图纸, 也自叹不如。
同样道理, 只有不断地在 PLC 上运行这些指令, 观察运行的结果, 才能弄清 PLC 指令的作用。 很多初学者对 PLC 一脸
的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是 仅靠读书是成不了一个工程师的。更何况手册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编
一个小程序,让 PLC 运行。然后逐个修改条件,观察运行的结果( MicroWin 为用户提供了非常好的监控手段) ,反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。不必担心自己写的程序会有什么问题,会影响 PLC 的正常工作。程序有没有问题,只有让 PLC 运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏 PLC 的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是 PLC 编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万 不要挂接负载,以免造成不必要的损失。数字量的输出有 LED 显示;而模拟量处理可以采用一些硬件或软件模拟手段 来解决。
3、编程需要有缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高ji语言中,常用的是 if then else 、select 这些条件判别语句,这就是逻辑中的因果关系。 PLC 程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。 PLC 是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。在 PLC 中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程, PLC 从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,先整理出一份逻辑关系图,与用户反复商讨,取得用户的认可, 然后才真正进入程序的编写程。
4、不可或缺的相关知识
PLC 的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的 Unit Operation 的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种 仪表、硬件的配置。这得益于我原本所学的专业。当然,不能要求所有搞 PLC 程序的工程师都有我这样的经历。但是有两门知识却是不可或缺的:一是过程 仪表的硬件知识,包括传感器、变送器(二次 仪表)和 PLC 本身,这是构建控制系统的基础;二是过程控制理论,包括各种控制模型的原理和应用,其中重要的是二位调节和 PID 调节 模型。 PID 调节是目前用得***的过程控制手段,且变化多端。学习 PID 的方法就是读书。几乎所有讲解过程控制的书籍都有关于 PID 的内容,多读基本相关的书籍对理解 PID 是很有益处的。 我发现不少朋友在进入 PLC 领域时,缺乏这些相关知识。这并不可怕;可怕的是当事者不能静下心来弥补知识的缺陷。我们不要怪罪学校没有教这些内 容,而是要注重自己如何去学习这些知识。工作中遇到的许多问题是学校里没讲过的,这不能成为我们拒绝工作的理 由,而应该以积极的态度去应对这些问题。我的体会是,为了解决工作中的问题而学习的知识,比课堂上学的东西更 容易记住。
5、养成良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。一是理顺逻辑 关系、时序关系,编制程序框图;二是合理分配主程序、子程序和中断程序;三是合理分配寄存器,编制寄存器符号 表。
PLC 编程更接近于单片机,或者说 PLC 就是模块化的单片机。因此 PLC 的很多操作都是直接针对寄存器的,如果在程序中出现不合理的寄存器地址重叠, 一定会出现不可预想的后果。 编制寄存器符号表不仅可以避免上述问题 (MicroWin 会有问题提示) ,而且可以使程序具备更好的可读性。这和 VB 中定义变量有异曲同工之处。
VB 编程中关注的是事件,不强调主程序和子程序的观念,因为 VB 主程序的工作是由 PC 的操作系统完成的。 PLC 则不然。PLC 程序是以主程序为主干的, CPU 不断的循环执行主程序, 只有触发条件成立时才会调用子程序或中断程序。即子程序和中断程序所执行的任务不是全时需要的。如果把这些任务都放在主程序中会无端增加主程序的工作量,降 低程序的效率。这点和单片机的编程思路是一致的。子程序的使用可以使整个程序的逻辑更清晰。而且子程序可以分 开编写、调试,*** “安装 ”到主程序上。这样你可以一个一个解决问题。
PLC 编程,无论是 LAD ,抑或 STL,都不如 VB 那么直观、有趣,更不如 CAD 那么形象。但比单片机的汇编语言的可视性强多了。对于初学者, LAD (梯形图)的编程相对直观,更容易上手。
***, PLC 提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。
尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应 该考虑掌握复杂指令的应用,以及程序的优化。
第yi:PLC是可以工作在***恶劣的电磁环境中的
我们都在宣传片中见过三江源地区的藏羚羊,它们生活在***恶劣的环境中。如果把我们内地的普通山羊放到这里,河南自动化控制柜,不出三天,普通山羊恐怕就见牛克斯了。
如果我们把计算机直接放到PLC工作的环境中,无需太久,这些计算机将死机甚至烧毁。
在ABB的早期工程中,我们就是把工业控制计算机直接放在变电站开关柜中,用来实施测控和数据处理。然而,用不了多久,电源故障和硬盘故障,还有输入输出接口的故障就接踵而来,让人烦不胜烦。直到我们用PLC替换下这些工控机,事情才算完。
这叫做抵御电磁骚扰EMC的能力,PLC可达三级甚至四级,而计算机能达到二级就算很不错了。
抵御EMC电磁骚扰,会有许多措施。例如隔离技术、接地技术等等都是。
***:PLC的程序是一行行顺序执行的,它不会陷入死循环
我们在编写计算机程序时,经常会遇见循环。如果一个循环子程序设计不恰当,或者条件引起了程序返回,有可能进入到死循环中,系统当然就死机了。
然而,PLC的程序是一条接一条顺序执行的,只有到了程序末尾才会回头。在程序中任何部位,若条件满足,可以实现跳转,但程序还是一条接一条顺序执行。
如此一来,PLC几乎不会死机。这也是PLC区别于普通计算机的根本特性。
基于此,我们会发现PLC的可靠性极高,这是普通计算机完全不能比拟的。
第三:冗余配置
所谓冗余配置,就是在控制过程中存在主机和从机,它们依靠握手线关联,并共享资源和信息。
如果是计算机,当主机出现问题时,切换到从机的时间较长。但对于PLC,我们可以在机架上安排2套CPU作为主从控制,它们之间的转换仅几个时钟周期即可完成。
例如我们的控制对象是汽轮机,它的转子在高速旋转。我们不妨假定转子的转速就是工频周期,也即每分钟3000转。如果我们对汽轮机实施DCS监控,在现场层面我们只能选用带冗余配套的PLC,绝bu可能使用计算机。一旦PLC的主机发生故障,它立刻就转入从机控制,对于受控对象来说几乎感觉不到,但计算机就未必可以实现类似功能了。
事实上,带冗余配套的PLC系统就属于规模较大的PLC。从题主的描述看,似乎连边都没沾上。
第四:PLC的程序特点
PLC的程序规模都不大,一般才几千字节,能上万字节就算很大的程序了。
PLC有许多输入输出接口,以及各种类型的变量,这些都需要专门设置地址,以便在程序中使用。
我们看下图,此图是用PLC国际通用标准IEC61131-3模块化编程语言写成的:
图1:某地铁配电控制系统PLC的输入接口参数定义程序和延迟判误程序
在图1中,我们在左侧看到了许多输入参量,它们的末尾都有_s的标识,这些就是开关量输入参数,它们不但有地址,还有名称。这是必须的,否则程序无法辨识和使用它们。
我们由图1的程序看到,这种编程方法比所谓的C语言方便得多。事实上,每一个功能块就相当于一段C语言。例如TON模块,它是延迟模块,搅拌站自动化控制柜,如果用C语言,怎么也要若干语句行,但这里仅仅只是一个程序模块而已。何者更方便一看便知。
我们再看下图:
图2:PLC的16位字解析为单个开关量的程序段
图2中,程序开头的AND(与逻辑模块)实施程序转移。当条件满足时,AND启动子程序入口。
在图2中,我们看到了UNPACK16模块,它的任务是把一个16位的字解析为16个开关量,供下一步程序使用。
我们很容易想到,这个UNPACK16模块若用C语言来写,又会有何种形式?何者更方便?
我们看下图:
图3:数据交换的RS485接口定义和MODBUS通信管理
图3是PLC对系统中各种数据交换的定义、数据采集和管理。图中的一个个模块就是处理MODBUS通信协议数据的,同时还实现数据采集轮巡操作。
这些模块用C语言该如何写?是不是会麻烦很多?
我们看到,PLC程序的便捷性是C语言无法比拟的。
第五:PLC的工作范围
PLC的内存不大,尽管它的可靠性很高,但PLC不能用于较大的计算。我曾经设计过一个PLC程序,用于浮点数的乘法,麻烦得很,***不得不使用模块配合查表来解决问题。
PLC的内部其实就是单片机,只不过整个PLC的单片机系统经过了严格的EMC测试,而操作系统和编程系统也进行了优化,方便我们这些编程者使用。
既然PLC只是一台单片机系统,西门子自动化控制柜,可想而知它与计算机不在同一个技术水平上。计算机能够完成的工作,哪怕只是一篇WORD文档的写作,用PLC绝bu可能完成。但PLC能够轻松实现的控制功能,用计算机虽然也能勉强实现,但效果极差,且可靠性极低,尺寸也巨大。
如此看来,PLC与计算机的工作特性不一样,适用的工作对象当然也不一样。
所以,题主拿计算机的C语言来比拟PLC的编程语言,并不合适。
另外,题主所谓的规模较大的PLC,这个定义不明确,也是没有意义的。
搅拌站自动化控制柜-河南自动化控制柜-继飞机电由郑州继飞机电设备有限公司提供。郑州继飞机电设备有限公司()为客户提供“电气控制柜的设计安装调试及服务”等业务,公司拥有“西门子,正泰,施耐德,台达,欧科”等品牌。专注于工业自动控制系统及装备等行业,在河南 郑州 有较高知名度。欢迎来电垂询,联系人:王继刚。