CN105511394B - 一种在fpga平台实现plc控制的方法 - Google Patents

一种在fpga平台实现plc控制的方法 Download PDF

Info

Publication number
CN105511394B
CN105511394B CN201610064750.4A CN201610064750A CN105511394B CN 105511394 B CN105511394 B CN 105511394B CN 201610064750 A CN201610064750 A CN 201610064750A CN 105511394 B CN105511394 B CN 105511394B
Authority
CN
China
Prior art keywords
formula
fpga
plc
count
keyword
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201610064750.4A
Other languages
English (en)
Other versions
CN105511394A (zh
Inventor
张彤
陈凡
曹鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guilin University of Electronic Technology
Original Assignee
Guilin University of Electronic Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guilin University of Electronic Technology filed Critical Guilin University of Electronic Technology
Priority to CN201610064750.4A priority Critical patent/CN105511394B/zh
Publication of CN105511394A publication Critical patent/CN105511394A/zh
Application granted granted Critical
Publication of CN105511394B publication Critical patent/CN105511394B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/056Programming the PLC
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13012Using other programs, adapting program to machine, exchanging or rom
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/13Plc programming
    • G05B2219/13076Interprete in pc a ladder diagram, use of sequence engine

Abstract

本发明公开了一种在FPGA平台实现PLC控制的方法及装置,本发明一种在FPGA平台实现PLC控制的方法及装置,该方法是由ST2FP解析器转换成Verilog HDL程序,不仅能正确实现PLC的输入输出逻辑,而且程序可以在FPGA平台并行运行,从根本上改变了传统PLC的只能顺序扫描执行程序的方式,PLC程序执行的时间与程序的大小没有关系,只和程序的依赖层次有关系,FPGA‑PLC程序执行效率是传统PLC无法比拟的;该装置将IEC‑61131‑3标准应用在了FPGA‑PLC上,克服了传统PLC的封闭性和兼容性差等缺点,有利于打破高端PLC厂家垄断局面,还利用FPGA并行执行程序的特性,使得本发明FPGA‑PLC能并行执行PLC程序,大幅提升了PLC的实时性,FPGA的处理是纯硬件的实现过程,使得FPGA‑PLC系统具有很高的稳定性。

Description

一种在FPGA平台实现PLC控制的方法
技术领域
本发明属于微处理器控制技术领域,具体是一种在FPGA平台实现PLC控制的方法及装置。
背景技术
可编程逻辑控制器PLC(Programmable Logic Controller)已被广泛应用于制造系统多年,传统硬PLC经过几十年的发展,已经成为一项成熟技术,它以其高速度、高性能、高可靠性在工业控制领域得到了广泛的应用。但是,传统硬PLC有很大的缺点:生产厂商之间的产品相互不兼容,缺少明确一致的标准,难以构建开放的硬件体系结构;各厂商产品的编程方法差别很大,技术专有性较强,工作人员必须经过较长时间的专业培训才能掌握某一种产品的编程方法;传统PLC的生产被几家厂商所垄断,导致PLC价格昂贵。为了改善传统硬PLC的缺点软PLC诞生了,软PLC是基于IPC或EPC的开放结构的控制系统。它具有硬PLC 的功能、开放的体系结构、遵循国际工业标准和事实上的工业标准(如IEC61131-3标准和 IEC61491标准)、能充分利用PC机的资源、更强的数据处理能力、友好的人机界面等特点。软PLC利用软件技术可将标准的工业PC转换成全功能的PLC过程控制器。软PLC可综合计算机和PLC的开关量控制、模拟量控制、数学运算、数值处理、通信网络等功能,通过一个多任务控制内核,可提供强大的指令集、准确的扫描周期、可靠的操作和连接各种I/O系统及网络的开放式结构。软PLC提供与硬PLC同样的功能,同时具备了PC环境的各种优点,软PLC相对传统PLC具有很多优势。但是,软PLC有一个致命的缺点:软PLC是一种用软件模拟实现传统硬件PLC控制功能的控制装置,这导致软PLC的实时性大不如传统硬PLC,在很多高速工业控制领域,软PLC无法满足实时性要求。
发明内容
针对现有技术的缺点,本发明提供一种在FPGA平台实现PLC控制的方法及装置,该方法克服软PLC实时性低的缺点,将符合IEC61131-3标准的嵌入式PLC嵌入到FPGA平台上,提高了PLC的实时性和灵活性;本装置利用FPGA可以并行执行程序的特性,使得FPGA-PLC可以串行和并行混合执行PLC程序以大幅提高PLC的实时性。
实现本发明目的的技术方案是:
一种在FPGA平台实现PLC控制的方法,包括如下步骤:
1)生成PLC梯形图;
2)生成IEC61131-3标准的结构化文本文件;
3)确定PLC每行结构化文本中的逻辑依赖关系;
分析步骤2)得到的结构化文本文件,得到PLC逻辑间的依赖关系;
4)建立FPGA进程的并发扫描模型;
由步骤3)产生的依赖关系得到FPGA进程的并发扫描模型;
5)实现结构化文本到FPGA转换;
根据步骤4)的并发扫描模型实现结构化文本到FPGA转换;
6)综合生成FPGA固件;
使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;
步骤3)中依赖关系的定义:如果逻辑算术表达公式B的输入参数包含逻辑算术表达公式A的输出参数,那么B依赖于A,即A的输出会影响B的输出,扫描结构化文本文件中所有逻辑算术表达公式语句就可得到逻辑算术表达公式间的依赖关系,即PLC逻辑间的依赖关系:
Y1=X1 OR X2 (1)
Y2=Y1 AND X3 (2)
Y3=X2 OR Y2 OR X4 (3)
公式中:(1)、(2)、(3)是抽象出来的3行结构化文本逻辑算术表达公式,公式(1)、(2)、(3)的‘=’左边Y1、Y2、Y3表示的是输出变量,‘=’右边X1、X2、Y1、X3、X2、Y2、 X4表示的是输入变量,OR逻辑或运算符、AND是逻辑与运算符;
每次提取结构化文本文件中的一行逻辑算术表达公式的输入和输出变量,每提取一行逻辑算术表达公式的输入和输出变量,就给新的输入和输出变量分配一个初始值为1的计数器,通过该计数器的数值大小,来确定结构化文本中的不同逻辑算术表达公式之间的依赖关系,第一次提取公式(1)的输入变量是:X1、X2,输出变量是:Y1,因为每行逻辑算术表达公式的输入变量只用一次,而输出变量每次都要用,所以将Y1放到关键词集合中保存起来,刚开始关键词集合为空,
初始化:
Y1_Count=1,
X1_Count=1,
X2_Count=1,
这三个关键词计数器值,给出ID的计算公公式:
ID=Yx_Count=MAX{X1_Count,...,Xn_Count} (4)
公式中,ID:当前行逻辑算术表达公式的编号值;Yx_Count:中的x代表1到n的一个数字;X1_Count,...,Xn_Count:代表输入关键词计数器的值;MAX{X1_Count,...,Xn_Count}:中的MAX表示取出所有的关键词计数值的最大值;
就可以计算当前行逻辑算术表达公式ID,
用公式(4)计算:
ID=Yx_Count=MAX{X1_Count,X2_Count}=MAX{1,1}=1,所以第一行逻辑算术表达公式的 ID=1,此时可以保存公式(1)的ID=1,第二次提取公式(2)关键词时,根据前面依赖的定义,比较的是公式(2)的输入关键词是否包含公式(1)的输出关键词,由于公式(1)的输出关键词都放到了关键词集合中,所以只需要提取公式(2)的输入关键词和关键词集合中保存的关键词比较,看公式(2)的输入关键词是否包含有关键词集合中的关键词,如果有则表示有依赖关系,现在关键词集合已经有一个关键词Y1,公式(2)的输入关键词包含关键词集合中的Y1,所以有依赖关系,此时需要用Y1_Count+1的值来代替Y1_Count的值来计算的_ID,这样能保证当前行逻辑算术表达公式计算出来的ID值比它所依赖的的ID值至少大1,从而保证按照依赖的顺序执行;
用公式(4)来计算公式(2)的ID值,提取公式(2)的关键词Y2、Y1、X3,因为Y1 已经存在于关键词集合中,说明有依赖关系,所以用Y1_Count+1来代替Y1_Count的值来计算当前行的ID值,ID=Y2_Count=MAX{Y1_Count+1,X3_Count}={2,1}=2,此时可以保存公式(2)的ID=2,同理按照公式(2)的计算过程可以计算出公式(3)的ID=3,用ID值就可以直接通过ID数值确定每一行逻辑算术表达公式的依赖关系:(1)ID=1、(2)ID=2、(3)ID=3 说明逻辑算术表达公式执行顺序是(1)→(2)→(3)按顺序执行的,执行顺序是按照ID 值从小到大的顺序来执行。
步骤4)中,每一行逻辑算术表达公式会映射到到一个单独的FPGA进程,每一个进程开始处都是一个关于当前进程组号的判断,只有在当前进程组号等于某个常数时该进程才开始有效工作,该常数被视为一个Process_ID,决定了一个FPGA进程何时被执行,本设计称之为进程组序号值,Process_ID和ID在数值上是相等的,只要ID确定了,Process_ID就确定了,Process_ID值相同的被视为同一进程组,同一进程组内的进程并行工作,也就是说Process_ID值相同的会被同时并行执行;
为了保证能够正确合理地按照顺序并发执行进程,使用一个单独的进程来实现上述进程组管理功能,此进程主要对当前进程组号不停地循环递增:当FPGA复位时当前进程组号 cur_pro_no值为0,否则每当上一个进程组结束时cur_pro_no就自增,直至到达最大进程组号max_pro_no后回到0并重新循环,FPGA-PLC的一个完整扫描周期等于所有进程组都被执行的时间,通过这种进程组号顺序循环递增的方公式来实现PLC的顺序并发扫描执行程序的功能,进程组号递增到的值和其中数值上和ID值相等的Process_ID值相等时,对应的进程就会被执行,如果有多行进程的Process_ID值和进程组号递增到的值相同,那么这几行 Process_ID值相同的进程就被并行执行。
步骤5)中,结构化文本使用布尔逻辑表达公式和模块逻辑表达公式这两种表达公式,因此转化工作也按这两种情况进行;
布尔逻辑表达公式情况下只需把结构化文本中的布尔逻辑运算表达公式符直接替换为 Verilog语言的逻辑运算符即可,下表就是逻辑运算符替换表,
结构化文本 AND OR NOT NOT(x1)AND(m0OR x0)
硬件描述语言 & | ~(x1)&(m0|x0)
结构化文本中的模块逻辑表达公式被转化为IEC61131-3基础库中某模块的一个实例,并通过线网传递所需的参数,结构化文本中计数器模块TON0(IN:=NOT(x1)AND(m0ORx0), PT:=T#2000000ns)转换Verilog语言就是TON TON0(sys_clk,sys_rstn,TON0_IN0_WIRE,TON0_OUT0_WIRE);其中TON0是TON模块的一个实例;
此根据步骤4的并发扫描模型和步骤5结构化文本到Verilog HDL规则,实现结构化文本到FPGA的转换。
步骤6)中使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;本发明实现了IEC61131-3标准规定了4种基础功能块:
双稳触发器、边沿触发器、定时器、计数器,将它们以FPGA模块的形公式加以封装,这些用Verilog HDL实现的FPGA模块共同构成了FPGA基本功能模块库。
一种在FPGA平台实现PLC控制装置,包括输出部分、芯片部分、输入部分、端口部分和串口部分;
芯片部分与输出部分、输入部分、端口部分和串口部分分别连接。
输出部分、包括输出端口、继电器隔离电路、输出光耦合隔离电路,输出端口、继电器隔离电路、输出光耦合隔离电路顺序连接,输入光耦合隔离电路还与芯片部分的FPGA芯片相连接;
芯片部分、包括FPGA芯片;
输入部分、包括输入端口,输入光耦合隔离电路,输入端口与输入光耦合隔离电路相连接,输入光耦合隔离电路还与芯片部分的FPGA芯片相连接;
端口部分、包括调试端口;
串口部分、包括通信串口;
有益效果:
本发明提供了一种在FPGA平台实现PLC控制的方法及装置,该方法不但能正确实现PLC 的输入输出逻辑,而且还可以在FPGA平台并行运行,从根本上改变了传统PLC的只能顺序扫描执行的方式,PLC执行的时间与进程的大小没有关系,只和进程有依赖层次有关系,FPGA-PLC执行效率是传统PLC无法比拟的;该装置将IEC-61131-3标准应用在了FPGA-PLC 上,克服了传统PLC的封闭性和兼容性差等缺点,有利于打破高端PLC厂家垄断局面;还利用FPGA并行执行的特性,使得FPGA-PLC能并行执行PLC进程,大幅提升了PLC的实时性,FPGA的处理是纯硬件的实现过程,使得FPGA-PLC系统具有很高的稳定性。
附图说明
图1本装置结构框图
具体实施方式
以下结合附图和实施例对本发明内容作进一步的阐述,但不是对本发明的限定
实施例
一种在FPGA平台实现PLC控制的方法,包括如下步骤:
1)生成PLC梯形图;
2)生成IEC61131-3标准的结构化文本文件;
3)确定PLC每行结构化文本中的逻辑依赖关系;
分析步骤2)得到的结构化文本文件,得到PLC逻辑间的依赖关系;
4)建立FPGA进程的并发扫描模型;
由步骤3)产生的依赖关系得到FPGA进程的并发扫描模型;
5)实现结构化文本到FPGA转换;
根据步骤4)的并发扫描模型实现结构化文本到FPGA转换;
7)综合生成FPGA固件;
使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;
步骤3)中依赖关系的定义:如果逻辑算术表达公式B的输入参数包含逻辑算术表达公式A的输出参数,那么B依赖于A,即A的输出会影响B的输出,扫描结构化文本文件中所有逻辑算术表达公式语句就可得到逻辑算术表达公式间的依赖关系,即PLC逻辑间的依赖关系:
Y1=X1 OR X2 (1)
Y2=Y1 AND X3 (2)
Y3=X2 OR Y2 OR X4 (3)
公式中:(1)、(2)、(3)是抽象出来的3行结构化文本逻辑算术表达公式,公式(1)、(2)、(3)的‘=’左边Y1、Y2、Y3表示的是输出变量,‘=’右边X1、X2、Y1、X3、X2、Y2、 X4表示的是输入变量,OR逻辑或运算符、AND是逻辑与运算符;
每次提取结构化文本文件中的一行逻辑算术表达公式的输入和输出变量,每提取一行逻辑算术表达公式的输入和输出变量,就给新的输入和输出变量分配一个初始值为1的计数器,通过该计数器的数值大小,来确定结构化文本中的不同逻辑算术表达公式之间的依赖关系,第一次提取公式(1)的输入变量是:X1、X2,输出变量是:Y1,因为每行逻辑算术表达公式的输入变量只用一次,而输出变量每次都要用,所以将Y1放到关键词集合中保存起来,刚开始关键词集合为空,
初始化:
Y1_Count=1,
X1_Count=1,
X2_Count=1,
这三个关键词计数器值,给出ID的计算公公式:
ID=Yx_Count=MAX{X1_Count,...,Xn_Count} (4)
公式中,ID:当前行逻辑算术表达公式的编号值;Yx_Count:中的x代表1到n的一个数字;X1_Count,...,Xn_Count:代表输入关键词计数器的值;MAX{X1_Count,...,Xn_Count}:中的MAX表示取出所有的关键词计数值的最大值;
就可以计算当前行逻辑算术表达公式ID,
用公式(4)计算:
ID=Yx_Count=MAX{X1_Count,X2_Count}=MAX{1,1}=1,所以第一行逻辑算术表达公式的 ID=1,此时可以保存公式(1)的ID=1,第二次提取公式(2)关键词时,根据前面依赖的定义,比较的是公式(2)的输入关键词是否包含公式(1)的输出关键词,由于公式(1)的输出关键词都放到了关键词集合中,所以只需要提取公式(2)的输入关键词和关键词集合中保存的关键词比较,看公式(2)的输入关键词是否包含有关键词集合中的关键词,如果有则表示有依赖关系,现在关键词集合已经有一个关键词Y1,公式(2)的输入关键词包含关键词集合中的Y1,所以有依赖关系,此时需要用Y1_Count+1的值来代替Y1_Count的值来计算的_ID,这样能保证当前行逻辑算术表达公式计算出来的ID值比它所依赖的的ID值至少大1,从而保证按照依赖的顺序执行;
用公式(4)来计算公式(2)的ID值,提取公式(2)的关键词Y2、Y1、X3,因为Y1 已经存在于关键词集合中,说明有依赖关系,所以用Y1_Count+1来代替Y1_Count的值来计算当前行的ID值,ID=Y2_Count=MAX{Y1_Count+1,X3_Count}={2,1}=2,此时可以保存公式(2)的ID=2,同理按照公式(2)的计算过程可以计算出公式(3)的ID=3,用ID值就可以直接通过ID数值确定每一行逻辑算术表达公式的依赖关系:(1)ID=1、(2)ID=2、(3)ID=3 说明逻辑算术表达公式执行顺序是(1)→(2)→(3)按顺序执行的,执行顺序是按照ID 值从小到大的顺序来执行。
步骤4)中,每一行逻辑算术表达公式会映射到到一个单独的FPGA进程,每一个进程开始处都是一个关于当前进程组号的判断,只有在当前进程组号等于某个常数时该进程才开始有效工作,该常数被视为一个Process_ID,决定了一个FPGA进程何时被执行,本设计称之为进程组序号值,Process_ID和ID在数值上是相等的,只要ID确定了,Process_ID就确定了,Process_ID值相同的被视为同一进程组,同一进程组内的进程并行工作,也就是说Process_ID值相同的会被同时并行执行;
为了保证能够正确合理地按照顺序并发执行进程,使用一个单独的进程来实现上述进程组管理功能,此进程主要对当前进程组号不停地循环递增:当FPGA复位时当前进程组号 cur_pro_no值为0,否则每当上一个进程组结束时cur_pro_no就自增,直至到达最大进程组号max_pro_no后回到0并重新循环,FPGA-PLC的一个完整扫描周期等于所有进程组都被执行的时间,通过这种进程组号顺序循环递增的方公式来实现PLC的顺序并发扫描执行程序的功能,进程组号递增到的值和其中数值上和ID值相等的Process_ID值相等时,对应的进程就会被执行,如果有多行进程的Process_ID值和进程组号递增到的值相同,那么这几行 Process_ID值相同的进程就被并行执行。
步骤5)中,结构化文本使用布尔逻辑表达公式和模块逻辑表达公式这两种表达公式,因此转化工作也按这两种情况进行;
布尔逻辑表达公式情况下只需把结构化文本中的布尔逻辑运算表达公式符直接替换为 Verilog语言的逻辑运算符即可,下表就是逻辑运算符替换表,
结构化文本 AND OR NOT NOT(x1)AND(m0OR x0)
硬件描述语言 & | ~(x1)&(m0|x0)
结构化文本中的模块逻辑表达公式被转化为IEC61131-3基础库中某模块的一个实例,并通过线网传递所需的参数,结构化文本中计数器模块TON0(IN:=NOT(x1)AND(m0ORx0), PT:=T#2000000ns)转换Verilog语言就是TON TON0(sys_clk,sys_rstn,TON0_IN0_WIRE,TON0_OUT0_WIRE);其中TON0是TON模块的一个实例;
此根据步骤4的并发扫描模型和步骤5结构化文本到Verilog HDL规则,实现结构化文本到FPGA的转换。
步骤6)中使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;本发明实现了IEC61131-3标准规定了4种基础功能块:
双稳触发器、边沿触发器、定时器、计数器,将它们以FPGA模块的形公式加以封装,这些用Verilog HDL实现的FPGA模块共同构成了FPGA基本功能模块库。
一种在FPGA平台实现PLC控制的方法,包括如下步骤:
1)生成PLC梯形图;
2)生成IEC61131-3标准的结构化文本文件;
3)确定PLC每行结构化文本中的逻辑依赖关系;
分析步骤2)得到的结构化文本文件,得到PLC逻辑间的依赖关系;
4)建立FPGA进程的并发扫描模型;
由步骤3)产生的依赖关系得到FPGA进程的并发扫描模型;
5)实现结构化文本到FPGA转换;
根据步骤4)的并发扫描模型实现结构化文本到FPGA转换;
8)综合生成FPGA固件;
使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;
步骤3)中依赖关系的定义:如果逻辑算术表达公式B的输入参数包含逻辑算术表达公式A的输出参数,那么B依赖于A,即A的输出会影响B的输出,扫描结构化文本文件中所有逻辑算术表达公式语句就可得到逻辑算术表达公式间的依赖关系,即PLC逻辑间的依赖关系:
Y1=X1 OR X2 (1)
Y2=Y1 AND X3 (2)
Y3=X2 OR Y2 OR X4 (3)
公式中:(1)、(2)、(3)是抽象出来的3行结构化文本逻辑算术表达公式,公式(1)、(2)、(3)的‘=’左边Y1、Y2、Y3表示的是输出变量,‘=’右边X1、X2、Y1、X3、X2、Y2、X4表示的是输入变量,OR逻辑或运算符、AND是逻辑与运算符;
每次提取结构化文本文件中的一行逻辑算术表达公式的输入和输出变量,每提取一行逻辑算术表达公式的输入和输出变量,就给新的输入和输出变量分配一个初始值为1的计数器,通过该计数器的数值大小,来确定结构化文本中的不同逻辑算术表达公式之间的依赖关系,第一次提取公式(1)的输入变量是:X1、X2,输出变量是:Y1,因为每行逻辑算术表达公式的输入变量只用一次,而输出变量每次都要用,所以将Y1放到关键词集合中保存起来,刚开始关键词集合为空,
初始化:
Y1_Count=1,
X1_Count=1,
X2_Count=1,
这三个关键词计数器值,给出ID的计算公公式:
ID=Yx_Count=MAX{X1_Count,...,Xn_Count} (4)
公式中,ID:当前行逻辑算术表达公式的编号值;Yx_Count:中的x代表1到n的一个数字;X1_Count,...,Xn_Count:代表输入关键词计数器的值;MAX{X1_Count,...,Xn_Count}:中的MAX表示取出所有的关键词计数值的最大值;
就可以计算当前行逻辑算术表达公式ID,
用公式(4)计算:
ID=Yx_Count=MAX{X1_Count,X2_Count}=MAX{1,1}=1,所以第一行逻辑算术表达公式的 ID=1,此时可以保存公式(1)的ID=1,第二次提取公式(2)关键词时,根据前面依赖的定义,比较的是公式(2)的输入关键词是否包含公式(1)的输出关键词,由于公式(1)的输出关键词都放到了关键词集合中,所以只需要提取公式(2)的输入关键词和关键词集合中保存的关键词比较,看公式(2)的输入关键词是否包含有关键词集合中的关键词,如果有则表示有依赖关系,现在关键词集合已经有一个关键词Y1,公式(2)的输入关键词包含关键词集合中的Y1,所以有依赖关系,此时需要用Y1_Count+1的值来代替Y1_Count的值来计算的_ID,这样能保证当前行逻辑算术表达公式计算出来的ID值比它所依赖的的ID值至少大1,从而保证按照依赖的顺序执行;
用公式(4)来计算公式(2)的ID值,提取公式(2)的关键词Y2、Y1、X3,因为Y1 已经存在于关键词集合中,说明有依赖关系,所以用Y1_Count+1来代替Y1_Count的值来计算当前行的ID值,ID=Y2_Count=MAX{Y1_Count+1,X3_Count}={2,1}=2,此时可以保存公式(2)的ID=2,同理按照公式(2)的计算过程可以计算出公式(3)的ID=3,用ID值就可以直接通过ID数值确定每一行逻辑算术表达公式的依赖关系:(1)ID=1、(2)ID=2、(3)ID=3 说明逻辑算术表达公式执行顺序是(1)→(2)→(3)按顺序执行的,执行顺序是按照ID 值从小到大的顺序来执行。
步骤4)中,每一行逻辑算术表达公式会映射到到一个单独的FPGA进程,每一个进程开始处都是一个关于当前进程组号的判断,只有在当前进程组号等于某个常数时该进程才开始有效工作,该常数被视为一个Process_ID,决定了一个FPGA进程何时被执行,本设计称之为进程组序号值,Process_ID和ID在数值上是相等的,只要ID确定了,Process_ID就确定了,Process_ID值相同的被视为同一进程组,同一进程组内的进程并行工作,也就是说Process_ID值相同的会被同时并行执行;
为了保证能够正确合理地按照顺序并发执行进程,使用一个单独的进程来实现上述进程组管理功能,此进程主要对当前进程组号不停地循环递增:当FPGA复位时当前进程组号 cur_pro_no值为0,否则每当上一个进程组结束时cur_pro_no就自增,直至到达最大进程组号max_pro_no后回到0并重新循环,FPGA-PLC的一个完整扫描周期等于所有进程组都被执行的时间,通过这种进程组号顺序循环递增的方公式来实现PLC的顺序并发扫描执行程序的功能,进程组号递增到的值和其中数值上和ID值相等的Process_ID值相等时,对应的进程就会被执行,如果有多行进程的Process_ID值和进程组号递增到的值相同,那么这几行 Process_ID值相同的进程就被并行执行。
步骤5)中,结构化文本使用布尔逻辑表达公式和模块逻辑表达公式这两种表达公式,因此转化工作也按这两种情况进行;
布尔逻辑表达公式情况下只需把结构化文本中的布尔逻辑运算表达公式符直接替换为 Verilog语言的逻辑运算符即可,下表就是逻辑运算符替换表,
结构化文本 AND OR NOT NOT(x1)AND(m0OR x0)
硬件描述语言 & | ~(x1)&(m0|x0)
结构化文本中的模块逻辑表达公式被转化为IEC61131-3基础库中某模块的一个实例,并通过线网传递所需的参数,结构化文本中计数器模块TON0(IN:=NOT(x1)AND(m0ORx0), PT:=T#2000000ns)转换Verilog语言就是TON TON0(sys_clk,sys_rstn,TON0_IN0_WIRE,TON0_OUT0_WIRE);其中TON0是TON模块的一个实例;
此根据步骤4的并发扫描模型和步骤5结构化文本到Verilog HDL规则,实现结构化文本到FPGA的转换。
步骤6)中使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;本发明实现了IEC61131-3标准规定了4种基础功能块:
双稳触发器、边沿触发器、定时器、计数器,将它们以FPGA模块的形公式加以封装,这些用Verilog HDL实现的FPGA模块共同构成了FPGA基本功能模块库。
如图1所示:
一种在FPGA平台实现PLC控制装置,包括输出部分1、芯片部分2、输入部分3、端口部分4和串口部分5;
芯片部分2与输出部分1、输入部分3、端口部分4和串口部分5分别连接。
输出部分1、包括输出端口6、继电器隔离电路7、输出光耦合隔离电路8,输出端口6、继电器隔离电路7、输出光耦合隔离电路8顺序连接,输出光耦合隔离电路8还与芯片部分2 的FPGA芯片9相连接;
芯片部分2、包括FPGA芯片9;
输入部分3、包括输入端口10,输入光耦合隔离电路11,输入端口10与输入光耦合隔离电路11相连接,输入光耦合隔离电路11还与芯片部分2的FPGA芯片9相连接;
端口部分4、包括调试端口12;
串口部分5、包括通信串口13。

Claims (4)

1.一种在FPGA平台实现PLC控制的方法,包括如下步骤:
1)生成PLC梯形图;
2)生成IEC61131-3标准的结构化文本文件;
3)确定PLC每行结构化文本中的逻辑依赖关系;
分析步骤2)得到的结构化文本文件,得到PLC逻辑间的依赖关系;
4)建立FPGA进程的并发扫描模型;
由步骤3)产生的依赖关系得到FPGA进程的并发扫描模型;
5)实现结构化文本到FPGA转换;
根据步骤4)的并发扫描模型实现结构化文本到FPGA转换;
6)综合生成FPGA固件;
使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;
其特征在于,步骤3)中依赖关系的定义:如果逻辑算术表达公式B的输入参数包含逻辑算术表达公式A的输出参数,那么B依赖于A,即A的输出会影响B的输出,扫描结构化文本文件中所有逻辑算术表达公式语句就可得到逻辑算术表达公式间的依赖关系,即PLC逻辑间的依赖关系:
Y1=X1 OR X2 (1)
Y2=Y1 AND X3 (2)
Y3=X2 OR Y2 OR X4 (3)
公式中:(1)、(2)、(3)是抽象出来的3行结构化文本逻辑算术表达公式,公式(1)、(2)、(3)的‘=’左边Y1、Y2、Y3表示的是输出变量,‘=’右边X1、X2、Y1、X3、X2、Y2、X4表示的是输入变量,OR逻辑或运算符、AND是逻辑与运算符;
每次提取结构化文本文件中的一行逻辑算术表达公式的输入和输出变量,每提取一行逻辑算术表达公式的输入和输出变量,就给新的输入和输出变量分配一个初始值为1的计数器,通过该计数器的数值大小,来确定结构化文本中的不同逻辑算术表达公式之间的依赖关系,第一次提取公式(1)的输入变量是:X1、X2,输出变量是:Y1,因为每行逻辑算术表达公式的输入变量只用一次,而输出变量每次都要用,所以将Y1放到关键词集合中保存起来,刚开始关键词集合为空,
初始化:
Y1_Count=1,
X1_Count=1,
X2_Count=1,
这三个关键词计数器值,给出ID的计算公式:
ID=Yx_Count=MAX{X1_Count,...,Xn_Count} (4)
公式中,ID:当前行逻辑算术表达公式的编号值;Yx_Count中的x代表1到n的一个数字;X1_Count,...,Xn_Count:代表输入关键词计数器的值;MAX{X1_Count,...,Xn_Count}中的MAX表示取出所有的关键词计数器值的最大值;
就可以计算当前行逻辑算术表达公式ID,
用公式(4)计算:
ID=Yx_Count=MAX{X1_Count,X2_Count}=MAX{1,1}=1,所以第一行逻辑算术表达公式的ID=1,此时可以保存公式(1)的ID=1,第二次提取公式(2)关键词时,根据前面依赖的定义,比较的是公式(2)的输入关键词是否包含公式(1)的输出关键词,由于公式(1)的输出关键词都放到了关键词集合中,所以只需要提取公式(2)的输入关键词和关键词集合中保存的关键词比较,看公式(2)的输入关键词是否包含有关键词集合中的关键词,如果有则表示有依赖关系,现在关键词集合已经有一个关键词Y1,公式(2)的输入关键词包含关键词集合中的Y1,所以有依赖关系,此时需要用Y1_Count+1的值来代替Y1_Count的值来计算的当前行的ID,这样能保证当前行逻辑算术表达公式计算出来的当前行的ID值比它所依赖的的当前行的ID值至少大1,从而保证按照依赖的顺序执行;
用公式(4)来计算公式(2)的ID值,提取公式(2)的关键词Y2、Y1、X3,因为Y1已经存在于关键词集合中,说明有依赖关系,所以用Y1_Count+1来代替Y1_Count的值来计算当前行的ID值,ID=Y2_Count=MAX{Y1_Count+1,X3_Count}={2,1}=2,此时可以保存公式(2)的ID=2,同理按照公式(2)的计算过程可以计算出公式(3)的ID=3,用当前行的ID值就可以直接通过ID数值确定每一行逻辑算术表达公式的依赖关系:(1)ID=1、(2)ID=2、(3)ID=3,说明逻辑算术表达公式执行顺序是(1)→(2)→(3)按顺序执行的,执行顺序是按照ID值从小到大的顺序来执行。
2.根据权利要求1所述的在FPGA平台实现PLC控制的方法,其特征在于,步骤4)中,每一行逻辑算术表达公式会映射到一个单独的FPGA进程,每一个进程开始处都是一个关于当前进程组号的判断,只有在当前进程组号等于某个常数时该进程才开始有效工作,该常数被视为一个Process_ID,决定了一个FPGA进程何时被执行,本设计称之为进程组序号值,Process_ID和ID在数值上是相等的,只要ID确定了,Process_ID就确定了,Process_ID值相同的被视为同一进程组,同一进程组内的进程并行工作,也就是说Process_ID值相同的会被同时并行执行;
为了保证能够正确合理地按照顺序并发执行进程,使用一个单独的进程来实现上述进程组管理功能,此进程主要对当前进程组号不停地循环递增:当FPGA复位时当前进程组号cur_pro_no值为0,否则每当上一个进程组结束时cur_pro_no就自增,直至到达最大进程组号max_pro_no后回到0并重新循环,FPGA-PLC的一个完整扫描周期等于所有进程组都被执行的时间,通过这种进程组号顺序循环递增的方公式来实现PLC的顺序并发扫描执行程序的功能,进程组号递增到的值和其中数值上和ID值相等的Process_ID值相等时,对应的进程就会被执行,如果有多行进程的Process_ID值和进程组号递增到的值相同,那么这几行Process_ID值相同的进程就被并行执行。
3.根据权利要求1所述的在FPGA平台实现PLC控制的方法,其特征在于,步骤5)中,结构化文本使用布尔逻辑表达公式和模块逻辑表达公式这两种表达公式,因此转化工作也按这两种情况进行;
布尔逻辑表达公式情况下只需把结构化文本中的布尔逻辑运算表达公式符直接替换为Verilog语言的逻辑运算符即可,
此根据步骤4)的并发扫描模型和步骤5)结构化文本规则,实现结构化文本到FPGA的转换。
4.根据权利要求1所述的在FPGA平台实现PLC控制的方法,其特征在于,步骤6)中使用FPGA工具集将步骤5)中联合用FPGA模块实现的IEC61131-3基本功能模块库进行综合生成FPGA固件;实现了IEC61131-3标准规定了4种基础功能块:
双稳触发器、边沿触发器、定时器、计数器,将它们以FPGA模块的公式加以封装,这些用Verilog HDL实现的FPGA模块共同构成了FPGA基本功能模块库。
CN201610064750.4A 2016-01-29 2016-01-29 一种在fpga平台实现plc控制的方法 Expired - Fee Related CN105511394B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610064750.4A CN105511394B (zh) 2016-01-29 2016-01-29 一种在fpga平台实现plc控制的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610064750.4A CN105511394B (zh) 2016-01-29 2016-01-29 一种在fpga平台实现plc控制的方法

Publications (2)

Publication Number Publication Date
CN105511394A CN105511394A (zh) 2016-04-20
CN105511394B true CN105511394B (zh) 2018-06-29

Family

ID=55719462

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610064750.4A Expired - Fee Related CN105511394B (zh) 2016-01-29 2016-01-29 一种在fpga平台实现plc控制的方法

Country Status (1)

Country Link
CN (1) CN105511394B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102004456B1 (ko) * 2016-08-12 2019-07-30 주식회사 유디엠텍 Plc 제어 프로그램을 구조체 데이터로 변환하는 장치 및 방법
CN108319453A (zh) * 2017-12-20 2018-07-24 中核控制系统工程有限公司 一种基于fpga控制逻辑的算法组态软件设计方法
CN109698826B (zh) * 2018-12-06 2021-07-27 贵州电网有限责任公司 一种电力服务器内交换系统端口间安全隔离的实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177806A (ja) * 2001-12-12 2003-06-27 Mitsubishi Electric Corp パソコンnc、パソコン付きプログラマブル・コントローラおよびプログラマブル・コントローラのソフトウェア開発ツール
CN103455002A (zh) * 2013-08-30 2013-12-18 天津大学 一种基于Verilog HDL的FPGA超高速工业控制系统
CN103901808A (zh) * 2012-12-26 2014-07-02 施耐德电器工业公司 在可编程逻辑控制器中实现可编程实时逻辑的方法及系统
CN205375150U (zh) * 2016-01-29 2016-07-06 桂林电子科技大学 一种在fpga平台实现plc控制装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003177806A (ja) * 2001-12-12 2003-06-27 Mitsubishi Electric Corp パソコンnc、パソコン付きプログラマブル・コントローラおよびプログラマブル・コントローラのソフトウェア開発ツール
CN103901808A (zh) * 2012-12-26 2014-07-02 施耐德电器工业公司 在可编程逻辑控制器中实现可编程实时逻辑的方法及系统
CN103455002A (zh) * 2013-08-30 2013-12-18 天津大学 一种基于Verilog HDL的FPGA超高速工业控制系统
CN205375150U (zh) * 2016-01-29 2016-07-06 桂林电子科技大学 一种在fpga平台实现plc控制装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
PLC并行编译中资源依赖研究;万真龙;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20131215(第S1期);第I140-217页正文第10-62页 *
基于FPGA的高性能PLC运行系统关键技术研究;李孝辉;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20140215(第2期);第I140-297页正文第9-75页 *
梯形图并行编译研究及其在FPGA上的实现;罗奎;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20140915(第9期);第I140-404页正文第14-53页 *

Also Published As

Publication number Publication date
CN105511394A (zh) 2016-04-20

Similar Documents

Publication Publication Date Title
CN104065545B (zh) 基于Modbus协议的RS485总线通讯方法及基于该通讯方法的电力电子系统
Pak et al. A versatile cluster-based real-time digital simulator for power engineering research
CN105511394B (zh) 一种在fpga平台实现plc控制的方法
CN103941650B (zh) 逻辑与运动集成控制器
CN106886690B (zh) 一种面向基因数据计算解读的异构平台
CN104932405A (zh) 一种用设备虚拟样机辅助测试plc控制程序的方法
Dai et al. Modeling distributed automation systems in cyber-physical view
CN204946009U (zh) 电力电子仿真系统
CN206489436U (zh) 一种新型的plc控制器
CN107305363A (zh) 多轴运动控制器
CN105243223B (zh) 基于Modelica的程序快速构建方法
CN205375150U (zh) 一种在fpga平台实现plc控制装置
CN102354154B (zh) 一种开放式数控系统的实时内核芯片
Krzywicki et al. SoC research and development platform for distributed embedded systems
CN105425662A (zh) 基于fpga的集散控制系统中的主处理器及其控制方法
CN105807629A (zh) 一种光伏并网发电半实物仿真系统
CN202711232U (zh) 一种基于触控操作的人机交互系统
Rahim et al. Modular and distributed verification of SysML activity diagrams
CN106452936A (zh) 一种基于汇聚过程的流量生成器
Yang et al. Executing Strategy and Visualization Design for Instruction of Soft PLC System.
Tang et al. Design of Universal Control System Development Platform for Small and Medium-Sized Packaging Machinery and Equipment
Zhang et al. A simulation method of controlled hybrid Petri nets based on Matlab Simulink/Stateflow
Jiang A novel simulation time and wall clock time synchronization algorithm for HLA
CN105159755A (zh) 多处理器的仿真处理系统
Yang et al. Modeling and Applied Research in Petri Net of Virtual Assembly Program Control

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180629

CF01 Termination of patent right due to non-payment of annual fee