编号 |
元件名称 |
转换器型号 |
分度号 |
测量范围 |
0 |
一线温度传感器 |
DS18B20 DS18S20 |
-55~125℃ | |
1 |
一线温湿度传感器 |
DHIH10C |
-40~85℃ | |
2 |
镍铬-镍硅(镍铝)热电偶 |
DZT-1T |
K |
-250~1200℃ |
3 |
铁-康铜热电偶 |
DZT-1T |
J |
-200~1100℃ |
4 |
镍铬-康铜热电偶 |
DZT-1T |
E |
-250~800℃ |
5 |
铜-康铜热电偶 |
DZT-1T |
T |
-250~400℃ |
6 |
铂铑30-铂铑6热电偶 |
DZT-1T |
B |
0~1500℃ |
7 |
铜热电阻 |
DZT-Cu50 |
Cu50 |
-50~150℃ |
8 |
铜热电阻 |
DZT-Cu100 |
Cu100 |
-50~150℃ |
9 |
自定义 |
自定义 |
自定义 |
— |
10 |
铂热电阻 |
DZT-Pt100 |
Pt100 |
-200~600℃ |
11 |
铂热电阻 |
DZT-Pt1000 |
Pt1000 |
-200~600℃ |
12 |
一线DAC |
DZT-DAC |
1~5V,4~20mA(O) | |
13 |
标准仪表 |
DZT-05V |
mA/V |
1~5V,4~20mA 0~5V,0~10mA(in) |
14 |
一线开关(继电器) |
开关量 |
I/O |
— |
15 |
自定义 |
自定义 |
自定义 |
— |
表一
//本程序是一线总线指令卡与西门子S7-200(CPU224)通讯例程
//登记,读温度,删除命令都是以第一通路为例.
//写数据需要接一线控制继电器,本文略去。
//使用分度号为0的一线温度传感器,器件为DS18B20
//SBR0: 初始化子程序
//SBR1:I0发送登记第1路命令子程序
//SBR2:发送读第1路温度命令子程序
//SBR3:发送删除第1路命令子程序
//INT0:登记第1路传感器成功,置位Q0.0
//INT1:读取第1路传感器温度值,小于25度置位Q0.6,大于等于25度置位Q0.7
//INT2:删除第1路成功,置位Q0.1
*******************************************************************************
// 主程序
LD SM0.1 //首次扫描标志位SM0.1=1
CALL SBR_0 //调用初始化子程序
LD SM0.7 //若在TERM模式,则设置为PPI协议
= SM30.0 //若在RUN模式,则设置为自由口协议
DTCH 8 //禁止字符接收中断
********************************************************************************
SBR0 初始化
LD SM0.0
MOVB 9, SMB30 //初始化自由口,9600bps,8位数据位,1位停止位,无奇偶校验
MOVD &VB200, VD86 //接收缓存区起始地址VB200
ENI //允许用户中断
MOVB 3,VB30 //缓冲区的字符计数器,每个传感器的温度均用三字节BCD码表示
R Q0.0,0
R Q0.1,0
R Q0.6,0
R Q0.7,0
CALL SBR1 //发送登记第1路命令子程序
CALL SBR2 //发送读取第1路温度命令子程序
********************************************************************************
SBR1 登记第1路命令,把一线温度传感器接在指令卡登记位置上
LD I0. 0 //I0.0 接通,执行登记命令.登记完成将其断开.
MOVB 2, VB100 //发送字节数
MOVB 16#80, VB101 //发送命令高字节W1的内容
MOVB 16#00, VB102 //发送命令低字节W2的内容
XMT VB100, 0 //发送命令
ATCH INT_0, 8 //出现接收字符中断时执行INT0
********************************************************************************
SBR2 读第1路的温度值命令,把一线温度传感器接在指令卡总线上
LBL 1
LD I0.1 //I0.1 接通,反复执行温度读取命令;断开I0.1,停止读温度.
MOVB 2, VB100 //发送字节数
MOVB 16#00, VB101 //发送命令高字节W1的内容
MOVB 16#00, VB102 //发送命令低字节W2的内容
XMT VB100, 0 //发送命令
ATCH INT_1, 8 //出现接收字符中断时执行INT1
S M0.1,1 //读一次温度完成,M0.1=1
LD M0.1,1
TON T40, +50 //循环读取,每隔5秒读一次温度
LD T40
R T40, 1
JMP 1
********************************************************************************
SBR3 删除第1路命令
LD I0.2 //I0.2 接通,执行删除通路命令.删除完毕将其断开.
MOVB 2, VB100 //发送字节数
MOVB 16#E0, VB101 //发送命令高字节W1的内容
MOVB 16#00, VB102 //发送命令低字节W2的内容
XMT VB100, 0 //发送命令
ATCH INT_2, 8
*********************************************************************************
INI0 //登记第1通路命令成功,置位Q0.0
LD SM0.0
AB= SMB2, 16#80 //若返回码是80H,登记成功
= Q0.0 //置位Q0.0
********************************************************************************
INI1 //读第1通路温度值,返回值放在以VB200为首的三个单元里
LD SM0.0
AB= SMB2, 16#00 //第1路分度号为0
MOVB SMB2, *VD86 //接收到的字符存入指针变量所指的地址
INCD VD86 //接收缓冲区指针加1
DECB VB30 //数据字节数减1
LD SM1.0 //若零标志SM1.0=1,表示VB30=0,三个字节接收完成
//设置温度区间的判断范围
LDW< VW201,16#0190
= Q0.6 //若返回温度值小于25℃,置位Q0.6,复位Q0.7
R Q0.7,0
NOT
= Q0.7 //若返回温度值大于等于25℃,置位Q0.7,复位Q0.6
R Q0.6,0
CRETI
*********************************************************************************
INI2 //删除命令完成,置位Q0.1
LD SM0.0
AB= SMB2, 16#80 //若返回码是80H,删除成功
= Q0.1 //置位Q0.1
********************************************************************************
参考文献:
1. 王雨、贺为人 一线总线技术方案 《仪器仪表与传感器》 2003.08 P47-48
2. 王雨、贺为人 1-wire bus 指令卡的应用 《中国仪器仪表》 2003.10 P44-47