Clippper模拟量输出设置

来源:互联网 发布:迅雷无法连接网络 编辑:程序博客网 时间:2024/05/01 17:47

  Clipper的J3(JMACH1)接口是设备接口,共50针。包括:
这里写图片描述
DAC输出管脚为:

PIN 29 31 30 32 37 39 38 40 48 signal DAC1 DAC1/ DAC2 DAC2/ DAC3 DAC3/ DAC4 DAC4/ GND

  Clipper不能输出真正的模拟量,clipper输出的+-10V的模拟量实际上是PWM经过一个10KHZ的低通滤波器产生的。PWM的占空比控制输出模拟量的幅值,这个转换关系由PMAC自动处理。PWM波的频率决定输出信号的分辨率和扰动幅度,PWM频率越高,输出分辨率越低,扰动也越低。

  滤波PWM输出的分辨率和频率均通过I7000控制,改变这个变量还会影响相位和伺服中断。而相位与I7001(phase clock divider)相关,伺服中断与I7002(servo clock divider)和I10(servo interrupt time)相关。因此改变I7000的同时还要改变I7001,I7002,I10的值。这几个变量的具体含义参见《软件参考手册》(2014版)P213,P215,P42。
  另外这些变量的值得计算有一个小软件 Dtcalcs2008,这里写图片描述直接输入想要设置的频率即可得到各个变量的值。
  
  要输出模拟量,首先要进行下面的设置:

I7000 = 1001     //PWM1-4频率设置为29.4KHZI7001 = 5        //相时钟频率设置为9.8KHZI7002 = 3        //伺服频率2.45kHzI7003 = 1746     //ADC频率I7100 = 1001     //PWM频率29.4kHz, PWM 5-8I7103 = 1746     //ADC频率I7016 = 0        //输出模式: PWM Ixx69 = 1001 ;DAC输出最大10Vdc        I10 = 3421867    //伺服中断时间I100=0           //关闭电机I124=$120001     //关闭限位报警等

注:

  1. I7m00: 第m个伺服芯片(IC)的最大相位频率/PWM频率控制。
    range:0-32767
    units:
    MaxPhase Frequency=117,964.8KHZ/[2*I7m00+3]
    PWM Frequency=117,964.8KHZ/[4*I7m00+6]
    例如,设置I7000=1001,则
    PWM频率=117=117,964.8KHZ/[4*1001+6]=29.41766KHZ
  2. I7m01: 第m个伺服芯片(IC)的相位时钟频率控制
    range:0-15
    units:Phase Frequency=MaxPhase Frequency/[I7m01+1]
    例如,设置I7000=1001,则
    最大相位频率=117,964.8KHZ/[2*1001+3]=58.83531KHZ
    设置I7001=5,则
    相位时钟频率=58.83531KHZ/6=9.805885KHZ
  3. I7m02:第m个伺服芯片(IC)的伺服时钟频率控制
    range:0-15
    uints:Servo Clock Frequency=Phase Clock Frequency / (I7m02+1)
    例如,设置I7m02=3,则
    伺服时钟频率=9.805885KHZ/4=2.4576KHZ
    这里写图片描述
  4. I7m03:第m个伺服芯片(IC)的硬件时钟控制
    range:0-4095
    units:单个时钟分频器
    I7m03=SCLK+8*PFM_CLK+64*DAC_CLK+512ADC_CLK
    其中:
      编码SCLK频率=39.3216MHz / (2SCLK)
      PFM_CLK 频率= 39.3216MHz / (2PFM_CLK)
      DAC_CLK 频率= 39.3216MHz / (2DAC_CLK)
      ADC_CLK 频率= 39.3216MHz / (2ADC_CLK)
      这里写图片描述

  5. I10:伺服中断时间
    range:0~8388607
    units:1/8,388,608 msec

  6. I7mn6:第m个伺服芯片上第n通道输出模式选择
    range:0-3
value description i7mn6=0 Outputs A and B are PWM; Output C is PWM I7mn6=1 Outputs A and B are DAC; Output C is PWM I7mn6=2 Outputs A and B are PWM; Output C is PFM I7mn6=3 Outputs A and B are DAC; Output C is PWM

  根据上面的设置(I7000=1001,Ixx69=1010),DAC1输出电压与M102的关系是M102=1001对应输出10V,分辨率为1/1001*10V=10mV。
  
  一个简单的程序从J3pin29(DAC1)输出正弦波。
  这里写图片描述
  程序代码:
  

//****************************       初始化部分open plc1 cleari7000=1001i7001=5i7002=3i7003=1746i7100=1001i7103=1746i7016=0i10=3421867i100=0i124=$120001p1=0m102=0//****************************     循环部分While (p1 < 3600)  m102=1000*sin(p1)  p1=p1+1  If (p1 = 3600)    disable plc1  EndIfEndWhileenable plc1

M102的地址是:
  M102->Y:$078002,8,16,S OUT1A command value; DAC or PWM对应J3接口的pin29,这是一个16位的寄存器,带符号,范围是-32768~32767,设Ixx00=0后,通过改变M102的值即可改变输出模拟量的值。

0 0
原创粉丝点击