S7200模拟量详细教程.docx
- 文档编号:9783915
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:27
- 大小:965.17KB
S7200模拟量详细教程.docx
《S7200模拟量详细教程.docx》由会员分享,可在线阅读,更多相关《S7200模拟量详细教程.docx(27页珍藏版)》请在冰豆网上搜索。
S7200模拟量详细教程
模拟量比例换算
因为A/D(模/数)、(D/A)数/模转换之间的对应关系,S7-200CPU内部用数值表示外部的模拟量信号,两者之间有一定的数学关系。
这个关系就是模拟量/数值量的换算关系。
例如,使用一个0-20mA的模拟量信号输入,在S7-200CPU内部,0-20mA对应于数值范围0-32000;对于4-20mA的信号,对应的内部数值为6400-32000。
如果有两个传感器,量程都是0-16MPa,但是一个是0-20mA输出,另一个是4-20mA输出。
它们在相同的压力下,变送的模拟量电流大小不同,在S7-200内部的数值表示也不同。
显然两者之间存在比例换算关系。
模拟量输出的情况也大致相同。
上面谈到的是0-20mA与4-20mA之间换算关系,但模拟量转换的目的显然不是在S7-200CPU中得到一个0-32000之类的数值;对于编程和操作人员来说,得到具体的物理量数值(如压力值、流量值),或者对应物理量占量程的百分比数值要更方便,这是换算的最终目标。
如果使用编程软件Micro/WIN32中的PIDWizard(PID向导)生成PID功能子程序,就不必进行0-20mA与4-20mA信号之间的换算,只需进行简单的设置。
通用比例换算公式
模拟量的输入/输出都可以用下列的通用换算公式换算:
Ov=[(Osh-Osl)*(Iv-Isl)/(Ish-Isl)]+Osl
其中:
Ov:
换算结果
Iv:
换算对象
Osh:
换算结果的高限
Osl:
换算结果的低限
Ish:
换算对象的高限
Isl:
换算对象的低限
它们之间的关系可以图示如下:
图1.模拟量比例换算关系
实用指令库
在Step7-Micro/WINProgrammingTips(Micro/WIN编程技巧中)的Tip38就是关于如何实现上述转换的例程。
为便于使用,现已将其导出成为”自定义指令库“,可以添加到自己的Micro/WIN编程软件中应用。
在这个指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7-200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出的转换。
其中scale_I_R程序段例:
将4-20mA模拟量输入转换为内部百分比值
将内部百分比值转换为4-20mA模拟量输出
对于精度要求不高的地方,4-20ma转换成0-20ma 可按比例计算
公式 =((ai-4)/16)*20
其程序段实例:
发贴者MemoryOfHeart时刻:
S7-200+TD400C显示系统时刻、运行时刻的程序
看见论坛上有些朋友对西门子TD文本显示器显示时钟的问题比较关切,在那个帖子里笔者给出一个已经应用于工程上的程序例子,并作出详细分析,希望对关切那个问题的朋友有些帮忙。
那个程序是S7200+TD400C显示系统时刻、当班运行时刻、累计运行时刻的例子。
以下是s7-200S7200+TD400C显示系统时刻、运行时刻的程序详解:
系统硬件配置如下:
PLC:
西门子S7-200CN;CPU226CNREL
;AC100~230V电源/DC24V输入/继电器输出;定货号6ES7216-2BD23-0XB8;固件Build
2;ASIC:
。
文本显示器:
TD400C;定货号6AV66640-0AA00-0AX0;自带9芯TD/CPU电缆;版本:
。
S7-200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(因为当TD400C与S7-200
CPU之间的距离小于米时,采纳TD/CPU电缆的方式进行供电;当TD400C与S7-200CPU之间的距离超过米时,利用外部电源供电并利用
PROFIBUS组件连接网络)。
系统软件配置如下:
S7-200参数设置:
在“系统块”的“断电数据维持”中设置VW1600以后2000个单元为断电数据维持。
TD400C参数设置:
TD400C地址:
1
CPU地址:
2
参数块地址:
0
波特率:
HSA:
31
GUF:
10
键盘声音反馈:
开
屏幕爱惜时刻:
10分钟
S7-200的系统时钟调整为准确的北京时刻。
下面先写一下该程序所用到的存储器的意义,以便于明白得程序。
本班运行时刻:
小时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
;
因为考虑到编程中可能会用到一些中间存储器,因此在TD400C中概念存储器时留了余量,每两个存储器之间都有1个字的存储器留作备用。
依照有关技术要求,先组态TD400C画面,达到预期目的。
“工具”——“文本显示向导”,先配置TD400C:
然后点击“用户菜单”,配置用户菜单。
因为该工程的界面要求很简单,因此每一个菜单项只配置了1个屏幕(最多能够配置8个屏幕)。
第1个屏幕:
该屏幕中的第1个数据(那个地址的数据排列顺序为:
先按第1排从左至右、再按第2排从左至右的顺序依次排列,下同):
因为版面的问题,该屏幕的其它PLC数据和其它屏幕中的PLC数据就不一一列举了。
这些数据都是VW、无符号数类型,具体对应情形请参阅3楼说明。
第2个屏幕:
第3个屏幕:
第4个屏幕:
第5个屏幕:
第6个屏幕:
第7个屏幕:
第8个屏幕:
下面是主程序部份:
第一在主程序中挪用子程序:
下面是子程序:
先挪用TD向导生成的子程序:
TODR指令读到的实不时钟是BCD字节,要想把那个BCD字节显示出来,需要进行转换。
在网上也曾查阅过,一部份人先用BTI指令把那个BCD字节转换整数,然后用ITA指令把整数转换为ASCII字符串,在画面中嵌入那个ASCII字符串用于显示。
笔者也如此试过一下,可能因为其它问题没有测试成功,而又突然想到——在程序的多处都需要用到那个实不时钟数据,因此转换为ASCII字符以后对程序其它地址没什么作用。
通过考虑,我的转换思想是:
先用BTI指令把那个BCD字节转换BCD整数,然后用BCDI指令把BCD整数转换为正常的十进制/十六进制整数,在画面中嵌入那个取得的整数用于显示。
在程序的其它地址也能够利用这些实不时钟变量。
下面是该工程的TD400C显示画面:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- S7200 模拟 详细 教程