两线式磁性开关如何与三菱的plc连接

两线式磁性开关如何与三菱的plc连接,第1张

磁性开关有两根线扮桐,一激闭根棕色,一根蓝色,以NPN为例,蓝色接直流-24V,棕色接至PLCX输入端就好了。

蓝色接直流-24V,棕色接至PLCX输入端。

PLC:可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术 *** 作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。

扩展资料:

两线的接近开关都是棕色正极,蓝线负极,至于怎么接PLC,要看PLC类型。

PLC的输入端有两种状态(常开、常闭),三种触发方式(上升沿、下降沿及常态),需要通过编程来确定。

首先要搞清楚所用器件输出端的状态和如何应用(常开、常闭),再对PLC作相应的编程。

两线磁性接近开关内部如明缺裂果是用干簧管,就可以用万用表测量好坏,如果是电子电路,那就不能用万用表测量,只能上电去判断好坏!

参考资料来源:百度百科——双控开关

磁性开关主要分两扮祥颤种:干簧管和霍尔。

PLC有一般两种输入信号:0V输入和24V输入

干簧管的无指示灯的不区分极性,它只是一个触点开关,靠近磁性体时接通,所以需要输入0V就一根线接0V另一根接PLC输入点。

霍尔的带指示灯的(或者干簧管带指示灯的)需要区分正负极,一般常见的是棕蓝两种颜色的线。以此为例:如果需要输入0V那么棕色接PLC输入点,蓝色接0V。如果需要输入24V那么厅败棕色接24V,蓝色接PLC输入点。

至于原理宴族和电流方向自己看下图。

将干簧管脉冲信号通过单片机实现到数码管显示:

/********************************************************************

* 文件名  : TLC549.c

* 描述    :  该程序实现了对TLC549的控制。通过TLC549把电压转换为数字信号并通过数码管显示出来。实际工作中进行AD采样时,一般都要把AD信号处理后再用。在这里,采集了30次,去掉最大和最小的5个,中间20个取平均值,最大型伏限度的保证了所要采集AD的准确性。

***********************************************************************/

#include

#include

#define uchar unsigned char

#define uint  unsigned int

sbit AD_Out = P3^2    //TLC549输出端

sbit CS = P1^0     //TLC549片选信号

sbit AD_In = P1^1    //TLC549输入端

uchar code table[10] = {0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09}

uchar code table_d[10] = {0x02, 0x9e, 0x24, 0x0c, 0x98, 0x48, 0x40, 0x1e, 0x00, 0x08}     //带点数码管显示

/********************************************************************

* 名称 : AD_Change(void)

* 功能 : TLC549驱动程序,在“视频及教程”中有讲解。

* 输入 : 无

* 输出 : temp (电压值)

***********************************************************************/

uchar AD_Change(void)

{

uchar i,temp = 0

CS = 0

_nop_()

_nop_()

_nop_()

_nop_()

for(i=0 i<8 i++)

{

AD_In = 1

_nop_()

_nop_()

temp = temp << 1

if(AD_Out == 1) temp += 1

AD_In = 0

_nop_()

_nop_()

}

CS = 1

return temp

}

/********************************************************************

* 名称 : Delay()

* 功能 : 延时,延时时间为 1ms * del

* 输入 : del

* 输出 : 绝租歼无

***********************************************************************/

void Delay(uint del)

{

uchar i, j

for(i=0 i

for(j=0 j<=148 j++)

}

/***********************************************************************

* 名 称: Average()

* 功 能: 中位值平均滤波法,取一共三十个数据,最大和最小的五个数据不要

对中间的二十个数据求平均值

* 输 入: 三十个待处理的值

* 输 出:得到一个中位的平均值

***********************************************************************/

uint Average(uint buffer[30])

{

uchar i,j

uint temp

for(i=1 i<30 i++)    ////先对整个数组的三十个值进行从小到大的排列

for(j=29 j>=i --j)

{

if(buffer[j-1] > buffer[j])

{

temp = buffer[j-1]

buffer[j-1] = buffer[j]

buffer[j] = temp

}

}

////对数组进行处理,去掉一个最大值和一个最小值,中间的二十个值再来求平均值

temp = 0

for(i=5 并冲i<25 i++)

{

temp += buffer[i]

}

temp = (uint)(((float)temp) / 20 + 0.5)

return(temp)

}

/***********************************************************************

* 名 称: AD_Filter()

* 功 能: 进行AD采集30次,并进行滤波处理

* 输 入: 三十次AD采集值

* 输 出:经过处理后的AD值

***********************************************************************/

uint AD_Filter()

{

uint Date_Buffer[30] = {0}, temp

uchar i

for(i=0 i<30 i++)

{

Date_Buffer[i] = AD_Change()

Delay(1) //延时1毫秒采集一次。这里可以根据工作需要调整时间。

}

temp = Average(Date_Buffer)

return(temp)

}

/********************************************************************

* 名称 : Main()

* 功能 : 主函数

* 输入 : 无

* 输出 : 无

***********************************************************************/

void Main()

{

uint i = 0,temp

uint j

P2 = 0x00

P1 = 0xff

while(1)

{

temp = AD_Filter()

j = temp * 2

for(i=0 i<40 i++)

{

P0 = table_d[j / 100]

P2 = 0x04

Delay(10)

P0 = table[j/ 10 % 10]

P2 = 0x02

Delay(10)

P0 = table[j % 10]

P2 = 0x01

Delay(10)

}

}

}


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

原文地址: https://outofmemory.cn/yw/12346929.html

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

发表评论

登录后才能评论

评论列表(0条)

保存