模拟量比例换算因为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编程软件中应用。
在这个指令库中,子程序Scale_I_to_R可用来进行模拟量输入到S7-200内部数据的转换;子程序Scale_R_I可用于内部数据到模拟量输出的转换。
其中scale_I_R程序段例:将4 - 20mA模拟量输入转换为内部百分比值将内部百分比值转换为4 - 20mA模拟量输出对于精度要求不高的地方,4-20ma转换成0-20ma 可按比例计算公式=((ai-4)/16)*20其程序段实例:发贴者Memory Of Heart 时间:下午3:540 评论S7-200 +TD400C显示系统时间、运行时间的程序看见论坛上有些朋友对西门子TD文本显示器显示时钟的问题比较关心,在这个帖子里笔者给出一个已经应用于工程上的程序例子,并作出详细分析,希望对关心这个问题的朋友有些帮助。
这个程序是S7200+TD400C显示系统时间、当班运行时间、累计运行时间的例子。
以下是s7-200 S7200+TD400C显示系统时间、运行时间的程序详解:系统硬件配置如下:PLC:西门子S7-200 CN;CPU 226 CN REL02.01;AC100~230V电源/DC24V输入/继电器输出;订货号6ES7216-2BD23-0XB8;固件02.01 Build2;ASIC:01.00。
文本显示器:TD400C;订货号6AV6 6640-0AA00-0AX0;自带9芯TD/CPU 电缆;版本:1.0.0.3。
S7 -200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(因为当TD400C与S7-200CPU之间的距离小于2.5米时,采用TD/CPU电缆的方式进行供电;当TD400C 与S7-200 CPU之间的距离超过2.5米时,使用外部电源供电并使用PROFIBUS组件连接网络)。
系统软件配置如下:S7-200参数设置:在―系统块‖的―断电数据保持‖中设置VW1600以后2000个单元为断电数据保持。
TD400C参数设置:TD400C地址:1CPU地址:2参数块地址:0波特率:9.6KHSA:31GUF: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显示画面:发贴者Memory Of Heart 时间:下午2:390 评论2009年10月19日星期一bcb中控制Edit控件只输入数字在BCB中控制Edit控件的输入是件很麻烦的事,在这一点上BCB做的没有VC好。
但是既然做为程序员,那就没有什么可以被难倒的。
我们可以采取自己写代码控制的方法来实现对其的控制。
这里只说两种简单的方法,抛砖引玉吧。
第一种:控制事件方法在Edit控件的KeyPress事件中控制输入的Key,把不需要的Key设置成0,就OK了。
例如:void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key){//控制Edit1只能输入数字if ( (Key<'0'||Key>'9') && (Key != '\b') ){Key = 0;}}这种方法只能在KeyPress事件中,不能在KeyDown或KeyUp事件中。
第二种方法:调用API的方法不说了看代码吧void __fastcall TForm1::FormShow(TObject *Sender){//控制Edit2只能输入数字SetWindowLong(Edit2->Handle, GWL_STYLE,GetWindowLong(Edit2->Handle,GWL_STYLE)|ES_NUMBER);}或许朋友们有更好的方法,请告诉我。
发贴者Memory Of Heart 时间:下午4:160 评论[收藏]成功走上管理岗位的11个技巧成功走上管理岗位的11个技巧能够帮助经理人"有所不为"的管理与领导技巧数不胜数,不过,本书精选的其中一些方法,能帮助他们更快地完成从一味地"执行"到侧重"管理"与"领导"的转变,是被实践证明了的很好的管理方法。
我把这些关键的管理与领导技能称为"黄金技能",它们分别是:・拓展下属的工作能力,包括给他们提供培训和授权。
・积极主动地倾听员工的心声。
・给予并接受员工的反馈。
・激励团队成员。
另一种成功走上管理岗位的方法是,学会享受管理工作的乐趣,享受你能对其他人施加的积极影响。
为什么不最大限度地发挥管理者的作用呢?很多"意外型经理人"都发现,当他们开始享受工作的乐趣,并意识到管理工作的重要性时,所有的问题都不存在了。
有过这种经历的经理人告诉我,这种体验使他们的工作变得更轻松、压力更小了,以出乎自己意料的速度很快作出了成果。
下面,我将与大家分享这些技巧,它们曾帮助很多"意外型经理人"成长为成功的经理人。
1.不找借口。
成功的经理人知道应该停止抱怨,停止抱怨公司或上层主管把自己安排到管理岗位上;也不会因为自己还没有准备好,或不善于做管理而自怨自艾;同时也接受下属员工有可能对管理者怨声载道的事实。
他们把所有的精力都放在管理工作中,一旦他们做到了这些,工作就将变得充满挑战和乐趣。
成功的经理人都不愿把创造力和精力浪费在给自己找借口上。
2.尝试新事物。
成功的经理人勇于尝试自己从未想过的新生事物,敢于去做其他的经理人从未做过的事情。
举个例子,在华盛顿某个政府部门任职的一位经理人告诉我,她准备在今后每次会议开始前,给大家讲一则与管理有关的笑话(当然,一定是非常有意思的笑话)。