温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
STM32
解释
下位
PLC
设计
王丽平
193自动化与控制基于 STM32 的解释型下位机 PLC 设计王丽平张笑影(山西晋中理工学院,晋中 030600)摘要:解释型下位机可编程逻辑控制器(Programmable Logic Controller,PLC)系统是一种执行效率高、稳定性好的系统,通过应用 SEM32 微处理器全面提高了执行性能和运行稳定性。基于此,通过介绍 PLC 系统的构成,详细分析了该系统的设计,以期能够为其他研究提供一定的参考借鉴。关键词:可编程逻辑控制器(PLC)设计;解释型下位机;STM32 微处理器The PLC Design of Interpretive Lower Machine Based on STM32WANG Liping,ZHANG Xiaoying(Shanxi Jinzhong Institute of Technology,Jinzhong 030600)Abstract:Interpretive lower computer Programmable Logic Controller(PLC)system is a system with high execution efficiency and good stability.It comprehensively improves execution performance and running stability by applying SEM32 microprocessor.Based on this,through the introduction of the composition of the PLC system detailed analysis of the system design,in order to be able to provide a certain reference for other research.Keywords:Programmable Logic Controller(PLC)design;interpretive lower machine;STM32 microprocessor经过电子技术的多年发展,可编程逻辑控制器(Programmable Logic Controller,PLC)系统已经升级到 32 位微处理器,其稳定性更高,控制功能更好,能够实现自动检测和自动控制功能,为工业生产提供了巨大支持。解释型下位机通过将用户编写的程序转化为中间过程语言,再通过通信方式将过程语言发送至处理器。处理器能够解释并执行中间过程语言,具有强大的移植性,能够提高执行效率和运行速度。1PLC 系统构成PLC 系统是以微处理器作为基础,综合控制技术、通信技术和计算机技术形成的自动控制装置,使用可编程存储器储存程序、逻辑运算、控制顺序以及技术操作等,是工业生产控制的核心系统,通过数字和信号的输出和输入实现对生产和机械的控制。PLC系统主要包括电源、中央处理器(Central Processing Unit,CPU)、输入/输出(Input/Output,I/O)单元以及扩展模块等。其中,电源在系统中发挥出重要作用,外部电源一般使用 220 V 交流用电,但不同国家用电标准不同,如美国为 110 V,日本为 100 V。经过 PLC 系统的电压芯片将电源转变为工作电压1。CPU 作为控制系统的核心元件,与 I/O 单元相连,能够从现场装置中读取数据和信号,借助输出模块控制现场设备,再经过扩展单元控制扩展模块。同时,它可以检测存储器、电源以及单元模块的运行状态,在 PLC 系统运行过程中,会受到 CPU 的控制。先扫描现场设备数据和状态,并保存在寄存器中,能够在后续控制中提取用户程序,再经过命令解析向设备发送指令,同时产生控制信号,通过输出信号控制现场设备。如今 PLC 系统不断发展,全面提高了系统的稳定性。I/O 单元模块作为现场设备和处理单元的连接部件,包括输入单元和输出单元。输入单元可以将现场设备采集的信号传输至寄存器,为后续控制功能提供参考。输出单元可以将寄存器信号转化为控制指令对现场设备进行控制。扩展模块能够进一步完善系统控制功能,满足更多元的控制需求,如通信模块等扩展模块。2PLC 系统设计2.1工作流程设计PLC 系统是周期性循环作业,集中输入,集中输出,按循环周期可以划分为采样阶段、执行阶段以及输出阶段。在采样阶段中,PLC 系统主要通过扫描方式提取外部设备的运行状态,并在映像寄存器中保存采集的信息完成信号采集后,PLC 进入程序执行阶段。在输出刷新和执行阶段,即便改变输出信号,也不会改变映像寄存器数据,只会在采样阶段中刷新数据。但是,如果输入脉冲信号,为了保证有效输入,脉冲宽度需要超过扫描周期2。在执行阶段中,需要从上至下逐条执行程序指令。指令左侧为输入部分,由映像寄存器数据构成控制线DOI:10.16107/ki.mmte.2023.0174现代制造技术与装备1942023 年第 3 期总第 316 期路运算。右边作为输出线圈,按照左边逻辑运算最终结果判断刷新存储区寄存器,执行特殊指令。在这一阶段,输入映像寄存器数据不会改变,而系统寄存器、映像寄存器以及特殊功能指令执行情况都可能产生巨大变化,用户程序会影响输出线圈和指令。当指令完成执行后进入刷新阶段,输出线圈只能在下一周期执行阶段,影响数据指令和输出线圈。在输出刷新阶段,主要任务是通过映像寄存器输出电路,经过驱动电路作用于输出点位,再利用输出端驱动设备。映像寄存器只会在执行阶段刷新数据,采样阶段和输出阶段并不会进行刷新。此外,PLC 系统具有通信功能和自诊断功能,在运行过程中输出信号和输入信号之间滞后性越严重,扫描周期越长,CPU 性能越好,扫描速度越快,能够大幅提高 PLC系统的工作效率。2.2硬件设计SEM32 在 PLC 中起到信息处理和控制功能的作用,是系统的核心构成。使用 STM32F103VCT6 半导体作为高效能微处理器,可以达到 72 MHz 主频,能够处理复杂的运算程序。该处理器具备 11 个定时器和计数器,可以完成 PLC 内部高速计数、定时以及高速脉冲的功能要求,最关键的是它性能稳定,能够保证系统稳定运行,满足系统对控制功能的要求。输入电压通常为 24 V,再加上电感感应电压,远超过微处理器的工作电压,一旦受到电压干扰很容易导致系统不稳定,甚至出现系统死机问题。输入电路在电路和处理器之间采取光耦合隔离,PLC 输入电路图示如图 1 所示。开关量输入电路的串联分压电路由 R70 和 R84 构成,同时和 C25 构成低通滤波电路,可以减少信号噪声以及干扰信号。电压输入光耦使用的发光管,对光敏部件起到驱动作用,从而输出电平信号。在输出端,使用微处理器以及隔离输出电路,保证电压稳定,使电路能够稳定运行。可使用达林顿晶体管芯片驱动线圈。由于芯片 ULC2803采取集电极开路,只允许输入电流,在 ULN2803 和+24 V 之间串联线圈。通过芯片 ULN2803 继流二极管的钳制作用,在 COM D 端连接+24 V 使得继电器线圈感应断开,避免电压损坏芯片。图 1PLC 输入电路图示在数据通信电路设计上,使用 RS-485 串行接口,具有传输距离长、可靠性高的性能。使用 MAX3485芯片,功耗低,同时具备接收器和驱动器,可以减 小 电 磁 干 扰(Electro Magnetic Interference,EMI),有利于降低终端匹配电缆反射,传输速率可以达到 10 Mb s-1。在 STM32 处理器上连接 MAX3485 芯片引脚,可以促使 485 电平信号向互补金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)电平信号转变。在防干扰设计上,将模拟数值信号分离,在 PLC系统中应用双电源供电,完全分开模拟信号以及数字信号,避免它们之间发生互相干扰。将光电隔离,输出电路、输入电路以及通信接口均采取光耦器件进行信号隔离,在工业现场外部输出信号、输入信号和内部信号之间建立电气隔离,避免外部信号对内部造成干扰,保证系统稳定工作。同时,在电源电路中增加电阻-电容(Resistor-Capacitance,RC)滤波,连接电源引脚,能够避免电源滤波干扰。通过防干扰设计保证PLC 系统可以在不同工况中使用,具有突出优势。2.3软件设计PLC 系统通过循环扫描方式工作,在系统运行期间循环进行通信、输入程序、执行程序以及输出程序等流程3。内部处理通过 PLC 程序检查硬件设施后,复位定时器,并完成一系列内部工作。在通信服务上,PLC 系统对上位机数据进行收发,定期更新软件内容。当 PLC 停机只能接收通信内容并处理内容时,可以读取输入端通断状态,将读入信息保存在映像寄存器中。输入映像寄存器后,刷新进入程序执行阶段。按195自动化与控制照 PLC 程序进行扫描执行,逐句扫描,并按照顺序执行。如果遇到跳转指令,根据是否满足跳转条件执行。如果用户程序关系到系统输出输入状态,可以从输入映像寄存器中的 PLC 程序读取上一阶段的输入状态以及当前状态。按照用户程序进行运算,在寄存器中存入运算结果。完成处理后将改变寄存器状态,在输出阶段转存锁存器,经过隔离电路可以通过输出端子传输控制信号,向外部负载。2.4语言解释设计PLC 程序解释以指令表作为中间语言,将梯形图转变为指令表,再将指令表转变为可编程编码。指令表类似编程语言,可作为“桥梁”使用。梯形图转换为指令表后,解释过程还需要经过生成代码、语义分析等环节得以实现。梯形图向指令表的转换需要解决梯形图关键节点的数据,识别节点之间的连接关系4。中间过程是上位机以及下位机内部协定的规定,与指令表存在意义对应关系。上位机和下位机可以保存相同的表格,上位机通过表格将指令表转化为中间过程语言传输至下位机,下位机通过表格将过程语言翻译为指令表,按照指令表进行对应的操作。指令表主要包括操作数以及操作码,操作码对应指令表种类,操作数表示实际读写地址以及数据。操作码长度和类型都是固定的,为中间过程语言提供了操作可能性。程序指针主要面向中间过程语言进行解析,提取两字节的操作码,经过查表获取操作码以及操作数,提取操作数解释后保存在内存中。为了提高中间过程语言的解释效率,设计函数跳转方式,将所有指令作为独立的单元函数,将函数名作为指针统一存在表格内。解释器对操作数以及操作码进行解释后,按照操作码对应单元函数指针跳转至入口地址,单元函数可以从共享内存位置提取操作数,执行函数功能,完成执行后跳转到解释器内。由于指令表数量不固定,传统解释器通过 switch-case、if-else 方式调用指令,会消耗多条指令周期。通过函数指针跳转方式,消耗指针跳转指令周期。之后按照指令表长度,程序指针跳转至指令表地址,取操作码逐条解释,直到出现 END 指令表,表示完成程序解释。2.5单元函数设计采取无耦合独立单元函数,提供给解释器调用,LD函数可以提取指定点状态,先将累加器左移至堆栈,从共享内存中提取操作数,再放置累加器最低位。函数为const void LD()ACC_BIT=1;ACC_BIT|=a;ACC_NUM;使用读栈指令 MRD,进栈指令 MPS,出栈指令MPP。执行进栈指令 MPS 时,将当前触点压入存储器。在使用 MPS 指令的情况下,当前触点值压入存储器第一级,先压入数据向下一级推移,执行出栈指令时,再将存储器触点值上移,读取后消失。MRD 指令读取最上级触点值,而不需要在堆栈内上下移动。解释器启动后,先扫描所有中间过程语言,记录终端指令指针地址,逐句解释过程语言中断,在堆栈中压入共享内存的操作数以及中间过程的指针地址。再按照精简指令集计算机微处理器(Advanced Reduced Instruction Set Computer Machines,ARM)指令判断中断类型,根据中断类型跳转对应入口位置,经解释器逐句解释后,从堆栈中提取所有操作数重新放入共享内