冠冕堂皇

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

背景

某项目使用安川(YASKAWA) V1000变频器27台,采样RS485通讯,协议为安川的MEMOBUS。MEMOBUS为标准Modbus的细微变种,变化主要体现在寄存器定义方面,支持有限的功能码。具体信息可参见产品计数手册:(株)安川电机 SICP C710606 17A 安川变频器V1000 技术手册

需要实现的功能

需要实现的功能是分别向变频器的保持寄存器280H写入频率设定值,然后再分别向变频器保持寄存器900H写入0以实现频率的掉电保持功能。

实现方式

MEMOBUS只支持三个Modbus功能码:03H 读取存储寄存器的内容;08H 回路测;10H 向多个存储寄存器的写入。因此,选用10H功能码组织报文,向串口发送。

测试程序如下:

    class Program
    {
        static void Main(string[] args)
        {
            byte[] read=new byte[1024];
            byte[] toSend=new byte[]{0x01 ,0x10 ,0x02 ,0x80 ,0x00 ,0x01 ,0x02 ,0x0B ,0x2C ,0x9C ,0xBD};
            SerialPort sp = new SerialPort();
            sp.PortName = "COM2";
            sp.Open();
            while (true)
            {
                sp.Write(toSend, 0, toSend.Length);
                Thread.Sleep(75);
                sp.Read(read,0,1000);
            }
        }
    }

问题

执行完毕后,27台变频器不能全部实现掉电保持,成功与不成功的机器不固定,是随机的。先前的推测是向900H写0失败,后来观察,也可能是向280H写频率这一步就失败了,为什么呢?

探究原因

 现场工程人员通过在两条写命令之间添加固定时间的延时,发现可以解决问题,前提是时间大于某个固定值。

 翻开技术手册,发现了如下知识点:(图片是针对PLC与变频器的通讯,我们把PLC看成PC)

从上图可见,每一个通讯周期是可以计算的。变频器有个叫H5-06(通信等待时间)的参数,用来设定变频器从接收数据到开始发送为止的时间。出厂设定在5ms,范围在5--65ms。我们使用的变频器是默认的出厂设定没有更改。

经过测试,指令信息发送到相应信息返回,基本在120ms的时间;两条指令信息的发送间隔,在75ms,可以正常执行功能。

那么24位长度是什么意思呢?我正在询问安川的技术支持还没有答复,希望有知道的人留言解答。这个时间是怎么计算出的,受何种因素影响,还要再分析。

 

 

posted on 2013-10-09 16:50  冠冕堂皇  阅读(6765)  评论(2编辑  收藏  举报