案例1、现场配置过带26台施耐德变频器,通讯起来基本没什么延迟。
案例2、ACS880一台 510两台
变频器最好是有统一命令格式的,不然搞起来麻烦。
基于这篇文章未上传程序现将大部分程序截图。
数据分配表,可以按自己需要分配。必须分配。
这个通讯程序不包含业务逻辑处理,仅对通讯做一个比较模块化的说明及展显。
程序结构,记得将西门子Smart 200的RTU库加载进来并做库的配置(分配内部地址区)
以下为Main_MBus_RTU程序段
以下设置按实际的变频器设置来计算以及实际的电机参数设置
急停按下时设置停止命令
T36为10ms的定时器,建议换成100ms的。因为10ms跟100ms的定时器机制不一样。10ms主要用于中断。在主程序中使用10ms定时器的触点有出现过问题,定时时间定得短的话会出现捕捉不到沿的情况。在此处只是作为一个延时加载发送的数据不需要准确的时间,延迟个100ms左右就行了。
调用Load_Data加载要发送的读写数据到VB500开始的地址区,无论是读与写全部写到这个公共区域。
MBUS_MSG在我们的程序中最好只出现一次,西门子帮助文档里有出现两个之类的。西门子那样的处理方式容易出现:Modbus 正忙于处理另一请求:某一时间只能有一条 MBUS_MSG 指令处于激活状态的这个问题。
通讯故障的数据处理及数据搬运都采用指针的方式进行。当然了目前读状态、电流、转速等是只读一次,为了减少读通讯次数提高通讯能力。如果读分多次就可以明确知道是哪个读故障了。这个故障基本用不到,除非线路问题、变频器没上电之类的。
复位写的数据及写故障处理,写成功的话复位写命令的数据是必须的。如果不清除那么下个周期PLC通过比对数据还会认为设置了写命令。会重新发送,增加通讯负担。
以下为Load_Data所有的读写命令数据全部从这个块里写入VB500的公共地址。
有什么不懂的可以留言、发站内信息。要程序代码的可以留言区留下邮件(有看到会发送)。
联系客服