我本人和我的团队是新的Kollmorgen基本电机驱动器,并正在与此驱动器第一次使用TCP/IP协议接口与LabVIEW。
我们可以成功地编写/设置各种变量,但是在从驱动器读取设置和变量时会遇到问题。我们面临的问题是,我们没有从特定命令的Kollmorgen基本驱动器读取确切的字节数。由Kollmorgen基本驱动器写入并返回的实际字节数与记录的不同。例如,根据Kollmorgen基本驱动器文档,读取存储在USER.INT6变量中的值的请求应该写回一个DWORD或4个Octates。如果USER.INT6变量包含1的值,则在读取4个字节时得到‘{CR}{LF}-’的值。如果我尝试读取8个字节,则得到‘{CR} {LF} ->1{CR}{LF}’,其中{CR}是‘回车’字符,{LF}是‘行提要’字符。如果USER.INT1包含值为100,则在读取8个字节时得到‘{CR}{LF}->100’的值。因此,如果USER.INT6包含1000个值,那么我必须读取9个字节。
这也发生在所有其他变量上。真正的问题是,在运行时,我不知道一个变量的确切值是多少,要获得完整的值,我需要读取多少字节。我相信我不是第一个面对这个问题的人,而且会有办法克服这个问题。所以寻求经验丰富的专家的帮助。请让我知道。
感谢并致以问候
桑迪普
发布于 2014-01-15 22:20:39
我建议将TCP/IP读取模式从标准更改为CRLF,我有一种感觉,您的设备用CRLF字符串终止消息。如果您插入足够大的字节数来读取(例如。20),它将尝试读取所有这些字节,或直到接收到CRLF组合体为止。

你能把显示改为HEX吗,我觉得你的->实际上是响应中的字节数。
如果你贴出你的代码,会有帮助的!
发布于 2014-01-15 19:24:25
我对这个特定的设备没有经验,但是一般来说,如果它不返回已知的字节数,那么基本上就是每次读取一个字节,直到看到终止符为止。
在CRLF的具体情况下,您可以使用模式输入配置TCP读取原语来使用终止模式,所以我认为这在您的情况下应该有效,但我自己从未尝试过。
发布于 2014-01-15 22:09:03
从快速浏览Kollmorgan站点看,这个驱动器使用的是Modbus TCP/IP。我建议使用LabVIEW Modbus库http://sine.ni.com/nips/cds/view/p/lang/en/nid/201711
查看Wiki上的Modbus以学习规范http://en.wikipedia.org/wiki/Modbus
https://stackoverflow.com/questions/21144769
复制相似问题