最近遇到一个比较特别的问题,之所以特别呢,是因为除了我之外应该没人遇到了。
物料: 台达单相200W A2系列伺服一台。
三菱fx3u PLC 一台+ FX3U-485ADP-MB通讯适配器(modbus协议,有特定的ADPRW指令)
功能:PLC最为控制器,实现对伺服的定位控制,人机上编写正反向点动功能。
问题:由于PLC控制的伺服台数较多(7台)所以使用PLC本身的高脉冲输出控制显然是不够的,有什么可行的办法呢?bingo 伺服的PR模式。因为打算使用通讯控制了,所以就不考虑DI了。果断焊接CN3接头,参数设定,程序编写,吧啦吧啦 一切OK。顺利通讯上。使用MODBUS的 0x06功能,向P4-07内 写入PR#xx 顺利执行,但是怎么实现点动呢?目前我研究出来两种方法 :
NO.1 在DI动能设定里 设定 正向寸动 反向寸动(DI2 DI3),通过参数设定 P3-06 0XFF 以及P4-07 实现了对 DI的通讯控制,从而可以正反向动。
NO.2 对P4-05进行设定,使用通讯,向P4-05内写入 4998时 正转 4999时反转,OK。
但是问题来了:这两种方式都是 正转和反转 但并不能实现 正向点动和反向点动。以为使用通讯时 发一个脉冲 便会把参数 写入到 伺服的寄存器内 然后就一直在寄存器内,除非有新的参数写入,这便造成了我写入正向点动的数据后,必须在写入停止数据 马达才能停下来,否则一直持续旋转,我尝试用PLC对触发条件进行互锁,
即当条件ON时写入点动的数据 条件OFF时写入停止的数据,OK 理论上想法不错,但是试验后发现,延迟很高,当ON时不会立马转动,当OFF是也不会立马停止,都会有 1-2s 的延迟。 现在真的没办法了,请求大神能指点迷津,小弟不胜感激。
楼主最近还看过
楼上的做法正确。我也是这样的做法。命令不变的时候不写,读,没事的时候就只读取当前状态一个信息。总不能让线路空闲吧,空闲会报警的。(我设置了50毫秒掉线报警)
楼主的一句话,咱再聊聊。“如果两个或者多个单元需要同时读写数据时”
主观上有同时,程序上不会有同时,这个是必然的。正如楼上,需要读的时候再读,需要写的时候再写。当遇到一起发送,例如正转信号。那么只能排队了。或者广播。有的伺服有端子规划的禁止广播功能。比如说三个伺服一起动,同时动,一个伺服不需要动,那么就先写个信号禁止一个伺服接收广播,然后再对其余三个进行广播。由于广播不会有回信,所以广播之后,最好轮训一次状态,证实运行信号已经接收成功。然后再解除一个伺服的禁止广播。