浅谈西门子S7-1200PLC的模拟量转换,附实例演示
大家好,欢迎关注电气技术微课堂!
今天来简单探讨一下西门子S7-1200PLC的模拟量使用方法。
实际工业应用中常常由传感器采集压力、温度、速度等非电信号,并将这些非电量转换为电压或电流信号再传输给PLC、单片机等控制系统,此时这些信号均为模拟量。我们往往要对PLC中采集的模拟量信息进一步的加工处理,方便用来计算、比较、显示等。
模拟量转换的相关设置
S7-1200(1214C)内部集成了2路模拟量信号输入通道,分别为通道0和通道1,也就是可以同时接收并处理两个传感器输入的模拟信号,对应的地址为IW64和IW66(长度为一个字,16位),在TIA PROTAL中选中PLC的“常规”—“AI”标签项可以进行查看和设置。
S7-1200PLC模拟量转换的工作原理
假设PLC的AI0口外接了一个温度传感器,传感器将测得的温度值转换为一个范围为0~10V的连续电压信号输入给PLC。模拟量经过PLC内部的A/D转换后被转换成了范围0~27648的数字量并存储在特定地址的寄存器中。具体的转换流程如下图所示。
如何将模拟量输入转换的数字值还原成对应的物理量?
例:某个压力传感器的量程为0~0.1MPa,转换成对应的电压信号为0~5V,设转换后地址IW64中的数值为N,尝试求以Pa为单位的压力值。
解: S7-1200PLC默认的模拟信号输入电压范围是0~10V,转换成数字信号的范围是0~27648,因为此压力传感器输出电压范围是0~5V,所以转换的数字信号范围是0~13824。压力传感器的测量压力范围是0~0.1MPa,由此可推导出公式,将电压值还原成以Pa为单位的压力值并将结果存储于寄存器MD30中。
电压转换成数字信号后存入IW64的数值为N
在博途软件中编写对应的PLC程序如下:
在编写梯形图程序时有以下两点需要特别注意:
1)因为PLC执行除法指令时会丢掉余数而只保留商值,这样会影响计算的精度,所以在编写梯形图程序计算压力值时要注意先乘后除。
2)IW64中的数据类型为整型(INT),该值乘以100000后其结果会超出int的范围,所以必须先应用CONV指令将数据类型转换为DInt。
PLC编程到底是啥?看电气大神讲PLC,膜拜!真是一针见血
PLC常见的用途是替代电气控制中的继电器逻辑控制电路。例如电机控制、变电站市电进线互投和自备发电机起停控制、过程控制DCS操控系统和楼宇消防系统控制等等。一般的城市居民小区高层建筑的水压控制,就是采取PLC配套变频器执行水泵操控的。
PLC更重要的用途是构建数据交换系统,它把现场总线变换为工业以太网,实现现场设备与后台的数据交换,以及接收和执行遥控命令等等。
在工业、民居、国防、交通(地铁、港口、民航)、银行和移动的数据中心中都大量使用PLC,由此可见PLC的用途之广。
PLC的硬件系统简介
图1:ABB的AC500系列PLC
图1的左侧是通信接口模块,它能实现PLC的通信数据和网络数据交换。向右显示了"AC 500"的是PLC的主体,即CPU模块。再往右是开关量输入/输出模块以及模拟量输入输出模块。
由此我们看到,PLC类似于一个单片机系统。事实上,PLC就是单片机智能化系统,但它的可靠性和稳定性非常高,远远超过了一般的单片机。
在工业环境下的电磁骚扰强烈,所以PLC必须要满足国家标准对电磁骚扰的要求。有关电磁骚扰的国家标准如下:
图2:国家标准中对工业条件下电磁骚扰的测量方法和要求
PLC抵御电磁骚扰的硬件措施包括电源隔离、开关量输入接口采取光电隔离、模拟量也采取光电隔离等措施。输出接口的电磁骚扰会弱一些,但也需要采取一定的措施,包括OC门和继电器接口等等。
为了提高PLC的可靠性,在重要场合还采取主PLC与从PLC冗余配套工作的措施,见下图:
图3:PLC的冗余措施
我们原来在变电站电力监控系统中用工业控制计算机作为中间层面的数据处理中心,但工业控制计算机存在电源故障、硬盘故障,抗电磁骚扰能力弱,后来就淘汰了,转而使用PLC作为数据处理中心。下图是《低压成套开关设备的原理及其控制技术》中的插图:
图4:图中的CCU就是PLC构建的通信管理中心
在图4中,既有利用PLC执行低压进线、母联和自备发电机间的备自投系统,也有执行数据交换的PLC系统。
PLC的软件系统
学过初级编程知识的人都知道循环语句。一旦程序进入死循环,程序事实上就是死机了。对于PLC来说也是如此。一旦PLC进入死循环,它的接口会复位,被控制量会发生严重问题。因此,PLC的程序语句是一条条顺序执行的,一直运行到最后一条再返回,不会出现死循环。即便是转移指令,只要转移条件满足就转移,否则跳过转移程序段继续执行。
这就是PLC软件系统的可靠性很高的原因之一。
我们看下图:
图5:PLC的模块化编程语言
图5摘自北京地铁工程的PLC程序局部。
PLC程序格式有两种,其一是梯形图格式,其二是模块化编程语言格式。对于较复杂的PLC程序,一般都采用模块化编程语言来编写。不管是梯形图也好,是模块化编程语言也好,它们都必须符合国际电工委员会IEC61131-3标准的要求。
下图是用于控制电机实现星三角转换的程序:
图6:电动机星三角转换的PLC程序局部
图6中的STEP2和STEP3就是转移程序端。如果不符合条件,程序会跳过转移程序段执行。
最有意思的是PLC的PID程序模块,很有使用价值。
给大家的建议
学习PLC技术,刚开始大都以梯形图为主。实际上,PLC刚开始学习时无非就是控制十字路口红绿灯等等,真正的PLC技术绝不仅仅在于此,只要做过一个工程,对PLC的认知就会大幅提升。
相关问答
plc能用C语言编程吗?
PLC有大型小型分别,一般小型机是不行,例如三菱FX系列,但是三菱大型PLCQ系列是可以的,Q有专用的C语言模块,西门子S7-300,400也是可以。而且C语言其实很难使...
plc与C语言有什么关系啊!-ZOL问答
c是一门高级语言。可以开发底层的软件,比如导弹自动控置系统。火见系统。windows操作系统。都可以用c来开发。html是网页开发语言,以标记为主的客户端程序...
plc用c语言怎么进行编程?
在PLC中使用C语言进行编程需要遵循特定的规范和语法。首先,需要了解PLC的硬件和操作系统。然后,使用PLC厂商提供的开发工具,如编译器和调试器,编写C代码。...
plc十六进制怎么转ascii码?
要将PLC的十六进制转换为ASCII码,可以使用编程语言实现。首先,将PLC的十六进制数值转换为十进制数值。然后,将该十进制数值转换为对应的ASCII字符。具体转换方...
plc和c语言哪个更有含金量?
PLC和C不是对立的,都是编程工具,学PLC最好是有C语言的基础,当然没有C语言的基础也可以学PLC编程,但不会达到一个高的层次,写写简单的PLC梯形图是可以的。现...
怎样用C语言编一个解一元二次方程的程序(可以看步骤)!-懂得
#include#includeintmain(void){doublea,b,c,x1,x2,d;scanf("%lf%lf%lf",&a,&b,&c...
怎样用C语言编一个解一元二次方程的程序?-懂得
用三个变量,来接一元二次方程的三个参数,然后根据这三个参数计算△=b*b-4ac,再根据△判断根情况,并根据求根公式计算出相应根,以上都是用c数学计算...
plc编程方法有几种?
PLC编程方法有以下几种:1.梯形图编程:梯形图编程是最常用的一种PLC编程方法,使用图形化的方式来表示逻辑控制程序。梯形图编程类似于电气图,可以直观地表示...
请问,三菱PLC的C251对高速脉冲计数时(输入点正转X0,反转脉冲X1)C251前需要串X0或X1的触点吗?
不用,X0与X1不用在程序中存在。只要你使用C251,会自动调用这两个点作为脉冲输入点。不用,X0与X1不用在程序中存在。只要你使用C251,会自动调用这两个点作为脉...
台达plc输出端c0什么意思?
PLC的C0是计数器。16位增计数器(C0~C199)共200点,其中C0~C99为通用型,C100~C199共100点为断电保持型(断电保持型即断电后能保持当前值待通电后继续计数)...PL...