基于STM32自制三菱PLC之软硬件设计
本帖最后由 Aguilera 于 2019-12-10 22:02 编辑
前言
大家好,我是川楠。本次打算使用STM32来DIY一个PLC。
PLC主要适合电工以及机械相关的人群。其主要用在钢铁、石油、化工、电力、建材、机械制造等各个领域。其具有高可靠性、抗干扰能力强、易学易用、等特点。
PLC的体积一般都是比极大的,其安装固定在C45导轨,现在的PLC功能越做越强大,有以太网通讯模块、CAN通讯模块、MODBUS通讯模块,拓展节点控制模块等等。配套软件也十分的强大,稍微配置一下,即可完成设计,所以非常适合电工、机械相关的开发人员使用。
PLC内部的电路,实际上也是有单片机(或者CPU等)和辅助驱动电路组成,写入厂家的配套底层驱动软件。用户开发PLC也仅仅是对应用开发。为了更好的是适应恶劣条件,所以PLC在硬件和软件设计上都下足了很多的功夫,因此,其价格相比单片机开发来说,其费用也不低。
本次我使用STM32F103RDT6单片机来仿制三菱的FX2N型号的PLC。这款PLC比较基础的,很老的、功能比较单一(它的地位可能和AT89C51差不多),但是适合PLC入门和DIY。
原理图设计
一般在在工业上,直流电源大多采用的是24V或者12V。
电源我采用的一个二极管进行防反接,主要是这里电源电流也不高,没有必要使用MOS管。EARTH是一个简单的屏蔽地。电源经过一个共模线圈去掉共模干扰。使用一个光耦,进行电源检测。
输入24V电源,经过TPS5430芯片转化为5V,最后用过LDO输出3.3V供单片机相关的电路使用。
复位电路使用的是外部专用的复位芯片MAX809,和RC复位电路相比,其可靠性更好。在快速开关机时,由于电容上次放电并没有释放完毕,导致单片机启动异常,而使用复位芯片则能够很好的解决这一问题。
这个就是单片机管脚定义电路。
LED指示灯电路,EEPROM存储电路,以及RS232调试电路,这个RS232电路接口主要是用于与三菱的PLC开发软件相连的。
ADC采用的是单片机自带的ADC,电路设计使用的是LM358运放,将外部输入电压按照一定的倍数进行缩放,以便单片机进行采集。在我的这个电路板上有三路这个样的电路。
输入电路采用了PC817C进行了光耦隔离。4.7K电阻进行了限流,注意光耦的发光二极管的电流一般采用10mA即可,具体可以看手册。1N5819W的二极管主要是起到保护作用。当输入信号接反了的之后则通过这个二极管进行释放。避免损坏光耦,这个光耦的反向击穿电压只有6V。
输出的话,采用的是达林顿管+继电器的方式。由于达林顿管内部集成了方向二极管,所以,这里就可以不用担心继电器的反向感应电动势的问题。
最后,大致的看下整个电路的逻辑关系。
PCB设计
经过一番折腾,最后定稿的PCB设计如下图所示。
然后,送去PCB板厂打样,采购相关的电子元件,准备进行手工焊接。又是一番折腾,终于焊接完成,如下图所示。
这里给大家一个经验,焊接完成之后,建议用热风枪将每个元件在吹一遍,该补锡的地方进行补锡,有毛刺的地方,可以加点助焊剂等,像我这种有强迫症的,我还要将贴片电阻电容顺便摆一下,让其位置对齐。最后在用洗板水洗一下。
软件编程
想要PLC工作,还必不可少需要一个底层软件,不然这和单片机开发没什么区别,不能支持PLC的开发软件和方式。
所以这里需要对PLC的指令进行一个转换和翻译。
这里也没啥好说的,其实网上针对FX2N的PLC也有很多的代码,稍微移植和修改下就可以了。
将管脚对应到自己设计的管脚即可。
程序验证
将程序下载到单片机之后,如何验证程序的正确性呢?
可以使用PLC的编程软件。三菱这款PLC的编程软件支持有两款,GX Developer和GX Works软件,在三菱官网可以下载。
这里我使用的是GX Works2。
启动软件,选择和合适的型号,建立对应的串口连接:
最后,点击“通讯测试”,弹出如下窗口。
可以看到,这个软件已经识别到我们自制的PLC了。
关于PLC的使用,一般都是用的是梯形图编程。这个比较简单和直观,下图仅为一个示例图片。