zoukankan      html  css  js  c++  java
  • 安川V1000变频器的485组网通讯的问题

    背景

    某项目使用安川(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位长度是什么意思呢?我正在询问安川的技术支持还没有答复,希望有知道的人留言解答。这个时间是怎么计算出的,受何种因素影响,还要再分析。

  • 相关阅读:
    UVALIVE 6958 Indoorienteering
    Calendar Game
    Wizard's Tour
    2017 ACM-ICPC 亚洲区(西安赛区)网络赛 G. Xor
    Alliances
    2017沈阳网络赛hdu6199 gems gems gems
    pytorch 的max函数
    pytorch调用gpu
    jupyter notebook实现代码自动补全
    pytorch强大的自动求导功能
  • 原文地址:https://www.cnblogs.com/gmth/p/3359510.html
Copyright © 2011-2022 走看看