我有一个0-5V输出的电源,这个程序应该怎么写用台达PLC。

我有一个0-5V输出的电源,这个程序应该怎么写用台达PLC。,第1张

如图所示,第一个扩展是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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10218650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存