接系统讲解第11课。
设计思路和流程再动手写代码,是非常专业的做法,是避免后续返工,保证程序稳定可靠的核心前提,尤其对于新手来说。
设计思路和流程图新手一般用Microsoft Visio和DrawIO即可。更专业的、工业专属的可以用EPLAN Electric P8和AutoCAD Electrical。实际很多系统集成商由于行业、项目大小等等原因压根对这方面没有要求,从来没有设计思路和流程图一说。
实际本人项目编写过程中间,标准化行业性框架和特别复杂的需求,会出具各类文档、包括需求、功能、计划、设计思路等等。简单需求会有基本功能性说明。
初学者知道有这么一回事就行了。根据自己定位和现状慢慢来吧。过于复杂的项目对于很多从业人员来说有可能一辈子也遇不上。
本文控制逻辑、需求简单,无特别要求。设计思路和流程就略过了。
本文简单梯形图编程实现逻辑控制需求和模拟量转换,下一节课重点讲解S71200与电表MODBUS –RTU通信,然后是结构化编程实例。

1、程序编写
1.1 IO点和M区定义
如下图,PLC变量-默认变量表中根据实际接线添加IO点定义,更规范,程序更清晰。
问:不添加IO点定义?不在默认变量表中添加可以吗?
答复如下:
不添加理论上可以。程序中只用使用对应地址例如I0.0也可,使用时软件会自定义名称Tag_x,不过不规范,程序可读性,后续查错和维护性差;可以自己根据IO分门别类,新添加变量表,不同变量表添加不同类型的IO定义。
注意:用到的IO和M区需要在变量表中定义,DB在对应DB块中定义。本文未用M区。M区\DB块详见文章《深度解析 西门子PLC五大核心概念:DB、M、FC、FB、OB》
1.2全局DB块的创建和定义
如下图,创建全局DB块。添加新块-数据块。
名称:自定义,目的是为了方便管理和查找。当项目较大时,建立多个DB块,分门别类定义,对应创建不同的变量。例如按工艺、按设备分类。
类型:选择全局DB。全局DB参见文章《深度解析 西门子PLC五大核心概念:DB、M、FC、FB、OB》。
手动/自动:自动,软件自动指定一个编号。手动需要自己设定编号。编号不重复即可。
如下图,hmi启动、数据类型根据需要自定义,偏移地址自动,也可以手动修改。起始值可以根据实际需要修改,实际一般默认。保持:断电保持设置。其余列暂时用不上,涉及到再详细讲述或者单独文章详细讲述。
问:我创建了DB块,我没有办法一次性把所有程序要用到的变量都定义好。
答复如下:不做设计思路和流程是正常的。就算了做了漏掉也是正常的。程序编写过程中间添加就好了。边做边添加,不是让一次性都做好。
问:程序中怎么使用这些变量了?
答复如下:如下图,新建的数据块默认为优化后的数据块(右键数据块-属性)。程序中使用方式为:DB块名称.变量名称。若取消勾选优化的块访问,同时右键数据块-编译。程序中使用方式为:DB块名称.变量名称或者绝对地址,例如DB1.DBX0.0(HMI启动)。
注意:勾选优化的块访问,上位机和触摸屏只有支持符号访问或者导入软件导出的符号表才能与PLC通信。未勾选优化的块访问,则可以通过绝对地址通信。例如DB1.DBX0.0(HMI启动)。
1.3 模拟量输入异常判断
本文所有程序直接编辑在OB1中,也可以添加新块-函数,创建多个FC,FC中分类编辑程序,相当于子程序,然后在OB1中调用。
OB1中梯形图中可插入SCL程序段。如下图为简单0-10V模拟量输入采样故障判断。
0-10V 断线悬空、短路,PLC 采集值会呈现两种特征:① 锁死极值(0 或 27648);② 随机飘移(超出正常波动区间)。因此判断逻辑以「极值阈值 + 短延时」为核心。
采样值小于500或者大于27000,且波动较大大于800。作为采样异常判断标准。相关阈值,根据实际调整。
问:模拟量输入异常判断都得这么麻烦复杂吗?这种方式靠谱吗?
答复如下:这种方式应付大部分情况足够。实际硬件组态诊断 + OB 故障组织块是模拟量输入异常判断最规范、最可靠的故障诊断方式。留待下次文章详解。
有时候现场发现有人甚至没有做模拟量输入异常判断,没有严重后果,或者运气好没有出现啥大问题,但是本人认为就算非高危和高可靠性场景也不建议这样做。
1.4 模拟量转换
如下图,模拟量转换。以液位转换为例。0-10V对应PLC模拟量模块转换出来的采样原始值为0-27648(这里采用0-10V纯为了省成本,且能满足项目需求。在系统讲解PLC-第10课有描述,实际一般使用4-20ma)。
%IW64液位采样原始值:即为硬件组态中组态的第一个通道的模拟量输入地址,这里为液位。
数据块_1.液位最小量程:为触摸屏设定的液位最小量程,这里也可以直接输入数值,触摸屏设定更灵活(接的实际液位传感器的量程最小值)。
数据块_1.液位最大量程:为触摸屏设定的液位最大量程,这里也可以直接输入数值(接的实际液位传感器的量程最大值)。
#YW_NORM_OUT:模拟量计算过程中间值的暂存变量。定义在OB1中的局部变量。当然也可以在DB块\M区定义。
数据库_1.实际液位:转换后的实际液位值,可供触摸屏和上位机等第三方读取。
NORM_X
SCALE-X
1.5 逻辑控制
如下图,急停常闭。数据块1.hmi启动和数据块1.hmi停止,为触摸屏复归型按钮下发的命令。Hmi单动/联动:单动(触摸屏下发0),表示触摸屏可按钮启停泵;联动(触摸屏下发1)表示系统自动根据液位启停泵。
实现的功能:
就地现场按钮启动:远程就地在就地状态,按启动按钮,在没有故障,没有急停的情况下输出Q0.0启动泵,程序自保持。
触摸屏界面按钮启动:远程就地在远程状态,Hmi单动/联动在单动状态,没有故障,没有急停的情况下启动泵,程序自保持。
就地状态现场按钮停止。
远程状态触摸屏界面按钮停止。
根据液位自动启停泵:液位无采样故障、远程状态、联动、无故障、无急停根据液位自动启停泵。
远程/就地转换不影响泵运行状态。就地状态只能现场按钮停止。远程状态只能触摸屏界面按钮停止。
单动/联动转换不影响泵运行状态。
液位低于设定值,远程/就地和单动/联动无论何种状态必须停泵,防止损坏。
急停在任何情况下都可以停止,直接控制断电源,同时给个输入给到PLC,PLC不再输出。
1.6 报警
声光报警,如下图。
问答
问:一个简单的控制系统逻辑控制就上面这些足够了吗?
答复如下:
个人认为要求很低,项目小价钱又低的项目先这样吧。慢慢完善思维和处理方式。实际本人会考虑更多可靠性、稳定性和使用方便性,还有许多意外情况需要做处理。例如:1、触摸屏设置启动液位和停止液位时,停止液位大于启动液位怎么办,有人说触摸屏做设置。实际原则上来说,触摸屏设置了,PLC也得针对这种误设置或者意外导致的停止液位大于启动液位情况做处理。2、泵在现场按钮手动频繁启停需要做处理,自动时频繁启停时需要配合参数设置做处理。3、触摸屏复归按钮下发命令,意外情况下发1成功,恰好下发0失败,怎么处理等等。
PLC 系统集成 + 程序编写,行业层面没有 “一刀切” 的强制标准化规范,只有通用的设计原则和大厂 / 头部集成商的内部标准化体系,不同公司、不同工程师都有自己的设计风格和落地特色。小的系统集成商更是乱来一气。
#PLC教学 #PLC程序实例#排水池自动化控制 #PLC系统讲解 #工控学习