Clippper模拟量输出设置
2015-06-10 09:29
253 查看
Clipper的J3(JMACH1)接口是设备接口,共50针。包括:
DAC输出管脚为:
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,
直接输入想要设置的频率即可得到各个变量的值。
要输出模拟量,首先要进行下面的设置:
注:
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
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
I7m02:第m个伺服芯片(IC)的伺服时钟频率控制
range:0-15
uints:Servo Clock Frequency=Phase Clock Frequency / (I7m02+1)
例如,设置I7m02=3,则
伺服时钟频率=9.805885KHZ/4=2.4576KHZ
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)
I10:伺服中断时间
range:0~8388607
units:1/8,388,608 msec
I7mn6:第m个伺服芯片上第n通道输出模式选择
range:0-3
根据上面的设置(I7000=1001,Ixx69=1010),DAC1输出电压与M102的关系是M102=1001对应输出10V,分辨率为1/1001*10V=10mV。
一个简单的程序从J3pin29(DAC1)输出正弦波。
程序代码:
M102的地址是:
M102->Y:$078002,8,16,S OUT1A command value; DAC or PWM对应J3接口的pin29,这是一个16位的寄存器,带符号,范围是-32768~32767,设Ixx00=0后,通过改变M102的值即可改变输出模拟量的值。
DAC输出管脚为:
PIN | 29 | 31 | 30 | 32 | 37 | 39 | 38 | 40 | 48 |
---|---|---|---|---|---|---|---|---|---|
signal | DAC1 | DAC1/ | DAC2 | DAC2/ | DAC3 | DAC3/ | DAC4 | DAC4/ | GND |
滤波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 //关闭限位报警等
注:
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
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
I7m02:第m个伺服芯片(IC)的伺服时钟频率控制
range:0-15
uints:Servo Clock Frequency=Phase Clock Frequency / (I7m02+1)
例如,设置I7m02=3,则
伺服时钟频率=9.805885KHZ/4=2.4576KHZ
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)
I10:伺服中断时间
range:0~8388607
units:1/8,388,608 msec
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 |
一个简单的程序从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的值即可改变输出模拟量的值。
相关文章推荐
- 每日一招:最高操作境界“一买就涨”
- refresh的停车场
- C# 数据结构 之 二叉树
- PHP array_diff_assoc()
- LG Open source code获取
- 为什么使用LINUX(有点长,没耐心别看)大家自己体会
- web.xml中的Servlet的url-pattern映射规则
- R.java was modified manually! Reverting to generated version!项目显示红色感叹号
- NOJ1184 迷失的邮票 散列表
- lightoj 1422Halloween Costumes(区间dp)
- android SharedPreferences类存储路径、本地数据库路径
- nc 数据访问接口
- 用c#开发微信 (15) 微活动 1 大转盘
- 02 Linux 下安装JDK并测试开发“Hello World!”
- Javascript中实现String.startsWith和endsWith方法
- 第13周项目OOP版电子词典
- Android API文档_AudioFormat
- 大数据究竟是什么?一篇文章让你认识并读懂大数据
- 人事面试100问,助你从容面对
- EditPlus配置Java语法自动补全功能