详细介绍
西门子6FC5357-0BB35-0AB0
6FC5357-0BB35-0AB0
SINUMERIK 840D/DE CNC 硬件 NCU 573.5B 1.4 GHz,128 MB 不带系统软件 存储器:NC 3MB,PLC 128KB PROFIBUS-DP 准备
问题:
如何为S7-22x编程一个时间控制的中断?
解答:
下列CPU可以处理一个时间控制的中断:
中断 | CPU221 | CPU222 | CPU224 | CPU226 | CPU226XM |
支持的时间控制中断的个数 | 2 | 2 | 2 | 2 | 2 |
中断个数 | 0 和 1 | 0 和 1 | 0 和 1 | 0 和 1 | 0 和 1 |
可能的中断程序的个数 | INT 0 | INT 0 | INT 0 | INT 0 | INT 0 |
S7-200 支持一个或更多的时间控制的中断。可以用时间控制中断来定义要在周期中执行的动作。定义的周期时间以 1 毫秒为单位。范围在 1毫秒(1)至 255 毫秒(255)间。在特殊标志字节SMB34中写入中断 0 的周期时间,在SMB35中写入中断 1的周期时间。
每当延时时间到达时,时间控制中断事件就会调用相应的中断程序。通常可以使用时间控制中断控制模拟量输入的定期采样。当把一个中断程序分配给一个时间控制中断事件时,时间控制中断就被激活后并开始计时。在样例中,这是启动子程序“SBR 0”所做的一的事情。系统确定该周期时间使后续的修改不会影响到该周期时间。如果想要修改周期时间,必须为周期时间一个新值然后重新将中断程序赋予该时间控制的中断。重新赋予时,函数会删除以前赋予中累计的时间值并以新值开始运行时间。
命令的作用 | Command | Operand | Example of |
主程序 |
|
|
|
网络 1 |
|
|
|
通过查询只在*个周期里置“1”的标志,给该事件分配一个少有的中断程序号 | LD | SM 0.1 | SM 0.1 |
在*个循环中调用子程序“0” | CALL | 0 |
|
主程序结束 | MEND |
|
|
启动子程序“0” | SBR | 0 |
|
使用“确定为“ 1 ”的系统标志SM 0.1 ”,设置时间控制段的时间间隔为 100 * 1ms = 100 ms | LD | SM 0.1 |
|
允许使用所有中断 | ENI |
|
|
分配时间控制中断“0”到中断程序“0” | ATCH | INT,EVENT | 0,10 |
终止子程序 | RET |
|
|
启动中断程序 | INT | 0 |
|
现在可以写想要每隔 100 毫秒处理一次的程序 | ....... | .... | .... |
从中断程序返回 | RETI |
|
|
注意事项:
- CPU根据中断发生的次序和它的优先级状态对其进行处理。因此对于中断处理始终只能有 一个程序是激活的。如果一个中断程序正在被处理,那么它就会首先被处理完毕。它不会被后面出现的中断程序所打断即使这个程序有更高的优先级。当另一个中断正在被处理时,发生了一个中断,那么后面的中断就会被放入队列中等待以后的处理。时控中断队列中多可放入8个中断。
- 有可能发生出现的中断要多于队列里可容纳的中断个数的情况,这样,系统就会发出队列溢出标志,而该标志指出不能被包括在队列里的中断事件的类型。下面的表格为发生队列溢出时所设置的特殊标志。只能在中断程序中使用位 SM 4.0 至 4.2,因为当中断队列处理完毕后,主程序的处理继续进行时它们会被复位。
队列 | 特殊标志 |
通讯中断的队列溢出 | SM 4.0 |
I/O中断的队列溢出 | SM 4.1 |
时间控制中断的队列溢出 | SM 4.2 |
问题:
在自动重启后,为什么CPU无法正常启动,反而停止并出现出错信息“QVZ”或“PEU”?在 USTACK中常常不显示更多有用信息。
解答:
如果各自带有电源的几个系统(中央控制器和扩展单元的分布式连接)连接到同一电压上并且同时开关这些系统,则 会发生诸如中央控制器无法自动启动(QVZ,PEU)的现象。
根据装载的不同系统,在不同时间将系统电源切换到内置5V系统电压。这对整个系统都有影响,在设计和编程时要注意。本 文中开/关状态下的影响是不同的,需要分别考虑。
I. 关状态
- 如果中央控制器比扩展单元(5V系统电压)早死机,则不会发生问题。在该情况下CPU因受电源故障(NAU)影响而停止运行,在 电压恢复后可以重新运行。
- 在扩展单元比中央控制器早死机的情况下,CPU能够检测并保存来自分布式扩展单元的错误。这 些错误可以是无法确定外围设备(PEU)或是确认延迟(QVZ)。鉴于安全考虑,SIMATIC S5系统在这种情况下表现为:在供电恢复后,C PU回到电源故障(NAU)前所处的模式。
例如,由于CPU在电源故障之前快速保存了错误(PEU或QVZ),所以CPU仍保持停止。鉴于安全考虑,用 户必须通过打开电源或是重启CPU对已辨识的错误进行确认。如果未对OB23/24进行编程或在OB23/24中对停止进行编程,则 S5-115U系列的CPU将会停止,这是该系列CPU的系统属性。
补救措施:
通过分布式接口(可通过软件评估的CPU 945)可以关闭PEU信号。在 由QVZ而不是PEU错误导致CPU停止的情况下,可以通过OB23/24使用软件来抑制确认延迟。但缺点是,例如无法再辨识出 一个草拟的或有错误的CPU模块(“实际QVZ”)。为区分“实际QVZ”和由电源故障产生的QVZ,特提出以下解决方法:
- 创建一个块并在OB 23/24中打开它。
- 在块中编写时间环的程序。环长度根据设备和经验值来确定时间(建议为:100...500ms)。
- 在该时间环(比如停止)结束后,对“实际QVZ"结果进行编程。
功能块中的程序实例
西门子6FC5357-0BB35-0AB0
:A | F 0.0 | ||
:AN | F 0.0 | ||
:SP | T x | 用RLO=0触发定时器x | |
: | |||
:O | F 0.0 | ||
:ON | F 0.0 | ||
:L | KT 10.0 | 时间环=100毫秒 | |
:SP | T x | 用RLO=1启动定时器x | |
TIME | : | ||
:A | T x | ||
:JC | = TIME | ||
:STS | 停止,作为对“实际QVZ”的 响应 | ||
:BE |
注意事项:
- 时间环>关状态时系统之间的时间差异。
- 需要重新触发循环时间。
- 应用临界时间重新设置输出。
程序描述
在(由电源故障或“实际QVZ”)已辨识QVZ的情况下,CPU插入到OB23/24并处理时间环。& nbsp;
在电源故障情况下,甚至在处理时间环(正常程序处理)时CPU也会停止。不记录其它错误,并在供电恢复后CPU开始运行。
在“实际QVZ”的情况下,在结束该时间环后处理下一个STEP 5操作/序列。
在此可以对全部“实际QVZ”(比如停止状态)响应进行编程。
II. 开状态
在开状态下,需要注意的是:CPU检测到所有外围设置的数字设定并将它保存在一个控制扇区中。在 循环程序中,过程映像更新时只读取和写入外围设置。如果扩展单元比中央控制器要早连到电源上,就不会发生问题。
补救措施:
有了S5-115U中央模块(CPU版本B),“可编程启动延迟”( 参见S5-115U Manual Chapter 2.5.1 Start-up Behaviour)就是可行的。这种情况下,在 终止启动延迟后读取外围设置。此时如果已经读取了控制扇区,则OB21/22中的延迟就不起作用了。
根据该方法,无需任何硬件花费就可以消除上面提到的错误。当电源恢复后,CPU将在(也应该在)无错模式下运行。
1,【北京】2,【天津】
3,【上海】
4,【重庆】
二、【自治区】1,【新疆】:2地级市——乌鲁木齐、克拉玛依19县级市——石河子、阿拉尔市、图木舒克、五家渠、哈密、吐鲁番、阿克苏、喀什、和田、伊宁、塔城、阿勒泰、奎屯、博乐、昌吉、阜康、库尔勒、阿图什、乌苏
2,【西藏】:1地级市-
1县级市-日喀则
3,【宁夏】:5地级市——银川、石嘴山、吴忠、固原、中卫
2县级市——青铜峡市、灵武市
4,【内蒙古】:9地级市——呼和浩特、包头、乌海、赤峰、通辽、鄂尔多斯、呼伦贝尔、巴彦淖尔、乌兰察布11县级市——霍林郭勒市、满洲里市、牙克石市、扎兰屯市、根河市、额尔古纳市、丰镇市、锡林浩特市、二连浩特市、乌兰浩特市、阿尔山市
5,【广西】:14地级市——南宁、柳州、桂林、梧州、北海、崇左、来宾、贺州、玉林、百色、河池、钦州、防城港、贵港
7县级市——岑溪、凭祥、合山、北流、宜州、东兴、桂平
三、【省级行政单位】
1,【黑龙江】13地级市——哈尔滨、大庆、齐齐哈尔、佳木斯、鸡西、鹤岗、双鸭山、牡丹江、伊春、七台河、黑河、绥化
19县级市——五常、双城、尚志、纳河、虎林、密山、铁力、同江、富锦、绥芬河、海林、宁安、穆林、北安、五大连池、肇东、海伦、安达
2,【吉林】:8地级市——长春、吉林、四平、辽源、通化、白山、松原、白城
20县级市——九台市、榆树市、德惠市、舒兰市、桦甸市、蛟河市、磐石市、公主岭市、双辽市、梅河口市、集安市、临江市、大安市、洮南市、延吉市、图们市、敦化市、龙井市、珲春市、和龙市
3,【辽宁】:14地级市——沈阳、大连、鞍山、抚顺、本溪、丹东、锦州、营口、阜新、辽阳、盘锦、铁岭、朝阳、葫芦岛
17县级市——新民、瓦房店、普兰、庄河、海城、东港、凤城、凌海、北镇、大石桥、盖州、灯塔、调兵山、开原、凌源、北票、兴城
4,【河北】:11地级市——石家庄、唐山、邯郸、秦皇岛、保定、张家口、承德、廊坊、沧州、衡水、邢台
22县级市——辛集市、藁城市、晋州市、新乐市、鹿泉市、遵化市、迁安市、武安市、南宫市、沙河市、涿州市、定州市、安国市、高碑店市、泊头市、任丘市、黄骅市、河间市、霸州市、三河市、冀州市、深州市
5,【山东】:17地级市——济南、青岛、淄博、枣庄、东营、烟台、潍坊、济宁、泰安、威海、日照、莱芜、临沂、德州、聊城、菏泽、滨州
28县级市——章丘、胶南、胶州、平度、莱西、即墨、滕州、龙口、莱阳、莱州、招远、蓬莱、栖霞、海阳、青州、诸城、安丘、高密、昌邑、兖州、曲阜、邹城、乳山、文登、荣成、乐陵、临清、禹城
6,【江苏】:13地级市——南京、镇江、常州、无锡、苏州、徐州、连云港、淮安、盐城、扬州、泰州、南通、宿迁
27县级市——江阴市、宜兴市、邳州市、新沂市、金坛市、溧阳市、常熟市、张家港市、太仓市、昆山市、吴江市、如皋市、通州市、海门市、启东市、东台市、大丰市、高邮市、江都市、仪征市、丹阳市、扬中市、句容市、泰兴市、姜堰市、靖江市、兴化市
7,【安徽】:17地级市——合肥、蚌埠、芜湖、淮南、亳州、阜阳、淮北、宿州、滁州、安庆、巢湖、马鞍山、宣城、黄山、池州、铜陵
5县级市——界首、天长、明光、桐城、宁国
8,【浙江】:11地级市——杭州、嘉兴、湖州、宁波、金华、温州、丽水、绍兴、衢州、舟山、台州
22县级市——建德市、富阳市、临安市、余姚市、慈溪市、奉化市、瑞安市、乐清市、海宁市、平湖市、桐乡市、诸暨市、上虞市、嵊州市、兰溪市、义乌市、东阳市、永康市、江山市、临海市、温岭市、龙泉市
9,【福建】:9地级市——福州、厦门、泉州、三明、南平、漳州、莆田、宁德、龙岩
14县级市——福清市、长乐市、永安市、石狮市、晋江市、南安市、龙海市、邵武市、武夷山、建瓯市、建阳市、漳平市、福安市、福鼎市
10,【广东】:21地级市——广州、深圳、汕头、惠州、珠海、揭阳、佛山、河源、阳江、茂名、湛江、梅州、肇庆、韶关、潮州、东莞、中山、清远、江门、汕尾、云浮
22县级市——增城市、从化市、乐昌市、南雄市、台山市、开平市、鹤山市、恩平市、廉江市、雷州市 吴川市、高州市、化州市、高要市、四会市、兴宁市、陆丰市、阳春市、英德市、连州市、普宁市、罗定市
11,【海南】:2地级市——海口、三亚
6县级市——琼海、文昌、万宁、五指山、儋州、东方
12,【云南】:8地级市——昆明、曲靖、玉溪、保山、昭通、丽江、普洱、临沧
9县级市——安宁市、宣威市、个旧市、开远市、景洪市、楚雄市、大理市、潞西市、瑞丽市
13,【贵州】:4地级市——贵阳、六盘水、遵义、安顺
9县级市——清镇市、赤水市、仁怀市、铜仁市、毕节市、兴义市、凯里市、都匀市、福泉市
14,【四川】:18地级市——成都、绵阳、德阳、广元、自贡、攀枝花、乐山、南充、内江、遂宁、广安、泸州、达州、眉山、宜宾、雅安、资阳
14县级市——都江堰市、彭州市、邛崃市、崇州市、广汉市、什邡市、绵竹市、江油市、峨眉山市、阆中市、华蓥市、万源市、简阳市、西昌市
15,【湖南】:13地级市——长沙、株洲、湘潭、衡阳、岳阳、郴州、永州、邵阳、怀化、常德、益阳、张家界、娄底
16县级市——浏阳市、醴陵市、湘乡市、韶山市、耒阳市、常宁市、武冈市、临湘市、汨罗市、津市市、沅江市、资兴市、洪江市、冷水江市、涟源市、吉首市
16,【湖北】:12地级市——武汉、襄樊、宜昌、黄石、鄂州、随州、荆州、荆门、十堰、孝感、黄冈、咸宁
24县级市——大冶市、丹江口市、洪湖市、石首市、松滋市、宜都市、当阳市、枝江市、老河口市、枣阳市、宜城市、钟祥市、应城市、安陆市、汉川市、麻城市、武穴市、赤壁市、广水市、仙桃市、天门市、潜江市、恩施市、利川市
17,【河南】:17地级市——郑州、洛阳、开封、漯河、安阳、新乡、周口、三门峡、焦作、平顶山、信阳、南阳、鹤壁、濮阳、许昌、商丘、驻马店
21县级市——巩义市、新郑市、新密市、登封市、荥阳市、偃师市、汝州市、舞钢市、林州市、卫辉市、辉县市、沁阳市、孟州市、禹州市、长葛市、义马市、灵宝市、邓州市、永城市、项城市、济源市
18,【山西】:11地级市——太原、大同、忻州、阳泉、长治、晋城、朔州、晋中、运城、临汾、吕梁
11县级市——古交、潞城、高平、介休、永济、河津、原平、侯马、霍州、孝义、汾阳
19,【陕西】:10地级市——西安、咸阳、铜川、延安、宝鸡、渭南、汉中、安康、商洛、榆林
3县级市——兴平市、韩城市、华阴市
20,【甘肃】:12地级市——兰州、天水、平凉、酒泉、嘉峪关、金昌、白银、武威、张掖、庆阳、定西、陇南
4县级市——玉门市、敦煌市、临夏市、合作市
21,【青海】:1地级市——西宁
2县级市——格尔木、德令哈
22,【江西】:11地级市——南昌、九江、赣州、吉安、鹰潭、上饶、萍乡、景德镇、新余、宜春、抚州