TIA16_交通灯程序.zip
(611.46 KB, 售价: 5 E币)
控制要求: 首先,南北方向红灯亮25秒,与此同时,东西方向绿灯先亮20秒,然后闪3秒,接着东西方向黄灯闪2秒;接下来,东西方向红灯亮30秒,南北方向绿灯先亮25秒,然后,南北绿灯闪3秒,南北黄灯闪2秒。 程序设计思路: 程序分为单定时器和双定时器两个版本,但思路是一样的,都是根据在不同的时间点,控制不同的灯亮。因为总的时长为55秒,然后东西方向通行时间为25秒,南北方向通行时间为30秒,整个程序流程如下:
然后简单说一下单定时器和双定时器的区别,他们的功能是一样的,只不过双定时器可以任意修改闪烁频率,而单定时器版本的只能使用系统设定好的几个频率。因为单定时器版本用的是PLC自带的系统时钟,使用方法是打开”设备组态”,在“常规”里面找到“系统和时钟存储器”,勾选“时钟存储器位”就行了,然后就可以在PLC变量表里面看到相应的变量了。图片如下:
程序如下: 单定时器版本: - //交通灯:单定时器版本
- IF "启动" AND "停止" = 0 THEN
- "数据块_1".启动值 := 1;
- "数据块_1".停止值 := 0;
- ELSIF "停止" THEN
- "数据块_1".启动值 := 0;
- "数据块_1".停止值 := 1;
- "东西红" := 0;
- "东西黄" := 0;
- "东西绿" := 0;
- "南北红" := 0;
- "南北黄" := 0;
- "南北绿" := 0;
- END_IF;
- IF "数据块_1".启动值 THEN
- "数据块_1".定时器.IN := 1;
- "数据块_1".定时器.PT := T#55s;
- "IEC_Timer_0_DB_2".TON(IN := "数据块_1".定时器.IN,
- PT := "数据块_1".定时器.PT,
- ET => "数据块_1".定时器输出时间);
- IF "数据块_1".定时器输出时间>=T#0s AND "数据块_1".定时器输出时间<=T#20s THEN
- "东西绿" := 1;
- "南北红" := 1;
- ELSIF "数据块_1".定时器输出时间>T#20s AND "数据块_1".定时器输出时间<=T#23s THEN
- "东西绿" :="Clock_2Hz" ;
- ELSIF "数据块_1".定时器输出时间>T#23s AND "数据块_1".定时器输出时间<=T#25s THEN
- "东西绿" := 0;
- "东西黄" := "Clock_2Hz";
- ELSIF "数据块_1".定时器输出时间>T#25s AND "数据块_1".定时器输出时间<=T#50s THEN
- "东西红" := 1;
- "南北绿" := 1;
- "东西黄" := 0;
- "南北红" := 0;
- ELSIF "数据块_1".定时器输出时间>T#50s AND "数据块_1".定时器输出时间<=T#53s THEN
- "南北绿" := "Clock_2Hz";
- ELSIF "数据块_1".定时器输出时间>T#53s AND "数据块_1".定时器输出时间<=T#55s THEN
- "南北黄" :="Clock_2Hz" ;
- "南北绿" := 0;
- END_IF;
- IF "数据块_1".定时器输出时间 =T#55s THEN
- RESET_TIMER("IEC_Timer_0_DB_2");
- "东西红" := 0;
- "东西黄" := 0;
- "东西绿" := 0;
- "南北红" := 0;
- "南北黄" := 0;
- "南北绿" := 0;
- END_IF;
- END_IF;
复制代码 双定时器版本:- //交通灯:两个定时器版本
- IF "启动" AND "停止" = 0 THEN
- "数据块_1".启动值 := 1;
- "数据块_1".停止值 := 0;
- ELSIF "停止" THEN
- "数据块_1".启动值 := 0;
- "数据块_1".停止值 := 1;
- "东西红" := 0;
- "东西黄" := 0;
- "东西绿" := 0;
- "南北红" := 0;
- "南北黄" := 0;
- "南北绿" := 0;
- END_IF;
- IF "数据块_1".启动值 THEN
- "数据块_1".定时器.IN := 1;
- "数据块_1".定时器.PT := T#55s;
- "数据块_1".定时器1.PT := T#0.5s;
- //总定时;55s
- "IEC_Timer_0_DB_2".TON(IN := "数据块_1".定时器.IN,
- PT := "数据块_1".定时器.PT,
- ET => "数据块_1".定时器输出时间);
- //0~20s;南北红灯,东西绿灯
- IF "数据块_1".定时器输出时间>=T#0s AND "数据块_1".定时器输出时间<=T#20s THEN
- "东西绿" := 1;
- "南北红" := 1;
- //东西绿灯闪3s
- ELSIF "数据块_1".定时器输出时间>T#20s AND "数据块_1".定时器输出时间<=T#23s THEN
- "数据块_1".定时器1.IN := 1;
- "数据块_1".定时器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "数据块_1".定时器1.IN,
- PT := "数据块_1".定时器1.PT,
- Q => "数据块_1".定时器输出2);
- IF "数据块_1".定时器输出2 THEN
- "东西绿" := NOT "东西绿";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- //东西黄灯闪2s
- ELSIF "数据块_1".定时器输出时间>T#23s AND"数据块_1".定时器输出时间<=T#25s THEN
- "东西绿" := 0;
- "数据块_1".定时器1.IN := 1;
- "数据块_1".定时器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "数据块_1".定时器1.IN,
- PT := "数据块_1".定时器1.PT,
- Q => "数据块_1".定时器输出2);
- IF "数据块_1".定时器输出2 THEN
- "东西黄" := NOT "东西黄";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- //东西红灯,南北绿灯亮25S
- ELSIF "数据块_1".定时器输出时间>T#25s AND "数据块_1".定时器输出时间<=T#50s THEN
- "东西红" := 1;
- "南北绿" := 1;
- "东西黄" := 0;
- "南北红" := 0;
- //南北绿灯闪3s
- ELSIF "数据块_1".定时器输出时间>T#50s AND "数据块_1".定时器输出时间<=T#53s THEN
- "数据块_1".定时器1.IN := 1;
- "数据块_1".定时器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "数据块_1".定时器1.IN,
- PT := "数据块_1".定时器1.PT,
- Q => "数据块_1".定时器输出2);
- IF "数据块_1".定时器输出2 THEN
- "南北绿" := NOT "南北绿";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;;
- //南北黄闪2s
- ELSIF "数据块_1".定时器输出时间>T#53s AND "数据块_1".定时器输出时间<=T#55s THEN
- "南北绿" := 0;
- "数据块_1".定时器1.IN := 1;
- "数据块_1".定时器1.PT := T#500ms;
- "IEC_Timer_0_DB".TON(IN := "数据块_1".定时器1.IN,
- PT := "数据块_1".定时器1.PT,
- Q => "数据块_1".定时器输出2);
- IF "数据块_1".定时器输出2 THEN
- "南北黄" := NOT "南北黄";
- RESET_TIMER("IEC_Timer_0_DB");
- END_IF;
- END_IF;
- //全部初始化
- IF "数据块_1".定时器输出时间 >=T#55s THEN
- RESET_TIMER("IEC_Timer_0_DB_2");
- "东西红" := 0;
- "东西黄" := 0;
- "东西绿" := 0;
- "南北红" := 0;
- "南北黄" := 0;
- "南北绿" := 0;
- END_IF;
- END_IF;
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|