线下实训
HOME
线下实训
正文内容
plc编程入门1002plc编程入门 0628 「万泉河」优雅的PLC程序一定是用EXCEL写出来的
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

0628 「万泉河」优雅的PLC程序一定是用EXCEL写出来的

0628 【万泉河】优雅的PLC程序一定是用EXCEL写出来的

我有一些认知盲区。

我一直以为,许多能谈得上PLC编程高手的同行, EXCEL的灵活运用肯定不在话下, 至少不会比办公室文员的小姑娘们水平差。

所以,以往我写文章,甚至写书,到接近EXCEL的时候就点到为止,不再多说了。

怕被人指责内容太水, 没有技术含量。

当然,同时也怕被其他行业的人看到,笑话咱们搞高大上的自动化程序,竟然连EXCEL的技巧都还掰扯不清。

所以, 我在《PLC标准化编程原理与方法》书中, 明确把EXCEL技能列在技能需求第二项, 重要程度8, 难度系数2。

因为EXCEL技能现在相当于通用技能, 而不是局限于PLC行业之内。 所以要提升技能, 或者获取答案的方法非常多,即便有解决不了的问题, 网上随便搜索一下, 分分钟可以搞定。

所以,我给标准化学员讲课时也从来不会涉及这个方面, 只需要论证出程序的整体结构, 告诉他们一句话, 这部分可以用EXCEL生成, 后面的操练就他们自己搞了。 而其实我给的资料里面,有时候会夹杂了我做项目时的EXCEL中间文件,他们或许可以借用我的EXCEL文件当模板, 自己做项目的时候可以用到。

但单独的培训交接, 是绝对不会有的。

所以,缺省我会认为,跟我学习的学员一定都具备了EXCEL的基本功。 当然每个人不一样, 如果他自己知道自己这方面有欠缺,自然会私下去补上。 不需要在我这儿添麻烦。

所以,我做的80工位双联开关的例子, 把程序脚本列在那里,在我看来,就足够优雅了,就自个儿去得意洋洋了。

比如SMART200的例子里面备注了一下:

后面79个工位调用用STL编写

//CALL L31_工位控制, GW01_SIG, LAMP, GW01_SAV

CALL L31_工位控制, GW02_SIG, LAMP, GW02_SAV

CALL L31_工位控制, GW03_SIG, LAMP, GW03_SAV

CALL L31_工位控制, GW04_SIG, LAMP, GW04_SAV

CALL L31_工位控制, GW05_SIG, LAMP, GW05_SAV

CALL L31_工位控制, GW06_SIG, LAMP, GW06_SAV

CALL L31_工位控制, GW07_SIG, LAMP, GW07_SAV

CALL L31_工位控制, GW08_SIG, LAMP, GW08_SAV

CALL L31_工位控制, GW09_SIG, LAMP, GW09_SAV

CALL L31_工位控制, GW10_SIG, LAMP, GW10_SAV

。。。。。。

而至于怎么写出来的, 这么简单的有规律的程序脚本, EXCEL分分钟可以搞定的呀!

昨天发表了文章《0627 【万泉河】程序算法的本质》,其中提到了我3年前写过的文章《201907 【万泉河】PLC编程中的循环语法使用》。

原本想得很好呢, 咱技术进步一步一个脚印,以前一篇文章的结论为基础, 发展理论到最新的认知。 没想到,在群里吵成一团, 一大票人对前一篇文章的观点压根不认同。 你不管怎么表达, 他都一口认定用循环总是最省事的,能节省编程工作量。

我就奇怪了, 你们只看到循环那几句指令省事了, 可前处理后处理的把IO映射到数组中的程序怎么写的, 怎么生成的, 那些不是工作量吗?

纠结了很久,才搞明白,很多人写程序原来都是从来不使用EXCEL的, 甚至许多EXCEL的技巧压根不晓得。难怪行业中总有那么多文章教程和视频在宣讲调用模拟量循环调用,当成提高编程效率的不二法门, 也难怪有人反而倒打一耙把我反对用循环,提倡减少用循环的文章当成流毒了。 感情是你们只会用程序软件的编辑器写程序, 从来不会用EXCEL写程序的呀!

好吧, 那我就从最水货的EXCEL技巧出发, 逐步演示用EXCEL生成PLC程序的方法吧!最终也做个80个模拟量调用的示例程序, 会与80工位双联开关程序合并到一个系列中。当然, 前提基础仍然是所有PLC平台均兼容的方法,所以不必在意我文章中演示是用的什么PLC平台。

把上述的STL程序生成的第一个实例的程序复制到EXCEL中,然后拖拽单元格右下角的小黑点拖到80行,并选择填充序列:

会发现, 程序中2个数字序列, 但EXCEL只给文本中的最后一个数字生成序列。 这怎么办?

方法是文本复制到AB两列,然后各自删掉头和尾,保证数字分到了两个列。然后这时候对这两个单元格同时拖拽80行,即生成了80行调用程序。

直接选中, 复制内容到程序中,直接可用。

当然,其实这样复制的内容中有表格分隔符,也可以另外生成一个C列, 里面的公式填入:

=A1&B1,同样拖拽到80行。 生成了80行结果。 或者在前面两列已经生成80行的情况下,直接双击黑点, 也可以。

由此得到了完整的80行程序调用。

然而, 这里80个工位编号完整整齐的从01递增到80, 是我为了例子生成便捷,刻意安排的。 而实际的工程项目中, 位号通常不连续。比如:GW1001 GW1002 GW1003 GW1004 GW1005 GW1006 GW1007 GW1008 GW1009 GW1010 GW2001 GW2002 GW2003 GW2004 GW2005 GW2006 GW3001 GW3002 GW3003 GW3004 GW3005 GW3006……总计80个。

首先把上述的位号数据复制到A列,这里是一行数据,可以先复制到一个行中,然后选择性粘贴,转置,把行排列的数据转置成了列。

程序调用的位号部分修改到AAAA,即:

CALL L31_工位控制, AAAA_SIG, LAMP, AAAA_SAV

复制到B列所有行。

C2中填入公式:

=SUBSTITUTE(B2,"AAAA",A2)

意思为把B列中的AAAA字符的部分替换为A2单元格的内容。

即得到了目标的程序, 拖拽到底, 则生成了所有程序:

然后模拟量转换程序的调用。

模拟量程序的特点是,输入的参数很多, 每一个模拟量的标定数据上下限,物理单位等都不一样,来自工艺统计的位号表,如:

工艺表中还必然另外存在一些数据信息列,我们不关心的,只需要隐藏即可,留下的内容都需要生成到程序中。 包括字符类型的注释和单位部分,我们也不愿意亲自手工二次录入,在PLC支持的情况下,可以直接做到FB的管脚上,最终不仅仅程序中直观可见, 字符数据还可以传到上位机中, 上位组态时也不必再包含这部分录入的工作量了。

那么, 程序模板会是:

"//#AAAA(IN_INT:=""AAAA"",

HI_LIM:=CCCC,LO_LIM:=BBBB,

INSTANCE:='DDDD',unit:='EEEE');"

其中除了信号名称AAAA需要替换之外,后面的BBBB,CCCC,DDDD,EEEE也分别替换为表格内的内容。

把模板所在的单元格起名字定义为AI_1500, 替换语法设置为:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(AI_1500,"AAAA",B2),"BBBB",G2),"CCCC",H2),"DDDD",I2),"EEEE",F2),CHAR(10)," ")

最终生成了程序:

"AI_V019"(IN_INT:="AI_V019", HI_LIM:=100,LO_LIM:=0, INSTANCE:='DPT-R5',unit:='pa', QOUT=>"HMI".AI.AI_V019);

"AI_V020"(IN_INT:="AI_V020", HI_LIM:=500,LO_LIM:=0, INSTANCE:='DPT-F5',unit:='pa', QOUT=>"HMI".AI.AI_V020);

"AI_V021"(IN_INT:="AI_V021", HI_LIM:=55,LO_LIM:=-5, INSTANCE:='THT-R6-T',unit:='°C', QOUT=>"HMI".AI.AI_V021);

"AI_V022"(IN_INT:="AI_V022", HI_LIM:=100,LO_LIM:=0, INSTANCE:='THT-R6-RH',unit:='%', QOUT=>"HMI".AI.AI_V022);

"AI_V023"(IN_INT:="AI_V023", HI_LIM:=100,LO_LIM:=0, INSTANCE:='DPT-R6',unit:='pa', QOUT=>"HMI".AI.AI_V023);

把程序直接复制到PLC软件中,即可。

这里篇幅有限, 只复制了其中的前几行。 而实际项目中别说80个模拟量了,就是800个, 8000个, 只要工艺来的数据表格规范完整, 这些工作量都是秒成的。

比如如果有8000个的天量数据, 项目所控制的PLC CPU至少也几十个。那么只需要在数据表中标明CPU的标识, 程序生成后按标识复制到相应的CPU中即可。 啥循环都不需要做。

所有的宣传用循环语法处理模拟量的文章或者视频, 只在意了调用部分, 而参数的输入部分的工作量都忽略不计了。然而那才是工作量最大的, 最令人厌烦的。

模块参数的给定, 物理通道的给定等等,最方便的方式恰恰是通过FB调用的实例化时给定,因为可以在一行程序语句里面一次性完成。如果只为了循环调用的爽一下,留给数据整理部分的工作量反而增加了,而且分散到整个程序的多个角落去了。查错,维护都成了问题。

所有坚持使用循环语法调用模拟量程序的网友们,不妨尝试把我的程序改进到你们的模式,看看效率能不能再提高些。

本文中提及的数据表格,以及生成的例子程序,我会统一打包在一起, 方便下载和借用。

也会归档上传到“80工位双联开关”的群文件中。

当然这种程序方法也完全可以照猫画虎迁移到其它品牌平台,有兴趣者欢迎钻研一下, 完成后署名上传, 业界同行会记住你的名字你的贡献的。

PLC编程100例之5、6、7、8、9

1.1 自锁控制回路

【控制要求】

按下 START 按钮一次,吊扇运转;按下 STOP 按钮一次,吊扇停止。

按下 TEST 按钮,测试吊扇电机是否运转正常。

【元件说明】

PLC 软元件

控制说明

【控制程序】

【程序说明】

轻按一下 START 按钮,X0=On,在没有故障的情况下(X3=Off),吊扇运转。这需通过一个自锁电路来实现,其原理是把输出 Y1 拉回来当作一个输入条件来实现,避免了为让吊扇运转而一直按着 START 按钮。

按下 STOP 按钮,X1=On,Y1=Off,吊扇停止运转。

当故障发生(X3=On),Y1=Off,吊扇停止运转。

按下 TEST 按钮,X2=On,在吊扇无故障(X3=Off)情况下,Y1=On,吊扇运行;松开 TEST

按钮,吊扇即停止运行,达到测试吊扇电机是否正常的目的。

1.2 互锁控制回路

【控制要求】

停车场检票口为单车道,通过交通控制指示灯,保证在任何时刻只有一辆车通过,避免进入停车场的车和离开停车场的车发生“撞车”事故。

【元件说明】

【控制程序】

【程序说明】

停车场用两个指示灯牌来分别指示汽车进入和离开。利用互锁结构保证只有一个指示灯牌为

“GO”状态,保证车辆进出正常,不会“撞车”。

当汽车进入停车场靠近检票栏时,X0(进入传感器)为 On,Y0=On,进入停车场指示灯牌指示“GO”,同时,离开停车场指示灯被关断,指示为“STOP”,允许汽车进入停车场,禁止汽车离开。

当汽车离开停车场靠近检票栏时,X1(离开传感器)为 On,Y1=On,离开停车场指示灯牌指示“GO” ,离进入停车场指示灯牌指示“STOP”。

1.3 上电时参数的自动初始化

【控制要求】

机器设备一上电运行,就自动将各项参数初始化,使机器进入基本准备状态,不必手动去一个一个先设置好各个参数。

按下初始化按钮,可在机器运行的任何时刻对机器进行参数初始化。

【元件说明】

【控制程序】

【程序说明】

在 PLC “RUN”瞬间,M1002 接通一次,产生脉冲宽度为一个扫描周期的脉冲,在 PLC 运行期间只被执行一次。常被用来初始化 D(资料寄存器),C(计数器),S(步进点)等 PLC 内部元件。

按下 X1 按钮,可在程序运行的任何时刻对 PLC 进行初始化,即设定 PLC 站号为 1,COM2通讯格式为 9600,7,E,1,且将 Y0 置位。

1.4 传统自保持回路与 SET/RST 应用

【动作要求】

按下开灯按钮灯点亮,按下关灯按钮灯熄灭。

【元件说明】

【控制程序】

传统自保持回路

SET/RST 自保持回路

【程序说明】

以上两范例的动作皆为 X0 由 Off→On 变化时,Y0 常 On;X1 由 Off→On 变化时,则 Y0 常

Off。

若 X0,X1 同时动作时,则停止信号优先,即 Y0 会变为 Off,指示灯熄灭。

1.5 自保持与解除回路 (SET/RST)

【控制要求】

按下 START 按钮,抽水泵运行,开始将容器中水抽出;按下 STOP 按钮或容器中水为空, 抽水泵自动停止工作。

【元件说明】

【控制程序】

【程序说明】

只要容器中有水,X2=On,按下 START 按钮时,X0=On,SET 指令被执行,Y0 被位水泵电机开始抽水。

当按下 STOP 按钮,X1=On,PLS 指令执行,M0 接通一个扫描周期,RST 指令执行 Y0 被复位,水泵电机停止抽水。另外一种停止抽水的情况是:当容器水抽干后,X2=Off,X2 的常闭触点接通,PLS 指令执行,M0 接通一个扫描周期,RST 指令执行,Y0 被复位,水泵电机停止抽水。

相关问答

ChinaTheBuyer:TIVOLIPRODUCTSPLCAddress:1002CambridgeSt...

[最佳回答]合约号:02QTIE05日期:2002年6月5日卖方:QIQIANGTEXTILESIMP&EXPCO.LTD.地址:中国安徽省合肥市长江路105号,买方:TIVOLIPROD...

台达plc上电初始脉冲指令?

初始正向脉冲线圈指特殊辅助继电器M1002,仅在PLC由OFF到ON状态变化后导通一个扫描周期的时间,可用来程序运行的初始化(如程序一开始执行SETY1将Y1置ON,或mov...

数控车床980td系统警报1002信息地址a0000.2?

应该是机床零点开关被撞移位了。回零的时候零点信号不对。只有重新调整,具体参照说明书应该是机床零点开关被撞移位了。回零的时候零点信号不对。只有重新调...

台达plc用什么指令可以读出当时的小时和分钟数?

就用TRD读出就好,前提是将PLC时间设置好LDM100TRDD1000在M100接通的情况下,TRD会读出PLC当前时间到D1000、D1001、D1002、D1003、D1004、D10...

plc行程开关报价怎么样

[回答]1、plc行程开关价格:¥90-¥1002、plc行程开关价格:¥1800-¥18503、plc行程开关价格:¥480-¥945以上价格来源于网络,具体以购买时为主重锤限...

台达触摸屏B系列与西门子PLC300之间可以联接吗?怎么联接?-ZO...

1002浏览1回答腾龙镜头命名的A系列和B系列的区别7289浏览1回答热门问题苹果怎么打开apk苹果怎么打开apk8551浏览6回答樱花漫画官方网站入口是什...

帮个忙各位大神,求推荐!杀菌锅的参数怎么设置?

[回答]上百度一查就告诉了。。必要打上:网际网路设置加装的CAP文件关上,里面的SET可得中文的设置变频器ACS400电机0.55KWPID掌控风压系统(微差压...

求硬盘销毁的方式方法或者是否有专门销毁硬盘的公司-ZOL问答

采用工业级PLC可编程控制器控制硬盘磁带消磁的操作,电路设计优化,工作状态指示...淘宝特价版UC浏览器相关问题想加装一个硬盘不知道加固态的还是机械的1002...

led显示屏怎样设置时间有哪位懂的-ZOL问答

回复Guu_1002专业批发室内外LED全彩显示屏有用(0)回复nanf123LED显示屏...一般控制时间都是由里面的PLC控制的,要在PLC梯形图里面改有用(0)回复文字那.....

想在家装摄像头,需要买哪些东西,大概价钱?-ZOL问答

1台电脑最好台式机,40001个视频采集卡1002个摄像头200视频线缆100抵挡配置1台...在实际应用中定时器的时间范围超过PLC的定时器定时范围时,怎么实现?2470浏览...

 田梓呈  冠世一战 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部