siemens s7 200-200 PLC中的定时器是用中间变量给时间参数的,想问一下中间变量的时间参数是怎么设置的?

西门子S7-200PLC局部变量详解
查看: 11523|
摘要: IN 调用POU提供的输入参数。OUT 返回调用POU的输出参数。IN_OUT 数值由调用POU提供的参数,由子程序修改,然后返回调用POU。TEMPORARY 临时保存在局部数据堆栈中的临时变量。一旦POU完全执行,临时变量数值则无法再 ...
&&&&&&&&&&&&&&&&&&&&&&&& IN&&&&&&&&&&&&&&&&&&&&&& 调用POU提供的输入参数。&&&&&&&&&&&&&&&&&&&&&&&&&OUT&&&&&&&&&&&&&&&&&& 返回调用POU的输出参数。&&&&&&&&&&&&&&&&&&&&&&&&&IN_OUT&&&&&&&&&&&&& 数值由调用POU提供的参数,由子程序修改,然后返回调用POU。&&&&&&&&&&&&&&&&&&&&&&&&TEMPORARY&&& 临时保存在局部数据堆栈中的临时变量。一旦POU完全执行,临时变量数值则无法再用。在两次P0U执行之间,临时变量不保持其数值。&&& 局部变量是分配给每个子程序的临时存贮区。&&& 当子程序被调用时,系统分配局部变量区给子程序;子程序执行完成后,该局部变量区被释放。释放时其中存贮的值也同时丢失,不能再下一扫描周期再被子程序使用。&&& 局部变量区的大小为64个字节,其中最后4个字节被系统所占用,实际可供子程序使用的为60个字节。&&& 由于局部变量区的数据不能带到上一扫描周期,因此只能用于存迪程序运算中的中间值,可以减少对全局变量区的占用。&&& 由于局部变量区在子程序被调用时才被分配,且分配时并不对数据区进行初始化,所以其初始值是不确定的。因此在程序中用到这些存贮区的值的指令前,必须有对该存贮区地址的赋值操作,否则可能会出现错误的执行结果。尤其在子程序中存在大量的跳转指令时,很容易出现漏掉对局部变量赋值的情况,要格外注意。&&&& 每个子程序调用的输入/输出参数的最大限制是16,如果您尝试下载的程序超过此一限制,IN和out加起来共16个超过16个就会出错,本人做一个程序的时候发现了这个问题,在这里提醒各位同行。&&& 1、子程序或者中断程序不能访问分配给主程序的局部存储器。子程序不能访问分配给主程序、中断程序或者其他子程序的局部存储器。同样的,中断程序也不能访问分配给主程序或子程序的局部存储器。&&&& 2、有关局部变量:S7-200有64个字节的局部存储器,其中60个可以用作临时存储器或者给子程序传递参数。&&& 如果用梯形图或功能方块图编程,STEP7--Micro/WIN保留这些局部存储器的最后四个字节。&&& 局部存储器和变量存储器很相似,但只有一处区别。变量存储器是全局有效的,而局部存储器只在局部有效。全局是指同一个存储器可以被任何程序存取(包括主程序、子程序和中断中断程序程序)。局部是指存储器区和特定的程序相关联。S7--200给主程序分配64个局部存储器;给每一级子程序嵌套分配64个字节局部存储器;同样给中断程序分配64个字节局部存储器。&&& 子程序或者中断程序不能访问分配给主程序的局部存储器。子程序不能访问分配给主程序、中断程序或者其他子程序的局部存储器。同样的,中断程序也不能访问分配给主程序或子程序的局部存储器。S7--200 根据需要分配局部存储器。也就是说,当主程序执行时,分配给子程序或中断程序的局部存储器是不存在的。当发生中断或者调用一个子程序时,需要分配局部存储器。新的局部存储器地址可能会覆盖另一个子程序或中断程序的局部存储器地址。&&& 局部存储器在分配时PLC不进行初始化,初值可能是任意的。当在子程序调用中传递参数时,在被调用子程序的局部存储器中,由CPU替换其被传递的参数的值。局部存储器在参数传递过程中不传递值,在分配时不被初始化,可能包含任意数值。&& 3、CPU226的项目中最多可以创建128个子程序,其他CUP可以创建64个子程序。子程序可以嵌套调用,即在子程序中调用别的子程序,一共可以嵌套8层。在中断程序中调用的子程序不能再调用别的子程序。不禁止递归调用(子程序调用自己),但是应慎重使用递归调用。&& 4、子程序中的定时器:停止调用子程序时,线圈在子程序内的位元件的ON/OFF状态保持不变。如果在停止调用时子程序中的定时器正在定时,100ms定时器将停止定时,当前值保持不变,重新调用时继续定时;但是1ms定时器和10ms定时器将继续定时,定时时间到时,它们的定时器位变为1状态,并且可以在子程序之外起作用。&&& 如何输入第一个局部变量赋值欲在局部变量表中赋值,请遵循以下步骤:&&& 1.&&& 确保正确的POU在程序编辑器窗口中显示,如有必要,点击所需的POU标记。(因为每个POU都有自己的局部变量表,您需要确保对正确的POU赋值。)&&& 2.&&& 如果局部变量表处于隐藏状态,下拉水平分裂条,显示局部变量表。&&& 3.&&& 为需要定义的变量选择具有正确说明类型的行,在"名称"域中为该变量键入一个名称。(如果您在OB1或中断例行程序中赋值,局部变量表只包含TEMP变量。如果您在子程序中赋值,局部变量表包含IN、IN_OUT、OUT和TEMP变量。)您不需要在局部变量表中的变量名前加井号。井号只用在程序代码中的局部变量前。&&& 注释:&& *& 局部变量名最多可包含23个字母数字字符和下划号,也可包含扩展字符(ASCII 128至 ASCII 255)。第一个字符只能是字母或扩展字符。将关键字用作符号名属于非法,名称的第一个字符是数字,或名称包含非字母数字字符或扩展字符集中的字符也属于非法。&& **& 局部变量表变量名被下载并存储于CPU内存中,使用较长的变量名可能减少用于存储程序的内存空间。&&& 4.&&& 在"数据类型"域中点击鼠标指针,并使用列表框为局部变量选择适当的数据类型。&&& 注释:&&& 当您将局部变量指定为子程序的参数时,您必须保证为局部变量指定的数据类型不与子程序调用中使用的操作数发生冲突。为"名称"和"数据类型"域提供数值后,程序编辑器会自动为局部变量指定L内存地址。如何在局部变量表中输入附加赋值&& 对于OB1和中断例行程序,局部变量表显示一组已被预先定义为TEMP变量的行。在OB1或中断例行程序中,只能使用这种说明类型。欲在表中增加更多行,只需点击最后一行中的一个单元格,然后使用ENTER键移过该行并向下移动,即自动生成一个新行。&& 对于子程序,局部变量表显示按照以下顺序预先定义说明类型的一组行:IN、IN_OUT、OUT和TEMP。您不能改变该顺序。局部变量在该表中的顺序必须符合当您为子程序调用指令进行操作数赋值时对应的操作数顺序。如果您希望增加附加局部变量,必须用鼠标右键点击现有行,并使用弹出菜单插入与点击行类型相同的另一局部变量。选择插入(Insert)& 行(Row),在所选行的上方插入新行,或选择插入(Insert)& 行下方(Below Row),在所选行下方插入新行。
上一篇:下一篇:
Powered by &
这里是—这里可以学习 —这里是。
栏目导航:每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
| 新手必读 |
You are here:
计数器、定时器的使用方法。
热点活动:
计数器、定时器的使用方法。 - 已解决问题
用西门子S7&200控制风扇的启停,然后要记录风扇启动的次数,风扇运行的累加时间,转换为XX天XX小时XX分,知道用计数器实现风扇启动的次数,每次风扇启动进行一次计数,计数器该如何设置,(复位信号佮处理,不要求复位,只进行计数,PV值的处理是不是只要设为最大值?也不要比较),如何将记录到的数值取出?风扇运行时间的累计处理,有谁编过这个程序吗?如何实现记录风扇每次运行的日期?可以截图不,大家。刚入门的新手。
问题补充:看了下第一个答案的程序图。1、觉得记录风扇启动的次数用累加器实现更好。2、记录运行时间的程序没有看懂,和记录风扇启动次数的程序有什么区别呢?加一次是多长时间呢?3、觉得运行时间的累计还是用定时器和计数器(或者累加)实现更好,将数据形成风扇运行了xx天xx时xx分比较好。4、现在还不太明白的问题是,如何实现记录风扇启动时刻的问题(现在的系统是用PT100采集温度值,温度大于40度启动,小于34度停止,所以想要采集风扇启停的时刻值,以此来粗略的估计,环境温度在哪些时刻较高,多长时间可以将温度降下来)。
产品版区:
悬赏分:20 | 解决时间: 08:49:34 | 提问者: - 新生&nbsp&nbsp第1级
问题ID:95582
风扇启动的次数和风扇运行时间的累计可以都用累加的方式处理,没有必要使用计数器。如图所示。
图片说明:1,&&
初级工程师&nbsp&nbsp第9级&
以下网友赞了您的问题:
填写您的评论...
提问者对于答案的评价:谢谢,看明白了。
最佳答案作者回复:回答补充:1.累加器的最大值只有32767,而双整数最大是,当然后者好,时间长了不会溢出。2.SM0.5是特殊脉冲寄存器,加一次是1秒。3.你得到秒了,还不会转成xx天xx时xx分么?
已阅,最佳答案正确。
置评专家:西门子自动化产品支持& 09:25:09
更多相关问题
本版精华问答
等待您来回答
作者/最新回复
最后回复时间
看看这里的思路是否适合你:《s7-200电力变压器冷却控制》
- 资深顾问&nbsp&nbsp第13级
& 09:08:39
1、《S7-200&可编程控制器系统手册&》2、《西门子&S7-200·LOGO!·SITOP&参考》V0.95版(更新版)
- 顶级工程师&nbsp&nbsp第12级
& 12:48:46
上一页1下一页&
扫描打开手机版
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!每日登录:+1西币&+1积分
&下次自动登录
绑定第三方账号登录 & & &
扫描二维码登录支持中心移动端
获取动态密码
| 新手必读 |
You are here:
200PLC读取系统时间,按时间...
热点活动:
200PLC读取系统时间,按时间完成任务 - 已解决问题
我现在想用200PLC,用read_rtc读取系统时间,然后与设定的时间比较,例如每天的5点开始工作,这样可行吗?没有用过,需要注意什么,望高人指点!
产品版区:
悬赏分:5 | 解决时间: 16:01:15 | 提问者: - 新生&nbsp&nbsp第1级
问题ID:101790
1&例如当时间达到09年6月3日20点31分20秒的时候,CPU转到停止,前提是CPU有硬件时钟,并且正确设置了时间。LD&&&&&SM0.5EUTODR&&&VB0&&&&&&//读取时间LDB&=&&VB0,&16#09&&&&&&&&//读取的时间是BCD码,这样用省去格式转换AB&=&&&VB1,&16#06AB&=&&&VB2,&16#03AB&=&&&VB3,&16#20AB&=&&&VB4,&16#31AB&=&&&VB5,&16#20STOP2&如果定时开启关闭外部设备,那PLC可以轻松完成。例如每天早上6点到晚上8点开机LD&&&&&SM0.5EUTODR&&&VB0LDB&=&&VB3,&16#06AB&=&&&VB3,&16#20=&&&&&&Q0.0&3&PLC运行一段时间停止LD&&&&&SM0.4EUINCD&&&MD0&&&//每分钟累加一次,LDD=&&&MD0,&4320&&//3天后CPU停止,4320=3天*24小时*60分钟STOP&&&&&&&&&&&&&&&&&//在系统块里将MD0设置为断电保持,那么计时不受停电影响,停电自动保存计时时间。关键是如何读系统时钟:S7-200的硬件实时时钟可以提供年、月、时、分、秒的日期/时间数据。CPU221、CPU222没有内置的实时时钟,需要外插“时钟/电池卡”才能获得此功能。CPU224、CPU226和CPU226&XM都有内置的实时时钟。&为了提高运算效率,应当避免每个程序周期都读取实时时钟。实际上可读取的最小时间单位是1秒,可每秒读取一次(使用SM0.5上升沿触发读取指令)。&使用程序读取的实时时钟数据为BCD格式,可在状态图中使用十六进制格式查看。CPU靠内置超级电容(+外插电池卡)在失去供电后为实时时钟提供电源缓冲;缓冲电源放电完毕后,再次上电后时钟将停止在缺省值,并不开始走动。要设置日期、时间值,使之开始走动,可以:用编程软件(Micro/WIN)的菜单命令PLC&&&Time&of&Day&Clock...,通过与CPU的在线连接设置,完成后时钟开始走动&编用户程序使用Set_RTC(设置时钟)指令设置&&Micro/WIN可以通过任何编程连接实现实时时钟的设置。使用&S7-200&的&READ_RTC(读取实时时钟)和&SET_RTC(设置实时时钟)指令时,&读取和设置的数据格式都是&BCD&码的。如果觉得不便计算、处理,可使用&Clock&Integer&指令库。&要使用&Clock_Integer&指令库,须遵循下列步骤:请见《《西门子&S7-200·LOGO!·SITOP&参考》V0.92版(更新版)()&&&》,其中有关如何读系统时钟及如何添加库指令的说明,下载:&&
参考资料:http://www..cn/service/answer/solution.aspx?Q_id=97758&cid=1028
顶级工程师&nbsp&nbsp第12级&
以下网友赞了您的问题:
填写您的评论...
提问者对于答案的评价:xiexie
ppnononono:
朋友&初学者上面的回答没怎么弄明白&方便把你做的梯形图发给我吗&我的邮箱&谢了。
2/26/:50 PM
已阅,最佳答案正确。
置评专家:西门子自动化产品支持& 10:41:55
更多相关问题
本版精华问答
等待您来回答
作者/最新回复
最后回复时间
可以了。需要注意:1.需要支持实时时钟的200PLC2.直接读出来的小时数是0-23的BCD码,需要转换成整数0-23参考图1
图片说明:1,&&
专家奖励分:5分
- 初级工程师&nbsp&nbsp第9级
& 11:11:42
可以。你需要考虑当设备长时间不上电情况下,系统时间会恢复到出厂时间。时间可能不准确。
- 助理工程师&nbsp&nbsp第8级
& 21:22:18
我现在想用200PLC,用read_rtc读取系统时间,然后与设定的时间比较,例如每天的5点开始工作,这样可行吗?没有用过,需要注意什么,望高人指点!你好,完全可以,但是需要注意两点:1:读取的时间分别存储在连续的8个字节中,具体字节含义看帮助即可,且存储格式为BCD码格式,需要注意2:200的系统时间是依赖于电容或者电池来续航的,如果没有电池且电容没电的情况下,时间会恢复到初始状态
专家奖励分:5分
- 助理工程师&nbsp&nbsp第8级
& 17:48:27
上一页1下一页&
扫描打开手机版
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!您现在所在的是:
西门子SIEMENS
→ 浏览主题:
* 帖子主题:
zhangpeizhi
文章数:259
年度积分:514
历史总积分:1818
注册时间:
各位好,本人正在学习西门子S7-200,学到定时器的应用时,T37为100ms定时器,如果我要5秒的定时,应该设置为50,但我用模拟器模拟运行时,运行到50就动作了,可实际时间还没到5秒,要改为500才行。问题出在模拟软件还是其他原因呢?恳请各位高人指点。
[此贴子已经被作者于 12:03:07编辑过]
文章数:3154
年度积分:590
历史总积分:8844
注册时间:
时间继电器模拟还会出问题?
zhangpeizhi
文章数:259
年度积分:514
历史总积分:1818
注册时间:
回复 #1楼 PLC-hmi
我也不知道,所以上来请教一下各位,你可以试试有没有问题
六脉加易筋经
文章数:307
年度积分:139
历史总积分:2947
注册时间:
我电脑上试了没问题,就是到50时动作的,用的西班牙版仿真软件
zhangpeizhi
文章数:259
年度积分:514
历史总积分:1818
注册时间:
回复 #3楼 六脉加易筋经
是到50时动作,但实际时间并没有5秒呀,大概只有1秒钟
六脉加易筋经
文章数:307
年度积分:139
历史总积分:2947
注册时间:
回复 #4楼 zhangpeizhi
仿真器的问题,200的非官方的,功能差。就是学习用用的。
文章数:1622
年度积分:58
历史总积分:7086
注册时间:
37是10ms的吧!4字头的才是100ms的,明天我看看,我是不是错了!
看了,37#刚好是100ms的
[此贴子已经被作者于 23:17:08编辑过]
& & & & & & & & &一切为了生活
nj_chengyu
文章数:67
年度积分:150
历史总积分:150
注册时间:
鼠标指向定时器时会自动弹出定时器的时基
zhangpeizhi
文章数:259
年度积分:514
历史总积分:1818
注册时间:
回复 #5楼 六脉加易筋经
谢谢,条件所限,只能将就了
文章数:5069
年度积分:26
历史总积分:8078
注册时间:
200的模拟不大好用,还不如买个二手的练一下.
天地不仁以万物为刍狗
工控学堂推荐视频:

我要回帖

更多关于 siemens s7 200 cn 的文章

 

随机推荐