今天要用通讯来控制台达A2伺服作位置控制,以前用PLC做过AB系列的;没有多想,使用以前的经验;
采用内部速度模式,使用通讯来改变寄存器值,来控制速度;
设定通讯格式 Modbus ASCII 9600,7,e,1,通讯地址 1:
Servo DI寄存器地址 0214H,速度设定寄存器 0114H;
先下 “:010602140001+LRC+CRLF”
伺服Servo ON ,转速200RPM(寄存器原数值);
再下":011001140002040BB80000+LRC+CRLF“
写入双字速度,可是伺服速度没有改变,而且伺服也没有回馈,开始以为LRC算错,于是手算了次,没错;后面又想单字写入":010601140BB8+LRC+CRLF”伺服回传通讯错误,由于急用,于是改变方法;
采用三组内部寄存器速度,通过通讯修改DI,来定义SP0,SP1的逻辑,现将设定三个寄存器速度分别为100RPM,200RPM,300RPM;设定0216H,0218H来设定SP0,SP1;
下指令"010602160014+LRC+CRLF","010602180115+LRC+CRLF";转速100RPM;
下指令"010602160114+LRC+CRLF","010602180015+LRC+CRLF";转速200RPM;
下指令"010602160014+LRC+CRLF","010602180015+LRC+CRLF";转速300RPM;
此方法可以实现我的需要;
反过来回去想,原来方案为什么以前在AB上可以使用,于是用Bushound监控串口,再使用双字写指令测试;发送指令没有问题,可是没有回传,惊奇的发现,双字指令居然使用了2s完成。。。。。。让我想到个重要参数,通讯超时100ms,决定,将通讯波特率调整试试,果断改成38400,下指令,居然伺服有回传了,速度也给改变了!