「零基础入门PLC」S7-200 SMART 编程技巧及实例分享
S7-200 SMART在编程中常见问题解析
工欲善其事必先利其器,在日常的程序编辑和调试过程中,可能会遇到各种各样的问题,比如编辑好的逻辑程序执行结果不正确,编译正常的程序下载到不同的CPU中,有些可以下载,而有些提示非致命错误等等,此时如何快速的排查和分析错误发生原因就非常重要,而排查和分析的前提就需要对S7-200 SMART从软件和硬件上有更加深入的了解,下面我们就通过几个典型的案例来进行问题的分析。
案例 1
首先看图1这段程序,编译无任何问题,如果下载到不同类型的CPU中,表现就会不同,我们可以尝试下载到ST60和CR60两种类型的CPU中。
图1 主程序
下载到ST60中,程序运行正常,如果下载到CR60中,程序运行就会报非致命错误:操作数非法(错误码:0090),图2为具体的非致命错误信息:
图2 PLC信息
根据程序分析错误出现的原因和中断有关,可以查询S7-200 SMART系统手册中断章节可以找到对应答案,如表1所示,24号中断事件CR60不支持,所以在运行时会报错非致命错误。
表1
综上,当需要程序在多个不同类型CPU之间下载或者移植时,就需要提前了解各个CPU的程序容量大小、支持的数据区的大小,断电保持区域大小,是否使用到了CPU不支持的功能或者CPU固件版本是否支持等因素,只有了解了这些,才能做到有的放矢。
案例 2
在日常编程过程中,我们可能需要各种标准库,有时需要子程序和中断程序有多重调用关系,例如下面这个案例,程序想使用格雷码转换库在定时中断中每隔100ms进行一次数据的格雷码转换,请看图3:
图3 主程序
图4 子程序
程序的调用关系为:中断子程序INT0调用子程序SBR1,SBR1中调用子程序SBR2,SBR2中的程序如图4所示,下载到CPU中,通过状态图表监视程序状态,发现没有结果输出,如图5所示:
图5 状态图标监控无输出
进一步监控PLC信息,可以看到图6的非致命错误报警:超出最大用户子例程嵌套级别(错误码:0008)
图6 PLC信息
S7-200 SMART手册中规定:从主程序调用子例程的嵌套深度是 8 级,从中断例程调用嵌套深度是 4 级。
现在来看上述程序的调用关系:
INT0→SBR1→SBR2→GRAY_BIN_DW,表面上也仅仅嵌套了3级,满足中断嵌套深度要求,但是仔细查看GRAY_BIN_DW功能库可以发现,该库也嵌套了几层,嵌套关系如下:
GRAY_BIN_DW→GRAY_BIN→XOR,这样下来,嵌套关系就变成如下:
INT0→SBR1→SBR2→GRAY_BIN_DW
→GRAY_BIN→XOR,总共5层嵌套关系,超过了CPU支持的最大嵌套深度,导致CPU 无法运行,知道了原因,我们可以减少调用嵌套为4层以内,则程序就可以正常执行了。
通过以上描述就可以明白,有些看似不可理解的问题其实有其发生的原因,只有深入了解对应产品的技术细节,才能抽茧剥丝,找到问题的根源所在。
S7-200 SMART如何快速提高编程效率
在日常的编程过程中,我们可能需要不少的逻辑运算和算术运算,如果这种运算很多,有可能会导致程序量很大,CPU的扫描周期加长,在这种情况下,找到其中的规律,可以大大简化程序。
假设一个场景,现场有16台设备,需要控制16台泵的启停,IO地址如下表所示:
表2
一般的编程思路是单独写出每个泵的启动停止控制逻辑,如图7所示,需要编写16组控制逻辑:
图7 单个泵的启停控制
其实针对这种编程,我们可以变换一种思路,将上面的梯形图变换成图8所示的逻辑,也可以完成对应的控制功能:
图8 字逻辑运算
这样变换完成后,编程就显得特别简洁,因此编程思路很重要。
在另外一些应用场景中,有时需要记录现场设备的运行时间,一般情况下我们可以使用定时器来实现计时的功能,但S7-200 SMART定时器有数量限制(最大256个),并且最大时基为100ms的定时器其所能达到的最大计时长度为3276.7S,若想实现小时或者天的计时就需要定时器加计数器来实现,而计数器也有数量限制(最大256个),当需要类似的功能很多时,计数器和定时器数量就不够用了,此时可以使用系统特殊存储器 SM0.4(周期为60S的时钟脉冲)和SM0.5(周期为1S的时钟脉冲)来实现计时功能。
如图9所示,其中值VD0的单位为秒,在实际应用中,可以对这个数值进行再次转换,得到分钟、小时或者天的时间值(本例中VD4的单位为小时),同时这些地址也可以按需设置在S7-200 SMART断电保持区域中,实现不同时间长度的定时以及断电保持功能,非常方便。
图9 使用SM0.5实现计时功能
实际编程时对于一些功能重复的地方,我们可以考虑做成子程序多次调用,一些需要重复计算的功能,可以使用FOR NEXT循环来完成,也可以考虑使用间接寻址的方式来提高程序的灵活性,而对一些流程方面的控制可以使用顺序控制继电器来完成,这样可以大大提高编程的效率。
PLC编程-模拟量输入处理
自动化项目开发过程中,对模拟量的处理是经常遇到的应用场景。如温度测量、压力测量、液位测量、流量测量等,均为模拟量信号传输。在这些信号形式上,又区分为电流信号和电压信号;在信号的范围上,又有-5V~+5V、0V~5V、-10V~10V、0V~10V、0mA~20mA、4mA~20mA等。然在PLC上又是如何处理这些不同类型的信号的?下面就给大家分享在PLC中是如何处理这些模拟量信号的。
压力变送器-模拟输出
PLC与模拟量变送器的接线如下图所示:
台达PLC的模拟量模块接线图
在以上图片中,可以看到PLC的一个通道既可以接收电压输入信号亦可以接收电流输入信号(绝大部分的PLC均是这样)。在进行接线设计的时候,依照变送器的信号,选择对应的接线方式。其中特别注意,信号的正负方向一定不可反接。
PLC如何将模拟量信号转换为程序可以处理的数值?
PLC信号数字转换范围
以上为台达PLC的模拟量输入模块部分技术参数。以4mA~20mA为例,通过以上表格可以看到,输入电流4mA~20mA对应与数字转换的范围为0-32000.即当电流为4mA时,对应与数字0;电流为20mA时,对应与数字32000.有如下所示对应曲线:
电流信号与PLC数字间的对应关系
从以上关系,可以看到,当输入电流为12mA时,PLC内部的数字信号值为16000.由以上,可以总结出,输入电流信号与PLC读取数字信号之间的转换关系如下:
其中,Gain定义:当数字输出值为16000时的电流值。
Offset定义:当数字输出值为0时的电流值。
PLC电流信号与数字信号的转换关系
在进行模拟量信号处理的过程中,按照以上处理方式进行数字转换对应,即可将变送器的模拟量信号转换为PLC程序可以处理的数字信号。
以下为不同类型电压、电流信号与输入数字之间的对应关系:
±10V、±5V信号与PLC输入数字间的对应关系
±20mA、0-20mA信号与PLC输入数字间的对应关系
相关问答
称重变送器和plc程序?
两种方式:1.通过网络总线的形式,例如梅托的支持的网络如:devicenet,ethernet,profibus等等。2.通过4-20ma方式,或者0-10v,由模拟量的形式传送到plc的ai模块....
压力变送器在plc编程中的设定值如何计算?
压力变送器的设定值是根据压力变送器铭牌上的量程范围而定的。是不用计萛。设定值也是由工艺工程设计师而提供的。是没有固定的数学计萛公式。比如,PLc的上位...
plc变送器怎么控制开关?
1.首先,plc(可编程逻辑控制器)变送器连接到plc系统中的数字或模拟输入模块。数字输入模块用于接收开关信号,模拟输入模块则接收模拟信号。2.当开关状态发...
abb频率与plc接线方法原理?
ABB频率与PLC(可编程逻辑控制器)的接线方法原理主要取决于具体的应用和设备。以下是一般情况下的一些常见接线方法原理:1.数字输入接线:在使用PLC控制ABB频...
温度变送器与plc接线?
连接温度变送器和PLC的方法如下:1.将温度探头连接到温度变送器的输入端。2.将温度变送器的输出端连接到PLC的输入端。3.将PLC的输出端连接到控制...
信捷plc怎么写温度变送器程序?
要编写信捷PLC的温度变送器程序,首先需要了解温度变送器的工作原理和通信协议。然后,在PLC的编程软件中创建一个新的程序,并配置相应的输入和输出模块。接下...
可以用PLC给变送器供电不?
当然可以,但分两种情况,如果变送器是4线制的,那么供电需另外电源接线,4-20mA信号接入PLC,如果是2线制,就将电源,变送器,plcAI模块串接起来即可。当然可以,但...
4-20ma液位变送器接plc?
液位变送器的4~20mA的直流信号与PLC模似量模块的连接有两种方式,第一种方式是本人推荐的方式,采用具有隔离型功能的配电嚣。在PLC与液位变送器之间。即解决了...
三菱plc编程压力变送器样例?
以富士的触摸屏为例:在PLC中使用MOV指令将模拟量输入值移入V区域,然后在触摸屏上放置一个数值显示元件,在元件属性中设定需要线性转换,将PLC的4-20MA原始对应...
用压力变送器给PLC模拟量模块一个信号,并通过触摸屏显示压力,一分钟之后,如果变化过大则报警.程序怎么写?
很简单的问题,但不好回答呀,方案、程序还有接线,怎么回答,只说方案吧,压力变送器输出的模拟量信号给到plc模拟量输入,plc程序将模拟量转换成数字量,数字如...