(1)程序规划
T4中断:完成AD转换和16个通道的切换程序
USER_SCAN:PLC资源区中AD值的刷新。
AD转换过程如下:每一通道连续采样16次,采样完后得到累加和,然后启动下一通道的AD转换。
PLC资源区中AD值的刷新过程如下:在梯形图扫描周期结束时进行,把各路AD值的累加和求平均值后放入PLC的资源区的对应位置处。
(2)程序代码
INIT_AD: ;AD初始化
MOV SFRPAGE, #ADC0_PAGE
MOV REF0CN, #07H ;内部参考电压/输出到VERF
;启动内部温度传感器
MOV AMX0CF, #00H ;单极性输入
MOV ADC0CF, #0B8H ;D7--D3=SYSCLK/采样时钟-1
;采样转换时钟=1US
;D2--D0=GAIN
;000 GAIN=1
MOV ADC0CN, #90H ;启动AD采样
MOV AD_CHANNEL, #00H ;AD通道号,初值为0
MOV AD_COUNT, #00H ;16次采样次数计数。初值为0
RET SAMPLE_AD: ;AD采样开始
MOV SFRPAGE, #ADC0_PAGE ;AD控制寄存器页
MOV A, AD_CHANNEL ;采样值的累加和是一个字基地址 ;为#XAI,偏移地址为AD_CHANNEL
RL A
MOV DPTR, #XAI ;XAI存放16次采样值的累加和
ADD A, DPL ;低字节相加
MOV DPL, A
MOVX A, @DPTR
MOV B, A
MOV A, ADC0L
CLR C
ADDC A, B
MOVX @DPTR, A
INC DPTR ;高字节相加
MOVX A, @DPTR
MOV B, A
MOV A, ADC0H
ANL A, #0FH
ADDC A, B
MOVX @DPTR, A ;#XAI中存放格式为低字节、高字节
MOV SFRPAGE, #ADC0_PAGE ;AD控制寄存器页
MOV ADC0CN, #090H ;启动下次AD采样
INC AD_COUNT
MOV A, AD_COUNT
CLR C
SUBB A, #16
JNC FILL_XAI_XAD ;当16次采样完成后,把XAI中16 ;个采样和(2字节)存放到XAD
RET
3、驱动程序的嵌入
在KEIL C51中编译上述程序。使用下载工具软件“DOWNHEX”,把生成的.HEX文件通过串口下载到芯片组的固定地址处,使得内核可以调用它,从而完成二次驱动程序的开发。到此,16路模拟量PLC的开发工作基本完成。
三、功能介绍
基于嵌入式PLC开发的多路模拟量网络节点具有以下功能:1、采集工业现场的多路热电偶信号,2、支持三菱、台达等多家人机界面, 3、支持梯形图编程(86条指令), 4、支持CANbus互连(多机并联运行或扩展单元连接)等。这里简要介绍下该网络节点的梯形图功能应用。