电工学PLC通信(1):通信就是电压一高和一低,没你想的那么难
这一节介绍PLC的数据通信,数据通信在PLC的学习中是属于比较高级的应用,对于初学者来说觉得还是有一定的难度,许多朋友一接触通信就感觉头大,各种的云山雾罩,想要学习却又无从下手。其实PLC的数据通信并没有大家想的那么难学,你只要把通信的基础原理弄明白了,不管什么样的通讯很容易就能学会,因为绝大数的通信本质都是一样的,都是一堆0和1,。下面我就以图片加文字的方式,从通信最基础的知识给大家讲起。
看图1 ,这是一张PLC和各种现场设备的通信示意图,通信的组合方式有许多种,可以是1对1,1对多,也可以多对多。这些通信的双方或多方虽然长的千奇百怪各不相同,但是它们都要有这么几个共同点。
1,都要有一个或多个通信端口。
2,相同的通信协议。
3, 相同的波特率,等等,这些会在以后讲解。
再看图2 ,PLC的通信原理就和我们人类的对话是一样的,都是你问我答,或我问你答。只不过我们用的是汉语对话,而PLC用的是PLC和设备能听懂的语言进行对话的。那么PLC是怎么说话的?说的又是什么呢?接着往下看。
看图3 ,就是PLC正在和外部设备进行对话,它对话的方式就是,控制通讯端口的输出电压。当想要说1时它就输出一个高电压+5V,当想要说0时它就输出一个低电压0V。这样它就能够说出无数的0和1。
这就是PLC说话的方式,并且只能说0和1,但这对于PLC通信来说已经够了,因为我们的通信设备也都只认识0和1。好了,有了共同的语言它们就可以进行交流了。
图4 ,就是PLC和变频器的1对1的通信示意图,PLC通过通信端口把输出电压变化8次,就能输出8个0或1 ,分别是10110101 。因为变频器的通信端口和PLC的通信端口是连接在一起的,所以当PLC的通信端口电压变化时,变频器的通信端口就能检测到电压的变化。它就能知道PLC给它发送的是0还是1,这样PLC让电压变化8次以后,变频器就能收到和PLC发生的一样的10110101 这一组数据。
那么变频器怎么知道它接收的这一组数据,代表的是什么意思呢?请看下图。本节的重点。
图5 ,是数据通信的格式,这是外国人在发明通讯时就规定好的,我们必须按这个格式发送数据。这个格式就是“帧” ,我们进行通信时最少要发送一个“帧” 。不能发送半“帧” ,那样通信就会失败。
1“帧” 等于12个0或1,也就是说PLC通信端口的高低电压要变化12次,才能完成1“帧”。 (注:也有11次或10次为1帧的,原理一样,这里只讲12次为1帧的)。下面我们看一下这一“帧” 是怎么组成的。
A,如图5 帧的第一位叫起始位 ,顾名思义,就是告诉设备我要开始发送数据了,注意这一位必须是0,也就是通信端口要输出低电压。
B, 帧的第二位至第九位叫数据位 ,这就我们要传送的数据,共8个位。也就是说通信端口的高低电压要变化8次。也就是说可以传送二进制0000 0000--1111 1111之间的任何一个数,用十进制表示就是0--255之间的任何一个数。我们以前讲过8个位等于1个字节,也就是说1“帧” 最多只能传送1个字节数据。
C, 帧的第十位叫奇偶校验位 ,这一位可以是0,也可以是1。这一位的作用是对前面的8个数据位中是1的位,做一个简单的奇偶数的校验。比如8个数据位要传送的是01001101这个数据,这个数据里面是1的位共有4个,那么4就是一个偶数,我们的奇偶校验位 ,这一位就是0,通讯端口就要输出低电压。如果8个数据位要传送的是11001101这个数据,这个数据里面是1的位共有5个,那么5就是一个奇数,我们的奇偶校验位 ,这一位就是1,通讯端口就要输出高电压。有了这个奇偶校验位 ,当我们在传送数据时,如果因为各种原因的干扰而破坏了真正的数据时,接收端的设备就可以通过查询“帧”中的奇偶校验位 ,来判断接收的数据正确与否。
D, 帧的第十一位和十二位叫停止位 ,就是告诉设备数据发送完成了,注意这两位必须是1,也就是通信端口要输出两次高电压。
E, 空闲位 ,它不算在“帧” 中,只要不发送数据了,也就是停止位 以后都是空闲位,空闲位都是1,也就是通信端口一直输出高电压。直到有起始位。
这就是数据通信最小的基本单位“帧”的组成和作用。总结一下,当PLC要发送数据时,通讯端口首先输出低电压,也就是起始位为0。然后再根据要传送的数据使端口输出高低电压共8次,也就是数据位。然后再计算出奇偶校验位,输出相应的电压。接着就输出停止位,这样1“帧” 的通讯就完成了。
图6 ,是一个例子,它演示的是PLC把十进制的181这个数传送给另一个设备。我们知道十进制的181转换成二进制就是1011 0101(怎么转换看我以前的讲解,这里不再重复),然后通过一个帧把它发送出去。这个例子如果你能看明白,说明这一节的内容你已经掌握了。
另: 如果你觉得讲的凑合还行的话,可以点击下面的赞赏 哈哈,当点写作的动力吧,您随意。不赞赏也无妨,有了好作品还是会和大家一起分享。我们下节再见。
西门子plc模拟量转换实例
对于自动化控制系统来说,主要处理对象无外乎数字量和模拟量,很多刚接触自动化的新人对于模拟量可能还不是很熟悉,这里以西门子plc300为例详细讲一下,其实模拟量处理如很简单。
1、 模拟量输入/输出量程转换的概念
实际工程中,我们要面对很多工程量,如压力、温度、流量、物位等,他们要使用各种类型传感器进行测量,传感器再将测量值通过输出标准电压、电流、温度或电阻信号供 PLC 采集,PLC的模拟量输入模板将该电压、电流、温度、或电阻信号等模拟量转换成数字量—整形数 (INT) 。在 PLC 程序内部要对相应的信号进行比较、运算时,常需将该信号转换成实际物理值,这样这个数值才具有实际意义。相反,我们要控制一些执行机构(如比例阀,电动阀等)需要将控制值转换成与实际工程量对应的整形数,再经模拟量输出模板转换成电压、电流信号去控制现场执行机构。要完成输入、输出模拟量转换,就需要在程序中调用功能块完成量程转换。
例如一个压力调节回路中,压力变送器输出 4-20mA DC 信号到 SM331 模拟量输入模板,SM331 模板将该信号转换成 0-27648 的整形数,然后在程序中要调用 FC105 将该值转换成 0-10.0 (MPa )的工程量(实数),经 PID 运算后得到的结果仍为实数,要用 FC106 转换为对应阀门开度 0-100% 的整形数 0-27648 后,经 SM332 模拟量输出模板输出 4-20mA DC 信号到调节阀的执行机构。
2、STEP 7调用FC105,FC106进行模拟量转换编程
2.1 FC105/FC106 在哪里
在编程界面下,在 Program elements 中的 Libraries 下的 Standard Library 下的 TI-S7
Converting Blocks 中就可以找到,见下图:
模拟量
模拟量
注意: 请不要使用 S5-S7 Converting Blocks 下的 FC105, FC106 ,该路径下的功能是用于 S5输入输出模板的,在 S7 输入输出模板上无法使用。
2.1.1 FC105 功能描述
SCALE (FC105 )功能将一个整形数 INTEGER (IN)转换成上限、下限之间的实际的工程值(LO_LIM and HI_LIM) ,结果写到 OUT 。公式如下:
OUT = [ ((FLOAT (IN) – K1)/(K2 –K1)) * (HI_LIM –LO_LIM)] + LO_LIM
常数 K1 和 K2 的值取决于输入值( IN)是双极性 BIPOLAR 还是单极性 UNIPOLAR 。
双极性 BIPOLAR :即输入的整形数为 – 27648到 27648 ,此时
K1 = – 27648.0,
K2 =+27648.0
单极性 UNIPOLAR :即输入的整形数为 0 到 27648 ,此时 K1 = 0.0 , K2 = +27648.0如果输入的整形数大于 K2 ,输出 (OUT) 限位到 HI_LIM, 并返回错误代码。 如果输入的整形数小于 K1,输出限位到 LO_LIM ,并返回错误代码。diangon.com版权所有!反向定标的实现是通过定义 LO_LIM > HI_LIM 来实现的。反向定标后的输出值随着输入值的增大而减小。
2.1.2 FC106 功能描述
UNSCALE (FC106 )功能将一个实数 REAL (IN) 转换成上限、下限之间的实际的工程值
(LO_LIM and HI_LIM) ,数据类型为整形数。结果写到 OUT 。公式如下:
OUT = [ ((IN –LO_LIM)/(HI_LIM –LO_LIM)) * (K2 –K1) ] + K1
常数 K1 和 K2 的值取决于输入值( IN)是双极性 BIPOLAR 还是单极性 UNIPOLAR 。
如果输入值在下限 LO_LIM 和上限 HI_LIM 的范围以外,输出 (OUT) 限位到与其相近的上限或下限值(视其单极性 UNIPOLAR 或双极性 BIPOLAR 而定),并返回错误代码。
2.2下面给大家举个例子:
如输入 I0.0 为 1, SCALE 功能被执行。下面的例子中,整形数 22 将被转换成 0.0 到 100.0 的实数并写到 OUT。输入是双极性 BIPOLAR ,用 I2.0 来设置。
程序中调用的FC105
执行前:
IN----------------------MW10=22
HI_LIM---------------MD20=100.0
LO_LIM--------------MD30=0.0
OUT-------------------MD40=0.0
BIPOLAR------------I2.0=TRUE
执行后:
OUT------------------MD40=50.03978588
转发是最大的鼓励!谢谢您的支持!
相关问答
plc模拟量怎么设电压?
PLC控制电压:plc的模拟量输出,0~10V等,通过PLC(西门子)的模拟量输出0~~32000对应0~~10V。PLC可编程逻辑控制器,它采用一类可编程的存储器,用于其内部存储程...
plc通讯电压是多少?
PLC通讯电压一般为24VDC,这是因为PLC系统中的输入输出模块和通讯模块都需要使用24VDC电压进行工作。此外,24VDC电压也具有较高的安全性和稳定性,能够保证PL...
用PLC显示电压和电流?
电压和电流只是模拟信号,PLC会通过数模转换去读取,但是不能显示的,同过信号后做出按照指令相应的动作,比如写一个程序,超过30V停止工作,PLC通过电压信号感...
为什么要串一个1.2K的电阻?电压是DC24V,电流是3-5A,我想知...
[最佳回答]这是步进电机驱动器的要求,没错的,我用了好几个,没出问题!算出来不一样是因为你不知道驱动器内部阻值,测量出来差不多是就行.这是步进电机驱动器的...
西门子plc能不能输出10v?
西门子PLC通常不能直接输出10V,因为它的数字输出通常是通过继电器或晶体管实现的开关输出,而不是模拟输出。虽然PLC本身可能不会输出10V的电压,但可以通过外部...
plc中im接24v还是0v?
1.PLC中IM接24V。2.因为PLC中的IM(输入模块)是用来接收外部信号的模块,而外部信号通常是通过24V电源供应的,所以IM接收的电压应该是24V。3.当IM接收到24V...
plc输入电压为24v吗?为什么220V的电压直接给输入也可以呢?如行程开关的信号,望能给解答.谢谢?
行程开关不需要电压啊,如它标示的:220V5A,是指行程开关里面的触点所控制的电流最大为5A,这样的行程开关在125V,24V.36V.12V电路中都可以使用,要注意的只是里...
plc输入电源多少伏?
一、PLC的输入电源是多少?这个要看各国的用电来确定。我国的市电是220V,一般我们国家用的plc是220V主电源的。但是plc后台电源一般是24V的。PLC的输入电源最...
plc的引脚对应输入有几种?
PLC(可编程逻辑控制器)的引脚对应输入主要有以下几种类型:1.数字输入(DigitalInput):这是最常见的输入类型,用于接收数字信号。PLC通常提供多个数字输...P...
plc自身输出24v不对咋办?
如果PLC自身输出的24V电压不正确,可能会导致连接到该输出的设备无法正常工作。以下是几个可能的原因和解决方法:1.检查供电电源:首先检查与PLC连接的电源。...