zoukankan      html  css  js  c++  java
  • Clippper模拟量输出设置

      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的值即可改变输出模拟量的值。

  • 相关阅读:
    日程管理系统找Bug
    #单元测试
    读后感
    四则运算
    事后诸葛亮会议
    数据流图和数据流程图
    时序图
    ER图
    uml用例图
    第一迭代感想
  • 原文地址:https://www.cnblogs.com/zhengkang/p/5712467.html
Copyright © 2011-2022 走看看