东佑达步进电缸控制器TC100的labview控制vi,可以通过RS485控制电缸运动
东佑达步进电缸控制器TC100的labview控制vi可以通过RS485控制电缸运动搞TC100步进电缸纯粹是工位剩下一台手边摸鱼攒的带隔离USB转485怕烧这玩意儿的输入输出几十块钱的CP2102光耦隔离那种学生党/小作坊首选直接接上半天就跑通了。下面直接说LabVIEW这套的核心新手踩过的小坑第一个坑就是地址拨码一定要翻实物DIP也提一嘴。首先是TC100的硬件准备这个是万事先行的硬骨头DIP1-DIP4设备地址二进制→十六进制比如默认H01DIP1拨到ON1的位置剩下三个拨OFF0DIP5协议选Modbus RTU的话拨OFF就行ASCII可能拼LRC麻烦Modbus通用CRC16随便搜个现成的LabVIEW块就行我后面给逻辑DIP6-DIP8波特率新手直接三个都拨OFF→默认9600bps8位数据位无校验1停止位这个后面VISA配置直接填死就行。接下来是LabVIEW这边的软件链用的是自带的VISA串口再加个自己写或者复制的CRC16块就行第一步打开VISA配置参数直接锁死上面DIP对应的值新手别改除非你特意拨了波特率的坑配置完记得连个VISA属性节点“缓冲区大小”输出缓冲区设个2048TC100回传不多够了。[VISA Configure Serial Port.vi VISA Resource Name: 选你USB转485的COM口 Baud Rate: 9600 Data Bits: 8 Parity: 0无校验 Stop Bits: 101位停止位 Flow Control: 0无 → VISA Property Node VISA Resource Name Out → 选IO Buffer Size: 写输入输出都设2048第二步拼Modbus RTU的绝对定位启动的主站帧这个是核心中的核心TC100的绝对定位我习惯一次性写3个东西到保持寄存器运动命令先写绝对定位→速度→绝对位置→再写启动哦不对更高效的是写多个保持寄存器功能码0x10把绝对定位、速度、位置、启动塞进去一次性发省通信时间省脑壳记。TC100的运动控制相关保持寄存器大概是这样具体翻你自己的TC100说明书哈我这个是手里剩的TC100-S的通用版起始寄存器地址H0080 0x0080要写的寄存器数量4一次性4个每个寄存器的数据16位小行程用单字32位行程/速度要翻倍哈H0080运动触发寄存器0x0001绝对定位等下不对触发是最后写哦不管通用版触发写在第一个或者最后一个都行只要写0x0001→等下哦不对哦手里剩的说明书触发是要单独写哦没事通用版运动触发前先把绝对定位/速度/位置写好再写触发。新手还是分开写触发吧逻辑清晰。那简化版新手友好逻辑的绝对定位主站帧拆分先写速度寄存器H0082→功能码0x06单个写单个东佑达步进电缸控制器TC100的labview控制vi可以通过RS485控制电缸运动主站帧的字节是地址10x01 功能码0x06 起始寄存器地址0x00 0x82 速度值的高位0x00 0x64比如速度100按TC100-S的速度单位是0.1r/min不对哦不对是脉冲频率哦新手按自己的电缸丝杆导程自己换算脉冲数和脉冲频率就行这里随便给个示例0x00 0x64100→后面加CRC16低位在前高位在后。unsigned short CRC16_Modbus(unsigned char *data, int len) { unsigned short crc 0xFFFF; int i, j; for (i 0; i len; i) { crc ^ data[i]; for (j 0; j 8; j) { if (crc 0x0001) { crc 1; crc ^ 0xA001; } else { crc 1; } } } return crc; }第三步把这些字节拼好转成字节数组丢给VISA Write然后VISA Read等个200ms读回TC100的确认帧就行确认帧一般和主站帧前面5个字节一样最后加CRC16。新手踩的第二个小坑USB转485的A/B线搞反跑不动就换一下就行不用怕隔离的烧不了。最后放个完整的新手友好小框架位置寄存器H0090和H0091是32位绝对位置单位是脉冲新手可以先试单字H0091先设小行程比如1000脉冲1. VISA配置→2. 拼单字绝对位置寄存器0x0091地址106009103E81000→3. CRC164. VISA Write→5. 延时100ms→6. 读回确认→7. 拼速度寄存器0x0082地址10600820064→CRC16→8. VISA Write→9. 延时100ms→10. 读回确认→11. 拼运动触发寄存器0x0080地址10600800001绝对定位触发→CRC16→12. VISA Write→13. 延时直到位置到位可以读H0000的状态寄存器判断bit00就是到位到位判断那块如果嫌麻烦新手可以直接按电缸最大行程速度算大概的时间加个Wait Until Done的循环读就行想精确的就循环读H0000的bit0。对了最后别忘了VISA Close不然下次开不了串口卡死。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2456163.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!