西门子s7200常见模拟量转化
S7-200模拟量转换精度计算算法
S7-200模拟量转换精度计算算法1. 引言S7-200系列是一种常用的工业自动化控制系统设备,常用于对模拟量信号的转换和处理。
本文档旨在介绍S7-200模拟量转换精度计算算法的原理和步骤,帮助用户更好地了解其工作原理和应用。
2. 算法原理模拟量转换精度计算算法的核心原理在于将输入信号的电压或电流值转换为相应的数字量,以便进行后续的数值处理。
其计算公式如下:模拟量数值 = (AD 数值 - AD 最小值) * 模拟量范围 / (AD 最大值 - AD 最小值)其中:- 模拟量数值:表示模拟量的数值,是转换后的结果。
- AD 数值:表示模拟输入信号的模拟到数字转换器(Analog-to-Digital Converter,ADC)的输出值。
- AD 最小值和 AD 最大值:表示 ADC 可接受的最小和最大模拟量输入值。
- 模拟量范围:表示模拟量输入信号的可测量范围。
3. 算法步骤以下是S7-200模拟量转换精度计算算法的具体步骤:1. 确定模拟量输入信号的最小和最大值,即 AD 最小值和 AD 最大值。
2. 获取 ADC 输出值,即 AD 数值。
3. 将 AD 数值代入计算公式,计算模拟量数值。
4. 根据需要进行附加的处理,比如单位转换、平滑处理等。
5. 使用模拟量数值进行后续的控制或数据分析。
4. 注意事项在使用S7-200模拟量转换精度计算算法时,需要注意以下事项:- 确保输入的 AD 数值在 AD 最小值和 AD 最大值范围内,否则可能会导致结果不准确。
- 注意模拟量范围和计算所需的单位,确保结果的正确性。
- 根据具体的应用场景,可能需要使用平滑滤波算法对模拟量数值进行平滑处理,以减小噪声的影响。
5. 总结S7-200模拟量转换精度计算算法是一种常用的工业自动化控制系统算法,用于将模拟量信号转换为数字量进行后续的处理。
本文介绍了算法的原理和步骤,并给出了注意事项,希望能够对用户在S7-200系统中使用模拟量转换精度计算算法提供帮助。
西门子200模拟量转换库的使用
如何对 S7-200 的 CPU224XP 和扩展模块 EM 231, EM 232 及 EM 235 的模拟量值进行比例换算?显示订货号说明:扩展模块 EM 231、 EM 232 和 EM 235模拟量的输入输出和 CPU224XP 一样以 word 格式的整数显示,这就需要做转换来确保正确的显示和过程中的应用 。
这些转换可通过附件中的下载功能块来完成。
下载中包括 转换功能块的 "Scale" 库 和易于理解的例程"Tip038" 。
1. 比例换算:下列图表显示输入输出值的比例换算。
这里对术语 "单极性", "双极性" 和 "20% 偏移" 有解释。
这些术语在其他 里非常重要。
如STEP 7Micro/Win - PID 向导(工具 > 指令向导 > PID 控制器)单极性比例换算只有正的或负的值范围 (图 01 显示了一个模拟量输入值 0到32000的例子)。
图 01在带有20%偏移的单极性的例子中, 最低限值是最大限值的 20% 。
(图 02 显示了一个模拟量输入值6400到 32000的例子)。
图 02双极性比例换算有正的和负的值范围 (图 03 显示了一个 模拟量输入值 -32000 到 32000的例子)。
图 03下表是对一些缩写地解释:参数描述Ov换算结果 (输出值)Iv模拟量值 (输入值)Osh换算输出值的高限 (换算输出高限)Osl换算输出值的低限 (换算输出低限)Ish换算输入值的高限 (换算输入高限)Isl换算输入值的低限 (换算输入低限)表 012. 公式以下公式由计算换算值的图表中得出:Ov = (Osh - Osl) / (Ish - Isl) * (Iv - Isl) + Osl3. 库3.1 "Scale" 库地描述"scale.mwl" 库包括从 INTEGER 到 REAL (S_ITR)、从REAL to REAL (S_RTR)及从REAL 到 INTEGER (S_RTI)类型数据的比例换算。
西门子s7-200常用寄存器使用基础知识
西门子s7-200常用寄存器使用基础知识1、S7-200将1个字长(16位)数字值按比例转换为电流或电压。
可以用区域标识符(AQ)、数据长度(W)及字节的起始地址来改变这些值。
因为模拟量为1个字长,且从偶数字节(如0、2、4)开始,所以必须用偶数字节地址(如AQW0、AQW2、AQW4)来改变这些值。
模拟量输出值为只写数据。
模拟量转换的实际精度是12位。
格式:AQW[起始字节地址]。
例如:AQW42、在S7-200 CPU中,计数器用于累计从输入端或内部元件送来的脉冲数。
它有增计数器、减计数器及增/减计数器3种类型。
由于计数器频率扫描周期的限制,当需要对高频信号计数时可以用高频计数器(HSC)。
计数器有以下两种寻址形式。
当前值寻址:16位有符号整数,存储累计脉冲数。
计数器位寻址:根据当前值和预置值的比较结果置位或者复位。
同定时器一样,两种寻址方式使用同样的格式,即C+计数器编号。
例如:C0(1)每个高速计数器都有一个32位当前值和一个32位预置值,当前值和预设值均为带符号的整数值。
要设置高速计数器的新当前值和新预置值,必须设置控制字节(表6-7),令其第五位和第六位为1,允许更新预置值和当前值,新当前值和新预置值写入特殊内部标志位存储区。
然后执行HSC指令,将新数值传输到高速计数器。
当前值和预置值占用的特殊内部标志位存储区如表1所示。
表1 HSC0-HSC5当前值和预置值占用的特殊内部标志位存储区除控制字节以及新预设值和当前值保持字节外,还可以使用数据类型HC(高速计数器当前值)加计数器号码(0、1、2、3、4或5)读取每台高速计数器的当前值。
因此,读取操作可直接读取当前值,但只有用上述HSC指令才能执行写入操作。
(2)执行HDEF指令之前,必须将高速计数器控制字节的位设置成需要的状态,否则将采用默认设置。
默认设置为:复位和起动输入高电平有效,正交计数速率选择4×模式。
执行HDEF指令后,就不能再改变计数器的设置,除非CPU进入停止模式。
S7-200模拟量详细教程
模拟量比例换算之迟辟智美创作、(D/A)数/模转换之间的对应关系,S7200 CPU内部用数值暗示外部的模拟量信号,两者之间有一定的数学关系.这个关系就是模拟用一个0 20mA的模拟量信号输入,在S7200 CPU内部,0 20mA对应于数值范围0 32000;对4 20mA的信号,对应的内部数值为都是0 16MPa,可是一个是0 20mA输出,另一个是4 20mA输出.它们在相同的压力下,变送的模拟量电流年夜小分歧,在S7200内者之间存在比例换算关系.模拟量输出的情况也年夜致相同.4 20mA之间换算关系,但模拟量转换的目的显然不是在S7200 CPU中获得一个0 32000之类的数值;对编程和把持人员来说,获得值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标.程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子法式,就不用进行0 20mA与4 20mA信号之间的换算,只需进通用比例换算公式模拟量的输入/输出都可以用下列的通用换算公式换算:Ov = [(Osh Osl)*(Iv Isl)/(Ish Isl)] + Osl其中:Ov: 换算结果Iv: 换算对象Osh: 换算结果的高限Osl: 换算结果的低限Ish: 换算对象的高限Isl: 换算对象的低限它们之间的关系可以图示如下:图1. 模拟量比例换算关系实用指令库在Step7 Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程.为便于使用,现已将其导出成为”自界说指令库“,可以添加到自己的Micro/WIN编程软件中应用.个指令库中,子法式Scale_I_to_R可用来进行模拟量输入到S7200内部数据的转换;子法式Scale_R_I可用于内部数据到模拟量输出其中scale_I_R法式段例:将4 20mA 模拟量输入转换为内部百分比值 将内部百分比值转换为4 20mA 模拟量输出对精度要求不高的处所,420ma 转换成020ma 可按比例计算公式 =((ai4)/16)*20其法式段实例:发贴者 Memory Of Heart 时间:下午3:540 评论S7200 +TD400C显示系统时间、运行时间的法式看见论坛上有些朋友对西门子TD文本显示器显示时钟的问题比力关心,在这个帖子里笔者给出一个已经应用于工程上的法式例子,并作出详细分析,希望对关心这个问题的朋友有些帮手.这个法式是S7200+TD400C显示系统时间、当班运行时间、累计运行时间的例子.以下是s7200 S7200+TD400C显示系统时间、运行时间的法式详解:系统硬件配置如下:PLC:西门子S7200 CN;CPU 226 CN REL02.01;AC100~230V电源/DC24V输入/继电器输出;定货号6ES72162BD230XB8;固件02.01 Build2;ASIC:01.00.文本显示器:TD400C;定货号6A V6 66400AA000AX0;自带9芯TD/CPU电缆;版本:1.0.0.3.S7 200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(因为当TD400C与S7200CPU之间的距离小于 2.5米时,采纳TD/CPU电缆的方式进行供电;当TD400C与S7200 CPU之间的距离超越2.5米时,使用外部电源供电并使用PROFIBUS组件连接网络). 系统软件配置如下:S7200参数设置:在“系统块”的“断电数据坚持”中设置VW1600以后2000个单位为断电数据坚持.TD400C参数设置:TD400C地址:1CPU地址:2参数块地址:0波特率:9.6KHSA:31GUF:10键盘声音反馈:开屏幕呵护时间:10分钟S7200的系统时钟调整为准确的北京时间.下面先写一下该法式所用到的存储器的意义,以便于理解法式.本班运行时间:小时VW1600、分钟VW1604、秒VW1608;累计运行时间:小时VW1620、分钟VW1624、秒VW1628;系统时间(BCD码字节):年VB2000、月VB、日VB、小时VB、分钟VB、秒VB、星期VB;系统时间(整数):年VW1644、月VW1648、日VW1652、小时VW1656、分钟VW1660、秒VW1664;本班设备开始运行时间:小时VW1680、分钟VW1684、秒VW1688;本班设备最后运行时间:小时VW1700、分钟VW1704、秒VW1708;上班时间设置:小时VW1720、分钟VW1724;下班时间设置:小时VW1740、分钟VW1744;本班运行时间复位:VW1760;本班运行时间被复位的时间:年VW1764、月VW1768、日VW1772、小时VW1776、分钟VW1780;累计运行时间复位:VW1800;累计运行时间被复位的时间:年VW1804、月VW1808、日VW1812、小时VW1816、分钟VW1820;EEPROM写入次数:VW3558;因为考虑到编程中可能会用到一些中间存储器,所以在TD400C中界说存储器时留了余量,每两个存储器之间都有1个字的存储器留作备用. 根据相关技术要求,先组态TD400C画面,到达预期目的.“工具”——“文本显示向导”,先配置TD400C:然后点击“用户菜单”,配置用户菜单.因为该工程的界面要求很简单,所以每个菜单项只配置了1个屏幕(最多可以配置8个屏幕).第1个屏幕:该屏幕中的第1个数据(这里的数据排列顺序为:先按第1排从左至右、再按第2排从左至右的顺序依次排列,下同):因为版面的问题,该屏幕的其它PLC数据和其它屏幕中的PLC数据就纷歧一列举了.这些数据都是VW、无符号数类型,具体对应情况请参阅3楼说明. 第2个屏幕:第3个屏幕:第4个屏幕:第5个屏幕:第??个屏幕:??第??个屏幕:??TOD R指令读到的实时时钟是BCD字节,要想把这个BCD字节显示出来,需要进行转换.在网上也曾查阅过,一部份人先用BTI指令把这个BCD字节转换整数,然后用ITA指令把整数转换为ASCII字符串,在画面中嵌入这个ASCII字符串用于显示.笔者也这样试过一下,可能因为其它问题没有测试胜利,而又突然想到——在法式的多处都需要用到这个实时时钟数据,所以转换为ASCII字符以后对法式其它处所没什么作用.经过考虑,我的转换思想是:先用BTI指令把这个BCD字节转换BCD整数,然后用BCDI指令把BCD整数转换为正常的十进制/十六进制整数,在画面中嵌入这个获得的整数用于显示.在法式的其它处所也可以使用这些实时时钟变量.下面是该工程的TD400C显示画面:。
S7-200模拟量换算
上面谈到的是 0 - 20mA 与 4 - 20mA 之间换算关系,但模拟量转换的目的显 然不是在 S7-200 CPU 中得到一个 0 - 32000 之类的数值;对于编程和操作 人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量 占量程的百分比数值要更方便,这是换算的最终目标。
本班运行时间:小时 VW1600、分钟 VW1604、秒 VW1608; 累计运行时间:小时 VW1620、分钟 VW1624、秒 VW1628; 系统时间(BCD 码字节):年 VB2000、月 VB2001、日 VB2002、小时 VB2003、 分钟 VB2004、秒 VB2005、星期 VB2007; 系统时间(整数): 年 VW1644、月 VW1648、日 VW1652、小时 VW1656、 分钟 VW1660、秒 VW1664; 本班设备开始运行时间:小时 VW1680、分钟 VW1684、秒 VW1688; 本班设备最后运行时间:小时 VW1700、分钟 VW1704、秒 VW1708; 上班时间设置:小时 VW1720、分钟 VW1724; 下班时间设置:小时 VW1740、分钟 VW1744; 本班运行时间复位:VW1760; 本班运行时间被复位的时间:年 VW1764、月 VW1768、日 VW1772、小时 VW1776、分钟 VW1780; 累计运行时间复位:VW1800; 累计运行时间被复位的时间:年 VW1804、月 VW1808、日 VW1812、小时 VW1816、分钟 VW1820; EEPROM 写入次数:VW3558
S7-200模拟量换算
如何对S7-200 的CPU224XP 和扩展模块EM 231, EM 232 及EM 235 的模拟量值进行比例换算?扩展模块EM 231、EM 232 和EM 235模拟量的输入输出和CPU224XP 一样以word 格式的整数显示,这就需要做转换来确保正确的显示和过程中的应用。
这些转换可通过附件中的下载功能块来完成。
下载中包括转换功能块的"Scale" 库和易于理解的例程"Tip038" 。
1. 比例换算:下列图表显示输入输出值的比例换算。
这里对术语 "单极性", "双极性" 和"20% 偏移" 有解释。
这些术语在其他里非常重要。
如STEP 7 Micro/Win - PID 向导(工具> 指令向导> PID 控制器)单极性比例换算只有正的或负的值范围(图01 显示了一个模拟量输入值0到32000的例子)。
( 8 KB )图01在带有20%偏移的单极性的例子中, 最低限值是最大限值的 20% 。
(图02 显示了一个模拟量输入值6400到32000的例子)。
( 8 KB )图02双极性比例换算有正的和负的值范围 (图03 显示了一个模拟量输入值-32000 到32000的例子)。
( 9 KB )图03下表是对一些缩写地解释:参数描述Ov 换算结果 (输出值)Iv 模拟量值 (输入值)Osh 换算输出值的高限 (换算输出高限)Osl 换算输出值的低限(换算输出低限)Ish 换算输入值的高限 (换算输入高限)Isl 换算输入值的低限 (换算输入低限)表012. 公式以下公式由计算换算值的图表中得出:Ov = (Osh - Osl) / (Ish - Isl) * (Iv - Isl) + Osl3. 库3.1 "Scale" 库地描述"scale.mwl" 库包括从INTEGER 到REAL (S_ITR)、从REAL to REAL (S_RTR)及从REAL 到INTEGER (S_RTI)类型数据的比例换算。
最新S7-200模拟量库使用说明
最新S7-200模拟量库使用说明SCALE(V1.0)库文件的使用以下公式由计算换算值的图表中得出: Ov = (Osh - Osl) / (Ish - Isl) * (Iv - Isl) + Osl"Scale" 库的描述: "scale.mwl" 库包括从INTEGER(整数) 到REAL (S_ITR)(实数)、从REAL(实数)to REAL (S_RTR)(实数)及从REAL(实数)到INTEGER (S_RTI)(整数)类型数据的比例换算。
3.2 模拟量输入换算为REAL数据格式的输出值(S_ITR): S_ITR 功能块可用来将模拟量输入信号转换成0.0到1.0之间的标么值( 类型REAL )。
此调用为4-20MA的偏移量,读入模拟量转换为0.0-1.0之间的量程存入到VD1003.3 REAL格式数据比例换算(S_RTR): S_RTR 功能块可用来转换在范围内的REAL 格式的值(例如将0.0 到1.0输入值转化为百分数输出)。
本子程序调用为前面读取来的0.0-1.0量程转换为百分比0-100数值转出到DV2003.4转换为INTEGER格式数据的模拟量输出(S_RTI): S_RTI 功能块可用来将REAL 数转换为INTEGER数据类型的模拟量输出。
本子程序调用:把模拟量量程0.0-1.0数字转换成0-20MA的信号输出,在不同量程下,读取或输出得到不同的结果。
一次函数表达示:Y=KX+b(不过原点),Y=KX(过原点) 定义:介词是一种用来表示词与词, 词与句之间的关系的词。
在句中不能单独作句字成分。
介词后面一般有名词代词或相当于名词的其他词类,短语或从句作它的宾语。
介词和它的宾语构成介词词组,在句中作状语,表语,补语或介词宾语。
※一、表示时间的介词:1)in , on,at 在……时in表示较长时间,如世纪、朝代、时代、年、季节、月及一般(非特指)的早、中、晚等。
S7-200模拟量换算
因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200 CPU 内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。
这个关系就是模拟量/数值量的换算关系。
例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。
如果有两个传感器,量程都是0 - 16MPa,但是一个是0 - 20mA 输出,另一个是4 - 20mA输出。
它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。
显然两者之间存在比例换算关系。
模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 - 32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。
如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA与4 - 20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式模拟量的输入/输出都可以用下列的通用换算公式换算:Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl其中:Ov:换算结果Iv:换算对象O sh:换算结果的高限O sl:换算结果的低限I sh:换算对象的高限I sl:换算对象的低限它们之间的关系可以图示如下:图1. 模拟量比例换算关系实用指令库在Step7 - Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。
为便于使用,现已将其导出成为”自定义指令库“,可以添加到自己的Micro/WIN编程软件中应用。
200 PLC模拟量的AD和DA转换
S7-200 PLC模拟量的A/D和D/A转换以及编程的探讨对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。
因为A/D、D/A转换之间的对应关系,S7-200 CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。
这个关系就是模拟量/数字量的换算关系。
例如,当输入模拟量设定为电流信号的输入,在S7-200 CPU内部,电流信号0-20mA对应于数值范围0-32000;但是对于4-20mA的信号,对应的内部数值为6400-32000。
那可能有学员不知道这个6400是怎么算来的?其实这里的数字量和电流是成正比的,只需要按比例去算就可以了。
因为电流信号0-20mA对应于数值范围0-32000,那么1mA 对应的数字量就是32000/20=1600,而4mA对应的数字量就等于4*1600,等于6400。
(这里是以S7-200 PLC来作为举例,对于S7-200 SMART S7-300 400等等PLC也是同理的,只是对应的数字量不同而已)不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。
比如有3个温度传感变送器:(1)、测温范围为0~200 ,变送器输出信号为4~20ma(2)、测温范围为0~200 ,变送器输出信号为0~5V(3)、测温范围为-100 ~500 ,变送器输出信号为4~20ma(1)和(2)二个温度传感变送器,测温范围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温范围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。
下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导:对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为0~20ma电流信号,20ma 对应数子量=32000,4 ma对应数字量=6400;对于(2)传感变送器用的模块,其模拟量输入设置为0~5V电压信号,5V对应数字量=32000,0V对应数字量=0;这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请看下图:上面推导出的(2-1)、(2-2)、(2-3)三式就是对应(1)、(2)、(3)三种温度传感变送器经过模块转换成数字量后再换算为被测量的转换公式。
S7-200模拟量详细教程
模拟量比例换算因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200 CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。
这个关系就是模拟量/数值量的换算关系。
例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。
如果有两个传感器,量程都是0 - 16MPa,但是一个是0 - 20mA输出,另一个是4 - 20mA输出。
它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。
显然两者之间存在比例换算关系。
模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 - 32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。
如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA 与4 - 20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式模拟量的输入/输出都可以用下列的通用换算公式换算:Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl其中:Ov: 换算结果Iv: 换算对象Osh: 换算结果的高限Osl: 换算结果的低限Ish: 换算对象的高限Isl: 换算对象的低限它们之间的关系可以图示如下:图1. 模拟量比例换算关系实用指令库在Step7 - Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。
为便于使用,现已将其导出成为”自定义指令库“,可以添加到自己的Micro/WIN编程软件中应用。
S7-200PLC模拟量编程方法
1、模拟量值和A/D转换值的转换假设模拟量的标准电信号是A0—Am(如:4—20mA),A/D转换后数值为D0—D (单极性的西门子PLC200系列的0—32000),设模拟量的标准电信号是A,A/D转换后的相应数值为D,由于是线性关系,函数关系A=f(D)可以表示为数学方程:A=(D-D0)×(Am-A0)/(Dm-D0)+A0根据该方程式,可以方便地根据D值计算出A值。
将该方程式逆变换,得出函数关系D=f(A)可以表示为数学方程:D=(A-A0)×(Dm-D0)/(Am-A0)+D0举几个例子:例1、以S7-200和4—20mA为例,经A/D转换后,得到的数值是6400—32000,即A0=4,Am=20,D0=6400,Dm=32000,代入公式,得出:A=(D-6400)×(20-4)/(32000-6400)+4假设该模拟量与AIW0对应,则当AIW0的值为12800时,相应的模拟电信号是6400×16/25600+4=8mA。
例2、某温度传感器,-10—60℃与4—20mA相对应,以T表示温度值,AIW0为PLC模拟量采样值,则根据上式直接代入得出:T=70×(AIW0-6400)/25600-10可以用T 直接显示温度值。
例3、某压力变送器,当压力达到满量程5MPa时,压力变送器的输出电流是20mA,AIW0的数值是32000。
可见,每毫安对应的A/D值为32000/20,测得当压力为0.1MPa时,压力变送器的电流应为4mA,A/D值为(32000/20)×4=6400。
由此得出,AIW0的数值转换为实际压力值(单位为KPa)的计算公式为:VW0的值=(AIW0的值-6400)(5000-100)/(32000-6400)+100(单位:KPa)再举个具体编程实例:组建一个小的实例系统演示模拟量编程。
本实例的的CPU是CPU222,仅带一个模拟量扩展模块EM235,该模块的第一个通道连接一块带4—20mA变送输出的温度显示仪表,该仪表的量程设置为0—100度,即0度时输出4mA,100度时输出20mA。
S7-200数字信号转换算法
S7-200数字信号转换算法介绍S7-200是西门子推出的一款高性能PLC(可编程逻辑控制器)。
在PLC程序设计中,数字信号转换是一个非常常见的需求。
本文档将介绍一种基于S7-200的数字信号转换算法。
算法原理数字信号转换是将输入的模拟信号转换为数字信号的过程。
在S7-200中,可以通过模拟量输入模块来实现数字信号转换。
算法流程如下:1. 配置模拟量输入模块的参数。
包括输入量程、参考电压等。
2. 读取模拟量输入模块的输出值。
3. 根据输入值和参考电压的关系,进行数值转换。
4. 将转换后的数字信号用于后续的逻辑控制处理。
算法实现以下是一个基于S7-200的数字信号转换算法示例:VARInputValue: REAL; // 模拟量输入值ReferenceVoltage: INT; // 参考电压ConvertedValue: INT; // 转换后的数字信号RangeMin: REAL; // 量程下限RangeMax: REAL; // 量程上限ConvertedMin: INT; // 数字量下限ConvertedMax: INT; // 数字量上限END_VARInputValue := ReadAnalogInput(); // 读取模拟量输入ReferenceVoltage := GetReferenceVoltage(); // 获取参考电压RangeMin := GetRangeMin(); // 获取量程下限RangeMax := GetRangeMax(); // 获取量程上限ConvertedMin := GetConvertedMin(); // 获取数字量下限ConvertedMax := GetConvertedMax(); // 获取数字量上限ConvertedValue := ((InputValue - RangeMin) * (ConvertedMax - ConvertedMin)) / (RangeMax - RangeMin) + ConvertedMin; // 数字信号转换公式UseConvertedValue(ConvertedValue); // 将转换后的数字信号用于后续逻辑处理结论S7-200数字信号转换算法使用简单且高效。
对S7-200 的模拟量值进行比例换算
如何对 S7-200 的 CPU224XP 和扩展模块 EM 231, EM 232 及 EM 235 的模拟量值进行比例换算?说明:扩展模块 EM 231、 EM 232 和 EM 235模拟量的输入输出和 CPU224XP 一样以 word 格式的整数显示,这就需要做转换来确保正确的显示和过程中的应用 。
这些转换可通过附件中的下载功能块来完成。
下载中包括 转换功能块的 "Scale" 库 和易于理解的例程"Tip038" 。
1. 比例换算:下列图表显示输入输出值的比例换算。
这里对术语 "单极性", "双极性" 和 "20% 偏移" 有解释。
这些术语在其他 里非常重要。
如STEP 7 Micro/Win - PID 向导(工具 > 指令向导 > PID 控制器)单极性比例换算只有正的或负的值范围 (图 01 显示了一个模拟量输入值 0到32000的例子)。
在带有20%偏移的单极性的例子中, 最低限值是最大限值的 20% 。
(图 02 显示了一个模拟量输入值6400到32000的例子)。
图 02双极性比例换算有正的和负的值范围 (图 03 显示了一个模拟量输入值 -32000 到 32000的例子)。
图 03下表是对一些缩写地解释:参数描述Ov 换算结果 (输出值)Iv 模拟量值 (输入值)Osh 换算输出值的高限 (换算输出高限)Osl 换算输出值的低限 (换算输出低限)Ish 换算输入值的高限 (换算输入高限)Isl 换算输入值的低限 (换算输入低限)表 012. 公式以下公式由计算换算值的图表中得出:Ov = (Osh - Osl) / (Ish - Isl) * (Iv - Isl) + Osl3. 库3.1 "Scale" 库的描述"scale.mwl" 库包括从 INTEGER 到 REAL (S_ITR)、从REAL to REAL (S_RTR)及从REAL 到 INTEGER (S_RTI)类型数据的比例换算。
S7-200PLC量程转换
一、S7-200 量程转换的基本概念
1. 工程量:指工程设计中没有量化之前的物理量,如温度、压力、流量、转速等;
2. 模拟量:指传感器输出的标准直流信号,如0--20MA、
4--20MA、0--10V、1--5V 等
3. 数字量(量化值):指与模拟量相对应的数值,如0--10V 模拟量对应0--32000 数字量;
4. 量程:工程量上限值减去工程量下限值;
5. 值域:数字量上限值减去数字量下限值;
6. 量程转换:把模拟量地址上的数字量经过PLC的数学运算指令运算后转换成工程量的方法。
二、S7-200PLC量程转换的过程
三、S7-200PLC 模拟量信号与数字量的关系
四、量程转换公式及其用法量程转换公式
五、量程转换公式的使用方法
某工程使用CPU224 扩展EM235模块测量温度,温度传感器的测量范围是-50 ℃----+120 ℃,信号输出0----10V,接在模拟量模块的输入端A 口(地址AIW0),假设AIW0=10000,此时温度是多少?根据给定条件:yH=120.0℃、yL=-50.0 ℃、xH=32000.0、xL=0.0、x=10000.0,则y=3.12℃
六、S7-200PLC 量程转换的编程方法
1. 读取模拟量地址的数据并转换为浮点数存入VD0 地址里
2. 把得到的数字量转换为工程量(量程转换),首先给各变量分配地址并安排在V 区,中间结果安排在M 区,最终结果存储在VD4 地址上,人机界面读取VD4地址得工程量数值。
X=VD0、Y=VD4
七、S7-200PLC 执行数学运算之前,必须将数据转换为同一类型的数据,然后再进行运算。
如果对数据类型不是特别熟悉将数据一律转换为浮点数再进行运算。
S7-200模拟量详细教程
模拟量比例换算之杨若古兰创作(D/A)数/模转换之间的对应关系,S7200 CPU内部用数值暗示内部的模拟量旌旗灯号,两者之间有必定的数学关系.这个关系就是模个0 20mA的模拟量旌旗灯号输入,在S7200 CPU内部,0 20mA对应于数值范围0 32000;对于4 20mA的旌旗灯号,对应的内部数都是0 16MPa,但是一个是0 20mA输出,另一个是4 20mA输出.它们在不异的压力下,变送的模拟量电流大小分歧,在S7200内部之间存在比例换算关系.模拟量输出的情况也大致不异.20mA之间换算关系,但模拟量转换的目的明显不是在S7200 CPU中得到一个0 32000之类的数值;对于编程和操纵人员来说,得值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的终极目标.软件Micro/WIN32中的PID Wizard(PID导游)生成PID功能子程序,就不必进行0 20mA与4 20mA旌旗灯号之间的换算,只需通用比例换算公式模拟量的输入/输出都可以用以下的通用换算公式换算:Ov = [(Osh Osl)*(Iv Isl)/(Ish Isl)] + Osl其中:Ov: 换算结果Iv: 换算对象Osh: 换算结果的高限Osl: 换算结果的低限Ish: 换算对象的高限Isl: 换算对象的低限它们之间的关系可以图示如下:图1. 模拟量比例换算关系实用指令库在Step7 Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程.为便于使用,现已将其导出成为”自定义指令库“,可以添加到本人的Micro/WIN编程软件中利用.个指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出其中scale_I_R程序段例:将4 20mA模拟量输入转换为内部百分比值将内部百分比值转换为4 20mA模拟量输出对于精度请求不高的地方,420ma转换成020ma 可按比例计算公式 =((ai4)/16)*20其程序段实例:发贴者 Memory Of Heart 时间:下战书3:540 评论S7200 +TD400C显示零碎时间、运转时间的程序看见论坛上有些朋友对西门子TD文本显示器显示时钟的成绩比较关心,在这个帖子里笔者给出一个曾经利用于工程上的程序例子,并作出具体分析,但愿对关心这个成绩的朋友有些帮忙.这个程序是S7200+TD400C显示零碎时间、当班运转时间、累计运转时间的例子.以下是s7200 S7200+TD400C显示零碎时间、运转时间的程序详解:零碎硬件配置如下:PLC:西门子S7200 CN;CPU 226 CN REL02.01;AC100~230V电源/DC24V输入/继电器输出;订货号6ES72162BD230XB8;固件02.01 Build2;ASIC:01.00.文本显示器:TD400C;订货号6AV6 66400AA000AX0;自带9芯TD/CPU电缆;版本:1.0.0.3.S7 200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(由于当TD400C与S7200CPU之间的距离小于 2.5米时,采取TD/CPU电缆的方式进行供电;当TD400C与S7200 CPU之间的距离超出2.5米时,使用内部电源供电并使用PROFIBUS组件连接收集). 零碎软件配置如下:S7200参数设置:在“零碎块”的“断电数据坚持”中设置VW1600当前2000个单元为断电数据坚持.TD400C参数设置:TD400C地址:1CPU地址:2参数块地址:0波特率:9.6KHSA:31GUF:10键盘声音反馈:开屏幕呵护时间:10分钟S7200的零碎时钟调整为精确的北京时间.上面先写一下该程序所用到的存储器的意义,以便于理解程序.本班运转时间:小时VW1600、分钟VW1604、秒VW1608;累计运转时间:小时VW1620、分钟VW1624、秒VW1628;零碎时间(BCD码字节):年VB2000、月VB、日VB、小时VB、分钟VB、秒VB、礼拜VB;零碎时间(整数):年VW1644、月VW1648、日VW1652、小时VW1656、分钟VW1660、秒VW1664;本班设备开始运转时间:小时VW1680、分钟VW1684、秒VW1688;本班设备最初运转时间:小时VW1700、分钟VW1704、秒VW1708;上班时间设置:小时VW1720、分钟VW1724;放工时间设置:小时VW1740、分钟VW1744;本班运转时间复位:VW1760;本班运转时间被复位的时间:年VW1764、月VW1768、日VW1772、小时VW1776、分钟VW1780;累计运转时间复位:VW1800;累计运转时间被复位的时间:年VW1804、月VW1808、日VW1812、小时VW1816、分钟VW1820;EEPROM写入次数:VW3558;由于考虑到编程中可能会用到一些两头存储器,所以在TD400C中定义存储器时留了余量,每两个存储器之间都有1个字的存储器留作备用. 根据相干技术请求,先组态TD400C画面,达到预期目的.“工具”——“文本显示导游”,先配置TD400C:然后点击“用户菜单”,配置用户菜单.由于该工程的界面请求很简单,所以每个菜单项只配置了1个屏幕(最多可以配置8个屏幕).第1个屏幕:该屏幕中的第1个数据(这里的数据排列顺序为:先按第1排从左至右、再按第2排从左至右的顺序顺次排列,下同):由于版面的成绩,该屏幕的其它PLC数据和其它屏幕中的PLC数据就纷歧一列举了.这些数据都是VW、无符号数类型,具体对应情况请参阅3楼说明. 第2个屏幕:第3个屏幕:第4个屏幕:第5个屏幕:第??个屏幕:??第??个屏幕:??TOD R指令读到的实时时钟是BCD字节,要想把这个BCD字节显示出来,须要进行转换.在网上也曾查阅过,一部分人先用BTI指令把这个BCD字节转换整数,然后用ITA指令把整数转换为ASCII字符串,在画面中嵌入这个ASCII字符串用于显示.笔者也如许试过一下,可能由于其它成绩没有测试成功,而又突然想到——在程序的多处都须要用到这个实时时钟数据,所以转换为ASCII字符当前对程序其它地方没什么感化.经过考虑,我的转换思想是:先用BTI指令把这个BCD字节转换BCD整数,然后用BCDI指令把BCD整数转换为正常的十进制/十六进制整数,在画面中嵌入这个得到的整数用于显示.在程序的其它地方也能够使用这些实时时钟变量.上面是该工程的TD400C显示画面:。
S7-200模拟量详细教程
模拟量比例换算因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200 CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。
这个关系就是模拟量/数值量的换算关系。
例如,使用一个0 - 20mA的模拟量信号输入,在S7-200 CPU内部,0 - 20mA对应于数值范围0 - 32000;对于4 - 20mA的信号,对应的内部数值为6400 - 32000。
如果有两个传感器,量程都是0 - 16MPa,但是一个是0 - 20mA输出,另一个是4 - 20mA输出。
它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。
显然两者之间存在比例换算关系。
模拟量输出的情况也大致相同。
上面谈到的是0 - 20mA与4 - 20mA之间换算关系,但模拟量转换的目的显然不是在S7-200 CPU中得到一个0 - 32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。
如果使用编程软件Micro/WIN32中的PID Wizard(PID向导)生成PID功能子程序,就不必进行0 - 20mA 与4 - 20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式模拟量的输入/输出都可以用下列的通用换算公式换算:Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl其中:Ov: 换算结果Iv: 换算对象Osh: 换算结果的高限Osl: 换算结果的低限Ish: 换算对象的高限Isl: 换算对象的低限它们之间的关系可以图示如下:图1. 模拟量比例换算关系实用指令库在Step7 - Micro/WIN Programming Tips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。
为便于使用,现已将其导出成为”自定义指令库“,可以添加到自己的Micro/WIN编程软件中应用。
精通S7-200【PLC-模拟量】
精通S7-200【PLC-模拟量】对于初学PLC编程的人来说,模拟量输入、输出模块的编程要比用位变量进行一般的程序控制难的多,因为它不仅仅是程序编程,而且还涉及到模拟量的转换公式推导与使用的问题。
不同的传感变送器,通过不同的模拟量输入输出模块进行转换,其转换公式是不一样的,如果选用的转换公式不对,编出的程序肯定是错误的。
比如有3个温度传感变送器:(1)、测温范围为0~200,变送器输出信号为4~20ma(2)、测温范围为0~200,变送器输出信号为0~5V(3)、测温范围为-100 ~500,变送器输出信号为4~20ma(1)和(2)二个温度传感变送器,测温范围一样,但输出信号不同,(1)和(3)传感变送器输出信号一样,但测温范围不同,这3个传感变送器既使选用相同的模拟量输入模块,其转换公式也是各不相同。
一、转换公式的推导下面选用S7-200的模拟量输入输出模块EM235的参数为依据对上述的3个温度传感器进行转换公式的推导:对于(1)和(3)传感变送器所用的模块,其模拟量输入设置为0~20ma电流信号,20ma对应数子量=32000,4 ma对应数字量=6400;对于(2)传感变送器用的模块,其模拟量输入设置为0~5V电压信号,5V 对应数字量=32000,0V对应数字量=0;这3种传感変送器的转换公式该如何推导的呢?这要借助与数学知识帮助,请见下图:上面推导出的(2-1)、(2-2)、(2-3)三式就是对应(1)、(2)、(3)三种温度传感变送器经过模块转换成数字量后再换算为被测量的转换公式。
编程者依据正确的转换公式进行编程,就会获得满意的效果。
二、变送器与模块的连接通常输出4~20ma电流信号的传感变送器,对外输出只有+、- 二根连线,它需要外接24V电源电压才能工作,如将它的+、- 二根连线分别与24V电源的正负极相连,在被测量正常变化范围内,此回路将产生4~20ma 电流,见下左图。
下右图粉色虚线框内为EM235 模块第一路模拟输入的框图,它有3个输入端,其A+与A-为A/D转换器的+ - 输入端,RA与A-之间并接250Ω标准电阻。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
49:S7-200能否使用两线制的数字量(开关量)传感器?
可以,但必须保证传感器的静态工作电流(漏电流)小于1mA。
西门子有相关的产品,如用于PLC的接近开关(BERO)等。
50:S7-200是否有输入、输出点可以复用的模块?
S7-200的数字量、模拟量输入/输出点不能复用(即既能当作输入,又能当作输出)。
51:CPU224 XP的高速输入输出到底能达到100K还是200K?
新产品CPU224 XP高速输入中的两路支持更加高的速度。
用作单相脉冲输入时,可以达到200KHz;用作双相90°正交脉冲输入时,速度可达100KHz。
CPU224 XP的两路高速数字量输出速率可以达到100KHz。
52: CPU224 XP的高速输入(I0.3/4/5)是5VDC信号,其他输入点是否可以接24VDC信号?
可以。
只需将两种信号供电电源的公共端都连接到1M端子。
这两种信号必须同时为漏型或源型输入信号。
53:CPU224 XP的高速输出点Q0.0和Q0.1接5V电源,其他点如Q0.2/3/4是否可以接24V 电压?
不可以。
必须成组连接相同的电压等级。
54:竟然有模拟量无法滤波?
由于CPU 224 XP本体上的模拟量转换芯片的原理与扩展模拟量模块不同,不需要选择滤波。
55:什么是单极性、双极性?
双极性就是信号在变化的过程中要经过“零”,单极性不过零。
由于模拟量转换为数字量是有符号整数,所以双极性信号对应的数值会有负数。
在S7-200中,单极性模拟量输入/输出信号的数值范围是 0 - 32000;双极性模拟量信号的数值范围是 -32000-+32000。
56:同一个模块的不同通道是否可以分别接电流和电压型输入信号?
可以分别按照电流和电压型信号的要求接线。
但是DIP开关设置对整个模块的所有通道有效,在这种情况下,电流、电压信号的规格必须能设置为相同的DIP开关状态。
如上面表1、表2中,0 - 5V和0 - 20mA信号具有相同的DIP设置状态,可以接入同一个模拟量模块的不同通道。
57:模拟量应该如何换算成期望的工程量值?
模拟量的输入/输出都可以用下列的通用换算公式换算:
Ov = [(Osh - Osl)*(Iv - Isl)/(Ish - Isl)] + Osl
其中:
Ov: 换算结果
Iv: 换算对象
Osh: 换算结果的高限
Osl: 换算结果的低限
Ish: 换算对象的高限
Isl: 换算对象的低限
58:S7-200模拟量输入信号的精度能达到多少?
拟量输入模块有两个参数容易混淆:
1)模拟量转换的分辨率
2)模拟量转换的精度(误差)
分辨率是A/D模拟量转换芯片的转换精度,即用多少位的数值来表示模拟量。
S7-200模拟量模块的转换分辨率是12位,能够反映模拟量变化的最小单位是满量程的1/4096。
模拟量转换的精度除了取决于A/D转换的分辨率,还受到转换芯片的外围电路的影响。
在实际应用中,输入的模拟量信号会有波动、噪声和干扰,内部模拟电路也会产生噪声、漂移,这些都会对转换的最后精度造成影响。
这些因素造成的误差要大于A/D芯片的转换误差。
59:为什么模拟量是一个变动很大的不稳定的值?
可能是如下原因:
你可能使用了一个自供电或隔离的传感器电源,两个电源没有彼此连接,即模拟量输入模块的电源地和传感器的信号地没有连接。
这将会产生一个很高的上下振动的共模电压,影响模拟量输入值。
另一个原因可能是模拟量输入模块接线太长或绝缘不好。
可以用如下方法解决:
1)连接传感器输入的负端与模块上的公共M 端以补偿此种波动。
(但要注意确保这是两个电源系统之间的唯一联系。
)
背景是:
模拟量输入模块内部是不隔离的;
共模电压不应大于 12V;
对于60Hz干扰信号的共模抑制比为40dB。
2)使用模拟量输入滤波器。