一般在使用中,都是PLC做主站,去读取从站的数据,由于各个PLC差别太大,因此,对于MODBUS的编程也是百花齐放,这令初学者非常困惑。一般,日系PLC都是通过梯形图来实现,和实现模拟量一样,非常繁琐。欧系PLC比较简单,都是调用功能块,我们直接填写参数即可。 无论什么方法,都是要我们写程序实现的,而且当变频器数量过多的时候,还要考虑时序,非常麻烦,今天就给大家介绍一下施耐德PLC的MODUBS IO SCANNER功能,它实现MODBUS就像实现总线通讯一样简单,无需编程。就以最性价比最高(也就是最便宜)的M218系列为例说明。
1 硬件组态 M218 所有的PLC都有两个串口,默认都是支持MODBUS协议的,一般使用串口1,因为串口2是水晶头接口,一般都是和触摸屏联机的。 如图所示,串口1模式是Somachine协议,我们把它删掉,鼠标放置在串行线路1,点击右键,选择删除即可。然后我们再点击添加 如上图所示,我们选在Modbus IOscanner 这样,我们就建立里一个MODBUS主站。然后右击Modbus IOscanner,添加Generic_Modbus_Slave,这样我们就添加了一个从站。 图中其他的 选项比如ZBRN2 PM1200,是施耐德供配电产品,比如框架断路器,塑壳断路器,电能检测仪等等。我们添加的Generic_Modbus_Slave是一个通用的MODBUS从站。比如,第三方的变频器,一起仪表等等。你可以理解成,总线通讯是有EDS文件和没有EDS文件的区别。如果我们要和多个从站通讯,添加多个即可,系统会自动分配时序,无需我们自己编程。 当然,我们可以修改Generic_Modbus_Slave的名字,变成我们从站的名字,比如要和三菱变频器通讯,我们可以改成三菱变频器,遗憾的是,不支持中文。当然,我们可以改成变频器的型号比如 FRN-A800 2参数设置 双击串行线路1 打开参数设置页面 在这里,我们设置MODBUS通讯最主要的参数,波特率,校验等等 3 组态通讯数据 双击FRNA800,也就是我们添加的从站 点击 添加通道 在这里,我们就添加我们需要读取从站的类型和地址就可以了。关于地址和功能码,大家可以查看相关的编程手册。在这里,假设我们写入40001, 这样,就添加了一个读取的数据,也就是一个MODBUS通讯的通道 Channel1 我们还可以给这个写入的值取个名字,也就是变量名,便于我们编写程序。点击Modbus Master IO映射,可以看到刚才建立的Channel1, 我们可以看到,系统已经自动分配了地址%IW1,而它的变量是空白的,我们单击,就可以取个名字了,很遗憾,这里不支持中文变量名字,我们建立一个变量W_Fre 至此,我们就完成了通讯的设置,我们在程序中往变量W_Fre 中赋值,就相当于往从站的40001地址里写值,怎么样,是不是很方便,不需要编写任何程序,就可实现MODBUS通讯。 4 错误处理 当从站出现错误的时候,系统不会自动复位,造成通讯中断,需要我们自己写一个通讯处理程序,实现自动复位 此时,我们需要调用系统功能,这个系统功能,是PLC为我们的MODBUS从站自动分配的。 如图所示,当出现错误的时候,会自动复位。 |
|