在本文中,将探讨如何使用C#语言来控制施耐德电气的M-Drive步进电机,该电机集成了编码器和控制器。这是一个系列文章的第三部分,将讨论如何通过自定义的C#程序来实现对电机的控制。
首先,确保电机通过RS422电缆连接到PC。需要某种软件来与电机通信。任何终端仿真器都可以,但施耐德提供了他们自己的免费软件IMS Terminal,尽管它偶尔会锁定。为了满足需求,创建了自己的程序,名为MDrive。MDrive的源代码可以在上免费获取。
MDrive应用程序启动时,会扫描PC上可用的串行端口列表。它找到与施耐德USB到RS422电缆、单端口XS890和四端口UTS-M14相关联的所有串行端口。串行端口在应用程序的左上角列出。要选择合适的串行端口,请点击它。一旦串行端口打开,MDrive会向电机发送以下命令:
PG ‘退出程序模式(如果需要)
E ‘结束任何正在运行的程序
EE=1 ‘启用编码器
SL 0 ‘停止移动
ER=0 ‘清除错误
ST=0 ‘清除卡死
PR AL ‘获取所有参数
L ‘获取程序列表
通过发送命令“PG 1”,可以将电机置于“程序模式”。如果刚刚连接的电机处于程序模式,那么发送其他命令只会追加到电机上正在创建的程序中。这就是发送PG命令的原因。它终止了电机的编程。非常方便的是,如果电机没有处于程序模式,发送“PG”也不会有不好的影响。
应用程序中间显示了所有认为重要的参数。如上所述,参数值在连接时从电机获取。此外,如果选中了“轮询”复选框,那么MDrive将每两秒钟查询一次电机以更新值。这在电机移动时特别方便,这样就可以看到“P”和“V”等参数的变化,而无需不断输入“PR”命令。
还可以在每个框中输入新值,该值将立即发送到电机。例如,要将加速度设置为2000,只需在“A”框中输入2000。与IMS Terminal相比,需要在命令提示符下键入“A=2000”。这个简单的功能可以在故障排除时节省大量时间和麻烦。
当前的程序列表显示在应用程序右侧的可编辑、可滚动窗口中。如上所述,程序列表在连接时从电机获取。此外,点击“读取”将再次从电机获取程序列表。点击“发送”将程序传输到电机。点击“运行”将在电机上启动程序。点击“结束”应该停止电机上的程序执行。
可编辑的滚动窗口支持复制和粘贴。使用其他方式(如记事本)将程序列表保存到计算机上的文件中。
协议缺乏传输结束代码,很难知道电机何时准备好接收下一个命令。乍一看,似乎只需要寻找提示字符“>”。但当意识到ER不为0时,提示会变成“?”,事情就变得复杂了。进一步混淆的是,当进入程序模式时,提示会变成一个数字(内存位置),前后都有空格。最后,当列出程序时,输出可能包含许多可以被认为是有效提示的字符。所有这些都让相信施耐德本可以更好地定义一个不变的传输结束/准备就绪命令协议。这些细节在ComViewModel.cs中的各种正则表达式中被捕获。