编写PLC程序,实现对设备运行时间及运行次数的统计,时间包括上次运行时间和总的运行时间。并编辑相应触摸屏(或其他)画面加以显示。
要求能自动或人工复位各统计数据。PLC及显示终端品牌不限。
工控PLC擂台每周一期,本期下周末结贴。奖项设置:一等奖1名:50MP,二等奖5名:10MP,三等奖10名:30积分。
MP介绍:gongkongMP即工控币,是中国工控网的用户积分与回馈系统的一个网络虚拟计价单位,类似于大家熟悉的QB,1个MP=1元人民币。
MP有什么用?兑换服务:以1个MP=1元来置换中国工控网的相关服务。 兑换现金:非积分获得的MP可兑换等值现金(满100MP后、用户可通过用户管理后台申请兑换)。
不一定要使用触摸屏,文本屏也行吧,这样的功能使用触摸屏有点...
1、硬件配置
使用ABB AC500系列 PM581-ETH+DX522(8 DI / 8 DO)+CP502(ABB CP400系列的文本屏)+CAB57(CP502与PM581-ETH的串口通讯线)
这里要说明一下,文本屏不使用常规的用法,文本屏只是作为带按键的显示终端使用,这可是少见的。大家走着瞧吧。
2、IO说明
这里的IO只有1哥DX522这个输入输出模块,该模块8路输入和8路输出。
5.1 主程序
系统硬件配置如下:
PLC:西门子S7-200 CN;CPU 226 CN REL 02.01;AC100~230V电源/DC24V输入/继电器输出;订货号6ES7 216-2BD23-0XB8;固件02.01 Build 2;ASIC:01.00。
文本显示器:TD400C;订货号6AV6 6640-0AA00-0AX0;自带9芯TD/CPU电缆;版本:1.0.0.3。
S7-200与TD400C通过TD400C随机配置的TD/CPU通信电缆连接,实现电源供给和通信(因为当TD400C与S7-200 CPU之间的距离小于 2.5米时,采用TD/CPU电缆的方式进行供电;当TD400C与S7-200 CPU之间的距离超过2.5米时,使用外部电源供电并使用PROFIBUS组件连接网络)。
系统软件配置如下:
S7-200参数设置:在“系统块”的“断电数据保持”中设置VW1600以后2000个单元为断电数据保持。
TD400C参数设置:
TD400C地址:1
CPU地址:2
参数块地址:0
波特率:9.6K
HSA:31
GUF: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个字的存储器留作备用。
引用彩虹 的回复内容:
TO老菜鸟:你写的显示系统时钟后存储时已经是BCD码了,你还用BCD_I指令,在TD400C上显示系统时钟也不是那样写的吧???
-------------------------------------------------
引用彩虹 的回复内容:TO老菜鸟:你用SM0.0去读取系统时钟,我认为用SM0.5的上升沿去读取好一点(即一秒读取一次系统时钟)
1、这个程序是工程中在正常使用的程序,几年了,基本没发现什么问题,所以说来应该没有什么原则性的错误。
2、当然,该程序可能不是最好的,这需要详细去分析该程序有哪些缺点,怎么去完善。
3、条条道路通罗马,采用哪种方案都可以实现,所以程序不是唯一的。