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.4KHZ
I7001 = 5        //相时钟频率设置为9.8KHZ
I7002 = 3        //伺服频率2.45kHz
I7003 = 1746     //ADC频率
I7100 = 1001     //PWM频率29.4kHz, PWM 5-8
I7103 = 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 clear
i7000=1001
i7001=5
i7002=3
i7003=1746
i7100=1001
i7103=1746
i7016=0
i10=3421867
i100=0
i124=$120001
p1=0
m102=0
//****************************     循环部分
While (p1 < 3600) m102=1000*sin(p1) p1=p1+1 If (p1 = 3600) disable plc1 EndIf EndWhile enable plc1 

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