
如图所示,第一个扩展是04AD,第二个扩展是04DA。第一行程序是设置04AD的4路模拟量输入都是-10V~+10V(对应数值量是-8000~+8000)。第二行是设置04DA的4路模拟量输出都是0-10V(对应数值量是0~4000)。第三行是读取第一路AD的值到D0中,第四行是D0除以2等于D2,因为输入的5V是4000,而输出5V需要2000,是2倍的关系,因此要除以2,第五行是第一路DA输出。
望采纳。。。。。。
CH EQU 30H;定义CH为30H
DPCNT EQU 31H;定义DPCNT为31H(31H单元用于存放数在数据表DPCD中的偏移地址的基础量)
DPBUF EQU 33H;定义DPBUF为33H
GDATA EQU 32H;定义GDATA为32H(32H单元用于存放读入转换的数据量)
ST BIT P30;定义ST为P30位
OE BIT P31;定义OE为P31位
EOC BIT P32;定义EOC为P32位
ORG 00H;将后面的程序汇编后存入ROA的0000H以后单元
LJMP START;程序入口,转开始START
ORG 0BH;将后面的程序汇编后存入ROA的000BH以后单元
LJMP T0X;中断入口,转中断T0X
ORG 30H;将后面的程序汇编后存入ROA的0030H以后单元
START: MOV CH,#0BCH;将数据0BCH送入30H单元
MOV DPCNT,#00H;清零31H单元
MOV R1,#DPCNT;将数据31H送入R1(作为工作单元计数初值)
MOV R7,#5;将数据5送入R7(作为循环计数初值)
MOV A,#10;将数据10送入A
MOV R0,#DPBUF;将数据33H送入R0
LOP: MOV @R0,A;
INC R0
DJNZ R7,LOP;将33H--37H单元置初值10
MOV @R0,#00H
INC R0
MOV @R0,#00H
INC R0
MOV @R0,#00H;将38H--3AH单元置初值0
MOV TMOD,#01H;设置T0方式1工作
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256;设置T0的计数初值
SETB TR0;启动T0计数
SETB ET0;允许T0溢出中断
SETB EA;开中断
WT: CLR ST;清P30位
SETB ST;置位P30位
CLR ST;清P30位(产生启动转换脉冲)
WAIT: JNB EOC,WAIT;P32为0则等待(A/D转换未完则等待)
SETB OE;A/D转换完则置位P31位
MOV GDATA,P0;读取转换的数字量到32H单元
CLR OE;清P31位
MOV A,GDATA
MOV B,#100
DIV AB;数字量除100,商在A中(即百位数),余数在B中
MOV 33H,A;百位数存入33H单元
MOV A,B
MOV B,#10
DIV AB;第一次余数再除10,商在A中(即十位数),余数在B中(即个位数)
MOV 34H,A;十位数存入34H单元
MOV 35H,B;个位数存入35H单元
SJMP WT;转WT处
T0X: NOP;中断程序
MOV TH0,#(65536-4000)/256
MOV TL0,#(65536-4000) MOD 256;设置T0的计数初值
MOV DPTR,#DPCD;取数据表DPCD的首地址
MOV A,DPCNT;将31H单元内容送入A
ADD A,#DPBUF;加上数的百位
MOV R0,A
MOV A,@R0;产生数据表DPCD中的偏移地址
MOVC A,@A+DPTR;读取显示代码
MOV P1,A;输出显示代码
MOV DPTR,#DPBT;取数据表DPBT的首地址
MOV A,DPCNT;将31H单元内容送入A
MOVC A,@A+DPTR;读取显示数码管地址
MOV P2,A;输出显示数码管地址
INC DPCNT;31H单元内容加1(准备下一个数据输出)
MOV A,DPCNT;
CJNE A,#8,NEXT;8个数码管的显示数据没有都输出则转NEXT
MOV DPCNT,#00H;8个数码管的显示数据都输出了则清31H单元
NEXT: RETI;中断返回
DPCD: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH,00H
DPBT: DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
END
读取的值在D100中,与设定的值K2200进行对比(如果这个对比值要进行修改的话用D寄存器代替),而D100中的值范围是0~4000(当然,这是16位的模块;如果是32位的模块,那应该是0~32000)。
置于如果要将数值换算成你的压力值,那就要用到运算程序, 如算以250bar对应最高4000来说,4000/250=16,即每bar值为16。当然实际数值还是在调试时确认为准,调试时看看当压力达到250bar时D100实际的数值是多少,然后再以这个算。
以上就是关于我有一个0-5V输出的电源,这个程序应该怎么写用台达PLC。全部的内容,包括:我有一个0-5V输出的电源,这个程序应该怎么写用台达PLC。、求此汇编程序的注释、请问PLC中AD模块转换回来的数字是什么值(4-20mA,0-4000),我的读压力传感器(0-250bar)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)