在LabVIEW中使用TCP / IP协议集成KollMorgen AKD Basic电机驱动器

时间:2014-01-15 17:52:58

标签: labview tcp-ip

我和我的团队是Kollmorgen AKD Basic电机驱动器的新手,并且正在使用LabVIEW的TCP / IP协议接口首次使用此驱动器。

我们可以成功编写/设置各种变量,但在从驱动器读取设置和变量时遇到问题。我们面临的问题是因为我们没有获得从Kollmorgen AKD Basic驱动器读取特定命令的确切字节数。 Kollmorgen AKD Basic驱动器写入和返回的实际字节数与记录的不同。例如根据Kollmorgen AKD Basic驱动器文档,读取存储在USER.INT6变量中的值的读取请求应写回DWORD或4个Octates。如果USER.INT6变量包含值1,那么当我读取4个字节时,我得到'{CR} {LF} - '的值。如果我尝试读取8个字节,那么我得到'{CR} {LF} - > 1 {CR} {LF}'其中{CR}是'回车'字符而{LF}是'换行'字符。如果USER.INT1包含值100,那么我将获得'{CR} {LF} - > 100'的值,读取8个字节。因此,如果USER.INT6包含值1000,那么我必须读取9个字节。

这也发生在所有其他变量上。真正的问题是我在运行时不知道变量究竟具有什么值,并获得完整的值我需要读取多少字节。我相信我不是第一个面对这个问题的人,而且有办法克服它。所以寻求经验丰富的专家的帮助。请告诉我。

谢谢和问候,

和Sandeep

4 个答案:

答案 0 :(得分:2)

我没有使用该特定设备的经验,但一般情况下,如果它没有返回已知的字节数,那么您基本上只能读取一个字节,直到看到终结符。

在CRLF的特定情况下,您可以使用模式输入配置TCP Read原语以使用终止模式,所以我认为这应该适用于您的情况,但我自己从未尝试过。

答案 1 :(得分:1)

从快速浏览一下科尔摩根网站看起来这个驱动器使用的是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

答案 2 :(得分:1)

我建议将TCP / IP读取模式从标准更改为CRLF,我感觉您的设备使用CRLF字符串终止消息。如果插入足够大的字节数来读取(例如20),它将尝试读取所有这些字节或直到它收到CRLF组合。
Drag&Drop snippet
你可以把显示改为HEX,我觉得你的 - >实际上是响应中的字节数 如果你发布你的代码会有所帮助!

答案 3 :(得分:1)

您可以从科尔摩根本身获得对此的支持。他们有位于浦那的应用工程师。