首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
在PLC上应用一线总线技术
来源:本站整理  作者:佚名  2010-02-11 00:23:14



    PLC以其简炼、可靠、易于编程、功能强大、经济实用等方面技术优势,成为工业自动控制领域的主导产品。但是在PLC小型化、微型化与功能扩展之间必然存在不易解决的矛盾。诸如,非线性信号的识别与处理方面,如果由PLC来完成这些工作,也就使得编程、接线、调试都处于一种两难境地。成本也会大大增加。即使是大、中型PLC,也鲜有配置这些功能,因为那样做也就等于混淆了PC机与PLC之间各自不同的用途,使得PLC失去了做为工控单元的特点。


    一线总线指令卡可以去除PLC在处理非线性信号数据方面的负担,特别是一些内存空间小,没有独立显示对话窗口,依赖使用通讯口进行编程控制的小型PLC,只要加上一线总线指令卡(如图一)就可以接收并处理各种非线性信号(详见表一),PLC本身只负责接收并使用处理后的数据。本文给出一段例程,读者可以根据例程和一线总线指令卡的技术说明轻松地进行编程。

编号

元件名称

转换器型号

分度号

测量范围

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

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:87,871.09000 毫秒