有“贝”而“莱” 强势围观 | 使用纯软仿真实现X20对交通灯的控制 025

网友投稿 288 2022-09-28

有“贝”而“莱” 强势围观 | 使用纯软仿真实现X20对交通灯的控制 025

写在前面

本年度专为工业自动化爱好者而生的“2021贝加莱橙色灯塔杯技术最强音挑战赛”已经接近尾声,感谢合作伙伴和技术粉丝们的厚爱,感谢大家的踊跃参与!

The Voice of B&R Tech技术最强音竞赛

025

使用纯软仿真实现X20对交通灯的控制

周德兴

一、概 述

如果你没有任何硬件,你也可以编写、调试X20软件,实现大量的小型工业对象的控制(例如交通灯、液位混合,机械手控制等),也可以实现过程自动化工厂、柔性制造生产线等稍大工业场景的控制。脱离硬件进行PAC的学习,大大提高教学实训的便捷性,可以在任何时间,任何地点,只需要电脑就可以实现Auto Studio和X20的学习。

仿真架构如图所示,X20通过Modbus/TCP协议,连接到COSAI-AS3700仿真软件,该仿真软件连接了大量的仿真对象,如同X20的一个扩展模块。

二、仿真X20的IO接口软件

COSAI_AS3700接口软件支持所有Flash,Unit3D等动画软件提供的大量的PLC,PAC控制对象。可以提供真实AS3700 IO模块的连接,实现与真实控制器的电缆连接;可以提供MODBUS/RTU、MODBUS/TCP总线通信,实现与真实控制器,仿真控制器的通信连接。我们目前提供6大类西门子PLC,研华PAC控制器,贝加莱X20控制器的仿真。

难点是首先实现MODBUS/TCP通信,COSAI-AS3700作为服务器,X20作为客户端,通信只实现读取,或者写出WORD类型数据。我们的所有对象的数字量传感器信号寄存器为1~4(4个WORD),每个寄存器包括了16个数字量信号;模拟量传感器为5~21,6400~32000对应信号4~20mA。

“COSAI_AS3700软件”可以连接所有的仿真对象,然后与仿真X20之间进行MODBUS/TCP。在“打开对象”菜单中选择本次实验的仿真对象(实验三:a8405s交通灯);选择“在本软件中打开”。如图2所示。

图2 打开对象

三、纯软CPU仿真与对象仿真​

CPU仿真,需要配置CPU,修改Simulation使能。如图1所示。

图1 CPU仿真

增加了两个全局变量MD_IN,MD_OUT。然后关联到Modbus Tcp_any,如图2所示。

图2 关联ModbusTcp_any变量

增加一个C语言程序,分拆变量,如图3所示。注意使用BT0,BT1两个按钮。

图3  变量转换代码

四、仿真的交通灯控制

仿真对象如图4所示。

图4 A8405仿真交通灯对象

其中数码管显示也可以单独使用“七段数码显示”仿真完成。如图5所示。启动时,LED不断显示0-F。保持时,保持当前状态。

图5 七段数码显示模块

4.1、实验目的​

1、学习时序控制方式中的同步控制方式。

2、熟悉定时循环OB块的使用。

3、熟悉LED数码管组合逻辑编码。

4、通过子程序,实现启动,停止加入到时序同步控制方式中。

4.2、控制要求​

信号灯受一个起动开关控制,当起动开关接通时,信号灯系统开始工作,且先南北红灯亮,东西绿灯亮。当起动开关断开时,所有信号灯都熄灭。开关置于保持位置时,保持当前灯状态。

六个阶段:​

0~10秒,南北红灯亮,东西绿灯亮。显示绿灯倒计时。10~15秒,南北红灯亮,东西绿灯闪烁,0.5秒切换。显示绿灯倒计时。15~20秒,南北红灯亮,东西黄灯亮;显示黄灯倒计时。20~30秒,南北绿灯亮,东西红灯亮;显示绿灯倒计时。30~35秒,南北绿灯闪烁,0.5秒切换,东西红灯亮;显示绿灯倒计时。35~40秒,南北黄灯亮,东西红灯亮;显示黄灯倒计时。

周而复始。

4.3、输入/输出分配​

本实例以PAC来进行交通灯实验,接线均以PAC对应的点位连接。真实设备的点位连接如图所示。

真实对象接线点位与编程IO点位如表6.2.1所示。前面的点位有可能保留给运动控制。

如果使用仿真软件,则这里使用COSAI-AS3700软件,作为Modbus/TCP服务器(从站),通过PLC建立客户端,连接这个软件,作为扩展IO模块。而且要注意,是否16位的8BYTE前后相反。

仿真对象接线点如表所示

4.4、周期中断编程思路与参考程序​

变量如图7所示。

图7  交通灯程序变量

本地变量,用于七段译码器,如图8所示。

图8  交通灯本地变量

具体交通灯程序如表所示。

void _CYCLIC ProgramCyclic(void){ TimerCount500ms++; if(TimerCount500ms>80) TimerCount500ms=0; if((TimerCount500ms % 2)==0) Flash500ms=1; else Flash500ms=0; TimerCoun1000ms=TimerCount500ms/2; //0-10秒.南北红灯亮.东西绿灯亮。显示绿灯倒计时。 //10-15秒,南北红灯亮.东西绿灯闪烁.0.5s秒切换。显示绿灯倒计时。 if(TimerCoun1000ms<15) { if(TimerCoun1000ms<=10) Flash500ms=1; if(Flash500ms) TraficLightOut=0x21;//100001 else TraficLightOut=0x1; TimerRemain=15-TimerCoun1000ms; } //15-20秒.南北红灯亮.东西黄灯亮:倒计时灭。 else if(TimerCoun1000ms>=15 && TimerCoun1000ms<20) { TraficLightOut=0x11;//010001 TimerRemain=200;//表示关闭 } //20-30秒,南北绿灯亮.东西红灯亮:显示绿灯倒计时。 //30-35秒.南北绿灯闪烁.0.5秒切换.东西红灯亮:显示绿灯倒计时。 else if(TimerCoun1000ms>=20 && TimerCoun1000ms<35) { if(TimerCoun1000ms<=30) Flash500ms=1; if(Flash500ms) TraficLightOut=0xC;//001100 else TraficLightOut=0x8;//001100 TimerRemain=35-TimerCoun1000ms; } //35-40秒.南北黄灯亮.东西红灯亮:倒计时灭。 else if(TimerCoun1000ms>=35 && TimerCoun1000ms<40) { TraficLightOut=0xA;//001010 TimerRemain=200; } if(TimerRemain>=0 &&TimerRemain <=9 ) Show7S=Code[TimerRemain]; else Show7S=0; SNRed=((TraficLightOut & 0x1)>0); SNYellow=((TraficLightOut & 0x2)>0); SNGreen=((TraficLightOut & 0x4)>0); EWRed=((TraficLightOut & 0x8)>0); EWYellow=((TraficLightOut & 0x10)>0); EWGreen=((TraficLightOut & 0x20)>0);}

剩余时间显示,LED解码,注意7段数码管的显示段规则。直接使用了一个数组。

VAR TimerRemain : USINT; TimerCount500ms : USINT; Flash500ms : BOOL; Code : ARRAY[0..9] OF USINT:=[63,6,91,79,102,109,125,7,127,111,119,124,57,94,121,113]; TimerCoun1000ms : USINT;END_VAR

使用MODBUS/TCP,则增加如下指令

Start=((MD_IN & 1)>0); Pause=((MD_IN & 2)>0);

变量SNY,SNR,SNG,EWR,EWY,EWG删除。增加MODBUS/TCP的配置。

if(Start==0) TraficLightOut=0x22;//010010黄灯 temp=Show7S<<6; MD_OUT= TraficLightOut;//;//拼合14位 MD_OUT+=temp;

4.5、实验步骤与结果​

1、按照输入和输出两个配置表,将PAC的输入输出与相应对象的端子用连接线连好;

2、按照输入输出配置,参照参考程序,编写实验程序;

3、下载编写程序到PAC,运行程序;

4、模拟动作实验板上的按钮和开关,验证所编程序的逻辑;

注意,倒计时从15~0,可能出现A,B,C,D,E,F等字符。

下载程序,模拟运行。Watch中增加变量,如图9所示。

图9 观察变量调试窗口

采用MODBUS/TCP的半实物或纯软件实验,结果如图10所示

图10 交通灯仿真对象运行效果

五、总 结

验证了仿真的X20能够与外部IO接口软件或仿真模块通信,从而只有仿真PLC纯软件即可与外部IO接口通信。而外部IO接口可以实现大量的工业场景模拟。

使用纯软仿真与对象仿真的联合实训模式,使得学习成本降低,随时随地学习,并使得学习更加形象生动。而数字孪生的仿真,功能强大,为开发、调试、故障追溯、学习培训提供非常好的条件。​

END

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Open_PCS7 OPC 与Simatic Net OPC 通讯的比较与总结
下一篇:一文搞懂Java项目中枚举的定义与使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~