如何基于TwinCAT3实现伺服电机控制(二)

上一篇主要讲解了一些基础操作,这一篇解决一些应用问题。

我的伺服电机在定制时就加上了力矩传感器,虽然已经集成好了,但我怎么才能实时读出力矩值呢?这个就需要用到TwinCAT3的读写数字量模拟量输入输出功能。我们找到I/O目录下的Drive,选项卡切换到CoE-Online,在下面这个大表中就能找到每个变量对应的地址字,比如我的力矩传感器变量就是Reference A/D input,对应地址字是2200。

如何基于TwinCAT3实现伺服电机控制(二)_第1张图片

然后我们切换到Process Data,这里PDO有两种类型,分别是接收和传输,这里先在PDO List中选中一个项,比如我选中Transmit PDO 1,对应地址字0x1A00,下面PDO Content本来是没有对象的,右键添加新项找到地址字0x2200并添加,Reference A/D input这个变量就被添加到Transmit PDO 1,这时候打开左边目录下Transmit PDO 1应该就会有变量Reference A/D input了。

如何基于TwinCAT3实现伺服电机控制(二)_第2张图片

然后我们需要打开MAIN并在变量区加上一行代码。数字量输入格式为DI AT%I*:BOOL,数字量输出格式为DO AT%Q*:BOOL,模拟量输入格式为AI AT%I*:INT,模拟量输出格式为AO AT%Q*:INT。其中数字量高低对应布尔值,高就是TRUE,低就是FALSE。模拟量对应整数0~32767,这个需要跟传感器的量程做一个换算,比如我的力矩传感器量程是0~50Nm,那么通过y=50/32767*x就可以得到力矩值。

然后我们再点击之前添加的Reference A/D input变量,在Variable选项卡下Linked to在MAIN中定义的变量,这样力矩值就能传输到MAIN中了。

如何基于TwinCAT3实现伺服电机控制(二)_第3张图片

接下来我们就可以通过Visualization显示力矩或是通过Scope观测力矩曲线了。在Visualization中通过工具箱简单编一个显示区,对Textfield关联力矩变量,这样当连接电机并启动PLC后框中就能实时显示力矩了。

如何基于TwinCAT3实现伺服电机控制(二)_第4张图片

在Scope目录下找到NC Axis,右键Target Browser,找到851下的力矩变量并双击添加,注意必须要“Active Configuration”后才有851,必须要“登录到”后851下才有变量。然后打开刚刚添加的力矩变量曲线,启动PLC并Start Record后就可以观测了。

如何基于TwinCAT3实现伺服电机控制(二)_第5张图片

如何基于TwinCAT3实现伺服电机控制(二)_第6张图片

另外一个问题,假设我们需要写插补或是其他跟t相关的程序,需要注意0.002s不是随便取的,是跟PlcTask的Cycle ticks设置的2ms相对应的。

如何基于TwinCAT3实现伺服电机控制(二)_第7张图片

如何基于TwinCAT3实现伺服电机控制(二)_第8张图片

这里贴一张我的电机做三次样条插补时的位置、速度、加速度曲线。可以看到位置(绿色)曲线还可以,但速度(蓝色)和加速度(黄色)曲线波动较大。

如何基于TwinCAT3实现伺服电机控制(二)_第9张图片

你可能感兴趣的:(TwinCAT3,电机控制,visual,studio,经验分享)