为什么有的PLC需要上电停止功能,能防止PLC变砖,可编程控制器 上电停止 串口通信 梯形图

关键词:PLC可编程控制器 上电停止 串口通信 梯形图

摘要:PLC(可编程控制器)在工业控制中使用非常广泛,型号很多,有一部分PLC有上电停止的功能,它们为什么需要这个功能呢?孔丙火(微信公众号:孔丙火)分析了上电停止的具体用途及实现路径,对于没有启停旋钮、没有专用编程口或编程电缆、通信口即作为编程口又作为通用口、通信口同时支持主站和从站设置的PLC,上电停止功能是需要的。同时,这种设计,对于单片机的串口通信设计,具有很好的借鉴意义。

1.PLC与上电停止

PLC是可编程逻辑控制器(Programmable Logic Controller)的简称,随着技术的不断发展,PLC已不仅仅在于逻辑控制,因此后来改称为可编程控制器(Programmable Controller),但由于简称PC与个人电脑的简称一样,为了不混淆,依然用PLC来简称可编程控制器。从70 年代第一台PLC 到目前为止,出现过各种形式的PLC,厂家型号众多。你或许用过PLC,或许没用过PLC,你用的PLC或许有上电停止功能,或许没有上电停止功能,那为什么有的PLC需要上电停止功能呢。

如图1所示,这是某款PLC的上电停止功能。

图1

这是PLC编程软件菜单下的一个截图,具体用法是:点击“上电停止PLC”,然后把PLC断电,通过该款PLC指定的可以实现上电停止功能的通信口(485或232)与计算机连接,然后给PLC重新上电,此时编程界面上就会出现“PLC上电停止成功”的提示,可以看到PLC处于停止状态,且此通信口的通信参数为默认状态(数据手册上标注的上电停止后的通信参数)。

看了上面的描述,孔丙火(微信公众号:孔丙火)相信你对上电停止功能有了一个大概的了解。也许会想,搞得这么啰嗦,有什么用呢,为什么要这样设计呢。

首先,具有上电停止功能的PLC不具有启停旋钮,无法通过硬件开关控制PLC的启动和停止。至于有的PLC为什么不设计启停旋钮,可能是为了节省电路板空间、节省硬件成本,或者其他什么原因,孔丙火(微信公众号:孔丙火)不得而知。没有启停旋钮,要想停止PLC的运行,只能通过编程软件进行控制,在计算机与PLC正常通信的情况下,可以通过编程软件控制PLC的运行与停止。但PLC在上电伊始是默认进入运行状态的,要想要PLC上电就进入停止状态,就需要上电停止功能,这是上电停止功能的第一个用途。

其次,具有上电停止功能的PLC一般不具有专用的编程接口或者专用的编程电缆,任何一个通信口都可以下载程序,同时,任何一个通信口也都可以用作通用的通信口,用户程序可以操作使用。一旦用户把通信口的通信参数改乱了,或者记不清通信参数了,那么计算机上的编程软件就无法与PLC通信了,PLC岂不是变砖了?这个时候,就需要上电停止功能,上电停止成功后,具有上电停止功能的通信口的参数变为默认参数,此时编程软件可以与PLC通信,查看当前的通信参数或者修改通信参数,以恢复PLC的正常功能。

还有一种情况,这种PLC的通信口一般都支持Modbus协议,且均支持设置为主站或从站,当所有的通信口都被设置为了主站,主站口会主动向外发数据,此时,程序下载无法完成,因此,在下载程序的时候,需要计算机上的编程软件主动发起数据通信,此时的PLC应当相当于从站。这个时候同样需要上电停止功能来解决,PLC上电伊始便停止运行了,通信口不会再向外发数据,程序下载就可以正常进行了。这是上电停止功能的第二个用途。

总结:孔丙火(微信公众号:孔丙火)认为,对于没有启停旋钮、没有专用编程口或编程电缆、通信口即作为编程口又作为通用口、通信口同时支持主站和从站设置的PLC,上电停止功能是需要的,也是必须的,否则PLC有可能会变砖。

2.实现路径分析

孔丙火(微信公众号:孔丙火)做过一些单片机的设计项目,现在很多小型的PLC都是用单片机实现,这里就来分析一下PLC的上电停止功能的实现路径。PLC的程序代码大体可以分为两个部分:固件和用户程序,固件是PLC在出厂的时候固化好的,外设、用户程序的解析等功能都在这个部分,用户程序就是用户通过编程软件编写的部分,我们通常写的梯形图程序就属于这个部分。PLC上电开始运行,便进入固件部分,然后根据一定的条件,再进入用户程序的运行。

大体猜测一下上电停止的实现方法。PLC上电,固件程序开始运行,具有上电停止功能的通信口按照默认参数设置,在这个过程中,检测具有上电停止功能的通信口是否接收到上电停止指令,如果接收到了上电停止指令,则不进入用户程序(即PLC处于停止状态),这个时候,编程软件可以建立与PLC的通信,可以查看通信口参数,可以修改通信口参数,可以下载或上传程序。如果在一定的时间内(较短时间,例如500ms)没有收到上电停止指令,则进入用户程序,PLC正常运行。

有了上面的分析,也就知道了,为什么在执行上电停止的时候,一定要先打开编程软件上的上电停止功能,正确连接PLC的通信口,然后才能给PLC上电,这样才能确保PLC在刚开始运行在固件程序阶段的时候能接收到上电停止指令。

3.单片机设计借鉴

在涉及到Modbus串口通信的单片机项目中,孔丙火(微信公众号:孔丙火)认为,这种上电停止的设计方法是具有借鉴意义的。一般情况下,串口的通信参数是需要开放修改的,修改的方法大致可以分为两种。第一种是通过硬件的方法,在电路上设计一些拨码开关或编码开关,以实现通信参数的设定。第二种方法是通过软件设计,将通信参数存在flash或EEPROOM中,计算机或HMI等设备通过串口通信来改变参数。

对于软件设计的方法,存在两个问题:第一,用户把串口参数改乱或记不清通信参数的情况下,只用重新下载单片机程序,清空flash或EEPROOM,很不方便;第二,如果串口作为Modbus主站口,单片机运行过程中,无法通过串口修改通信参数。

类似PLC上电停止功能的设计方法可以很多解决上面两个问题。在我的FreeModbus从站设计的系列文章中,后续会有关于上电停止功能的分享,实现一个简单的上电停止功能,以便可以方便地修改通信参数。欢迎持续关注。

文章在公众号(孔丙火)同步推出,欢迎查看更多系列文章。

单片机、ARM、现场总线、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,那我们就来介绍一下 Linux 系统与 PLC485 的通信,以及如何使用 Python 编程实现。 首先,PLC485 是一种常见的工业自动化控制设备,它通常被用来控制各种生产设备、机器人和生产线。而 Linux 系统则是一种常见的操作系统,它可以用来运行各种软件和程序,包括 Python 编程语言。 要实现 Linux 系统与 PLC485 的通信,通常需要使用串口通信技术。在 Linux 系统中,可以使用 PySerial 库来进行串口通信。PySerial 是一个专门用于串口通信的 Python 库,它提供了一系列函数和类,可以方便地实现串口通信。 在 PLC 中,通常需要使用梯形图编程来实现控制逻辑。梯形图是一种常见的可视化编程语言,它可以让用户通过图形化界面来编写控制逻辑,比较容易上手。 为了让程序更加易读和易于维护,我们通常需要添加注释。注释是一种在程序中添加说明性文字的方法,可以让其他开发人员更加容易理解你的代码。在 Python 中,注释可以使用 "#" 符号来添加。 下面是一个简单的示例程序,演示了如何在 Linux 系统中使用 Python 编程与 PLC485 进行通信,并添加了注释说明: ```python import serial # 打开串口 ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1) # 发送数据到 PLC ser.write(b'hello, PLC!') # 从 PLC 接收数据 data = ser.readline() # 输出接收到的数据 print(data) # 关闭串口 ser.close() ``` 在这个示例程序中,我们首先导入了 PySerial 库,并使用 `serial.Serial()` 函数打开了串口。这里的 `/dev/ttyUSB0` 是串口设备文件的名称,需要根据实际情况进行修改。然后,我们使用 `ser.write()` 函数将数据发送到 PLC使用 `ser.readline()` 函数从 PLC 接收数据,并使用 `print()` 函数将接收到的数据输出到控制台。最后,我们使用 `ser.close()` 函数关闭了串口。 在实际编程中,我们还需要根据具体的 PLC 型号和通信协议进行相应的配置和编程。同时,我们也需要根据实际情况添加更加详细的注释,以方便其他开发人员理解和修改代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值