CN105511394B - 一种在fpga平台实现plc控制的方法 - Google Patents
一种在fpga平台实现plc控制的方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 128
- 230000008569 process Effects 0.000 claims abstract description 109
- 230000008859 change Effects 0.000 claims abstract description 6
- 230000006870 function Effects 0.000 claims description 25
- 239000000284 extract Substances 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000000605 extraction Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 4
- 238000013461 design Methods 0.000 claims description 4
- 230000009466 transformation Effects 0.000 claims description 4
- 230000001960 triggered effect Effects 0.000 claims description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 4
- 238000004321 preservation Methods 0.000 claims 1
- 238000012545 processing Methods 0.000 abstract description 3
- 238000002955 isolation Methods 0.000 description 16
- 230000008878 coupling Effects 0.000 description 12
- 238000010168 coupling process Methods 0.000 description 12
- 238000005859 coupling reaction Methods 0.000 description 12
- 230000003287 optical effect Effects 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 238000012549 training Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/056—Programming the PLC
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13012—Using other programs, adapting program to machine, exchanging or rom
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/13—Plc programming
- G05B2219/13076—Interprete 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控制的方法及装置。
背景技术
可编程逻辑控制器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基本功能模块库。
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)
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)
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控制装置 |
-
2016
- 2016-01-29 CN CN201610064750.4A patent/CN105511394B/zh not_active Expired - Fee Related
Patent Citations (4)
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)
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 |