n
1 FM352-5高速布尔处理器简介
FM352-5是一种现场可编程门阵列FPGA,FPGA包括输入、输出以及逻辑单元等可编辑元件用来实现一些基本的逻辑门电路, 如图1所示:n
图1 FPGA 内部架构n
通过编程,这些逻辑单元被分配一些如与、或、非、置位/复位等功能,系统设计师可以根据需要通过连接FPGA内部的逻辑单元和逻辑功能,就好像连接一个电路试验板,完成所需要的特定功能。最终程序将成为通过连接逻辑单元形式的硬件结构的一部分,这些硬件结构的程序组件好像通过连接的继电器控制回路一样并行执行,响应快速并且响应时间基于常数,FM352-5的扫描周期固定为1цs。
FM352-5模块高速处理数字量输入、输出信号以及编码器信号,从读入数字量输入信号、CPU程序处理到信号的输出最小周期不到10цs,适合逻辑简单、要求快速响应的应用如速度测量、脉宽调制(最小20цs可调)输出等。由于FM352-5是布尔处理器,所以只能对布尔、字节、字、双字等信号进行处理,而不能处理浮点信号。n
2 FM352-5工作方式
FM352-5具有独立的处理能力,安装方式灵活,可以安装于S7-300 PLC中央机架、分布式I/O ET200M中(可以是非西门子主站)、也可以独立安装。如图2所示:n
图2 FM352-5的安装形式n
独立安装时通过模块集成的输入、输出信号对受控设备进行操作并读出反馈状态,由于没有额外的通信接口而不能通过人机界面进行操作。安装于S7-300 中央机架中,CPU与FM352-5数据交换过程如图3所示:n
图3 CPU与FM352-5数据交换示意图n
FM352-5模块通过集成的输入接口接收编码器信号和数字量输入信号,通过背板通信总线接收CPU发送的命令信号(图中为输出缓存,如果FM352-5独立安装,只能通过集成的接口接收输入信号),经过FPGA(现场可编程门阵列)处理后直接通过模块集成的输出点输出,运算数据也可以通过输入缓存作为状态信号反馈到CPU。CPU与FM352-5间的通信数据经过接口函数块的处理后进入CPU的用户数据区,FM352-5与CPU之间的数据交换也可以通过FM352-5的逻辑地址区直接通信。
普通CPU程序执行是以串行扫描的,FM352-5程序执行则是以并行扫描的,保证程序执行的快速性,由于程序从左到右并行执行,在不同程序行中对由同一信号产生的逻辑结果处理时,可能导致逻辑的先后次序错误,FM352-5使用连接器和多相时钟的技术使具有竞争条件的时序延迟,保证信号的正确性。连接器的使用规则如下:
如果连接器的触点在它的输出线圈以前引用,那么触点的值将取决于上个扫描结果。
如果连接器的触点在它的输出线圈以后引用,那么触点的值将取决于当前扫描结果。
连接的使用如图4所示:n
图4 FM352-5连接的使用n
连接器使用的方式相当于中间变量,使用梯形图编写的FM352-5程序存储于一个FB块中,所有的变量使用在FB块中定义的形参,连接器变量使用固定的形参格式
#Co.arrXcon,在图2程序段1的程序中,连接器#Co.arrXcon[8]和#Co.arrXcon[9] 的触点信号在输出线圈#Co.arrXcon[8]以前引用,所以它们的值将取自线圈上个扫描结果。在程序段4的程序中,连接器#Co.arrXcon[8]和#Co.arrXcon[9]的触点信号在它的输出线圈#Co.arrXcon[8]以后引用,所以它们的值将取自线圈当前扫描结果。如果在不同程序段相对于连接器使用具有保持功能的指令块如计数器、定时器、RS触发器、沿检测、位移寄存器等时(参考表8),模块通过多相时钟管理这些指令块正确的时序,例子程序如图5所示:n
图5 保持功能块的多相定时n
在程序段1中,连接器#Co.arrXcon[2] 的触点信号在它的输出线圈前引用,它的值将取自线圈上个扫描结果,所以RS触发器#FF.ThirdFF被看作相序1,在程序段2中,RS触发器#FF.MoreFFs[0] 相序为1,#FF.MoreFFs[1] 相序为2,连接器线圈
#Co.arrXcon[2]在相序1后输出。在程序段3中,通过连接器触点#Co.arrXcon[2]将RS触发器#FF.MoreFFs[2]连接到程序段2的相序1后,同样被看作为相序2,程序段3相当于程序段2的扩展部分,这样程序执行相序图(顺序)如图6所示:n
图6 12相序定时和I/O时序图n
从图4中可以看到,#FF.MoreFFs[0]为相序1最先执行,#FF.MoreFFs[2]和#FF.MoreFFs[1] 同为相序2被同时执行。每一个程序段中最多可以串连11个(相序)具有保持功能的指令块,第十二个相序作为输出,如果利用连接器扩展,如图5中程序段2和程序段3中最多只能连接11个指令块,否则编译时报错。利用12相序的处理方式也保证FM352-5并行处理的稳定性——程序的执行周期固定为1цs。n
3 输入输出端子接线
FM352-5集成最多15个数字输入,8个数字输出和一路编码器输入信号。输入输出端子的定义参考表1所示:
表1 FM352-5输入输出端子定义n
端子号 | 输入/输出 | 名称 | 功能 | 指示灯 |
1 | 2M | 2区电源公共端-输入输出电路 | - | |
2 | 输入 | I 0 | 输入 | 绿灯 |
3 | 输入 | I 1 | 输入 | 绿灯 |
4 | 输入 | I 2 | 输入 | 绿灯 |
5 | 输入 | I 3 | 输入 | 绿灯 |
6 | 输入 | I 4 | 输入 | 绿灯 |
7 | 输入 | I 5 | 输入 | 绿灯 |
8 | 输入 | I 6 | 输入 | 绿灯 |
9 | 输入 | I 7 | 输入 | 绿灯 |
10 | 见注1 | 2区电源端-输入输出电路 | - | |
11 | 输出 | Q0 | 源输出/源输入型输出(见注2) | 绿灯 |
12 | 输出 | Q1 | 源输出/源输入型输出(见注2) | 绿灯 |
13 | 输出 | Q2 | 源输出/源输入型输出(见注2) | 绿灯 |
14 | 输出 | Q3 | 源输出/源输入型输出(见注2) | 绿灯 |
15 | 输出 | Q4 | 源输出/源输入型输出(见注2) | 绿灯 |
16 | 输出 | Q5 | 源输出/源输入型输出(见注2) | 绿灯 |
17 | 输出 | Q6 | 源输出/源输入型输出(见注2) | 绿灯 |
18 | 输出 | Q7 | 源输出/源输入型输出(见注2) | 绿灯 |
19 | 2L+ | 2区电源端输出-输入输出电路 | - | |
20 | 2M | 2区电源公共端-输入输出电路 | - |
注1:
订货号为FM352-5AH00-0AE0模块,管脚10为2M,作为2区输入输出电路公共端。
订货号为FM352-5AH10-0AE0模块,管脚10为2L+,作为2区输入输出电路电源端。
注2:
订货号为FM352-5AH00-0AE0模块带有漏型(NPN)输出。
订货号为FM352-5AH10-0AE0模块带有源型(PNP)输出。
根据现场信号和工艺的要求选择漏型或者源型输出的FM352-5模块,漏型比源型输出的响应频率高。n
编码器的端子定义参考表2所示:n
表2 编码器的端子定义n
端子号 | 输入/输出 | 名称 | 功能 | 指示灯 | |||
5V编码器 | SSI Master | SSI Listen | 24V编码器 | ||||
21 | 3L+ | 3区电源端-编码器电路 | - | ||||
22 | 3M | 3区电源公共端-编码器电路 | |||||
23 | 3M | 3区电源公共端-编码器电路 | |||||
24 | 输出 | 5V输出 | 5.2V 编码器电源 | 红灯 | |||
25 | 输出 | 24V输出 | 24V 编码器电源 | 红灯 | |||
26 | 输入 | 编码器 | A | DATE | DATE | I 12+ | |
27 | 输入 | 编码器 | /A | /DATE | /DATE | I 12 - | |
28 | 输入 | 编码器 | B | I 13+ | CLOCK | I 13+ | |
29 | 输入 | 编码器 | /B | I13 - | /CLOCK | I 13 - | |
30 | 输入 | 编码器 | N | I 14+ | I 14+ | I 14+ | |
31 | 输入 | 编码器 | /N | I 14- | I 14- | I 14- | |
32 | 输入 | 编码器 | - | CLOCK | - | - | |
33 | 输入 | 编码器 | - | /CLOCK | - | - | |
34 | - | - | - | - | |||
35 | - | - | - | - | |||
36 | 输入 | I 8 | I 8 | I 8 | I 8 | I 8 | 绿灯 |
37 | 输入 | I 9 | I 9 | I 9 | I 9 | A | 绿灯 |
38 | 输入 | I 10 | I 10 | I 10 | I 10 | B | 绿灯 |
39 | 输入 | I 11 | I 11 | I 11 | I 11 | N | 绿灯 |
40 | 3M | 3区电源公共端-编码器电路 | - |
FM352-5模块可以连接下列类型的编码器:
• 5V RS422对称脉冲串增量型编码器
• 24V非对称脉冲增量型编码器
• 具有同步串行接口SSI的型绝对值编码器,模块具有Master或Listen接口
通过模块的硬件配置选择连接编码器的类型,同时只能连接一个编码器。编码器的使用将占用对应的输入信号,例如,连接24V增量型编码器时I9、I10、I11被占用。如果没有连接编码器,接收编码器信号的端子可以作为数字量输入信号,最多15个数字输入,其中包括3个差分输入信号I12、I13和I14。n
4 模块的参数化
安装FM352-5模块软件包后可以对模块进行参数化,在SIMATIC Manager硬件配置界面插入FM352-5模块,双击FM352-5的图标,在弹出的对话框中点击 “Parameters” 按钮进入参数化界面如图7所示:n
图7 FM352-5参数化界面n
FM352-5模块可配置的参数如下:n
•® “Basic parameters ”
定义是否产生中断,产生的中断分为诊断中断(OB82)和过程中断(OB40)。
•® “Module Diagnostics Enable”
定义产生诊断中断的条件,如 电源1L+、2L+掉电等。
•® “Output Diagnostics Enable”
定义输出过载是否产生诊断中断。
•® “Process Interrupts Enable”
定义FM352-5 生成的8个过程中断,这些中断需要通过在FM352-5中编程触发(“Intr”形参)。产生中断在CPU中调用相应OB块,例如OB40,通过OB40形参
“0B40_POINT_ADDR”第一个字节的8个位可以判断FM352-5中产生中断的事件。
“Module Diagnostics Enable”、“Output Diagnostics Enable ”、“Process Interrupts Enable ”中的参数是动态参数,在CPU中可以通过调用SFC55-写数据记录1进行配置和修改,数据记录1中包含8个字节,数据格式参考表3。n
表3 数据记录区1的诊断数据n
字节 | 位 7 | 位 6 | 位 5 | 位 4 | 位 3 | 位 2 | 位 1 | 位 0 |
0 | MI | M2L | ESSF | M3L | - | - | - | - |
1 | SSIF | DBW | - | - | - | - | - | - |
2 | O7 | O6 | O5 | O4 | O3 | O2 | O1 | O0 |
3 | MMC | - | - | - | - | - | - | - |
4 | PAE7 | PAE6 | PAE5 | PAE4 | PAE3 | PAE2 | PAE1 | PAE0 |
5 | - | - | - | - | - | - | - | - |
6 | - | - | - | - | - | - | - | - |
7 | - | - | - | - | - | - | - | - |
表3中参数含义如下:
MI L :I L电源掉电。
M2L :2L电源掉电。
ESSF :编码器电源故障。
M3L :3L电源掉电。
SSIF :SSI编码器值溢出。
DBW :差分输入编码器断线。
O7~O0 :输出过载。
MMC :MMC卡故障。
PAE :8个过程中断n
表中每一个位表示一个生成中断的信息,值为0时不产生中断,值为1时激活中断。没有使用的位被保留,设置为0。修改的参数在CPU再次启动时恢复模块中的设置值。
•® “Input filter time constants”
定义输入信号的滤波时间,选择滤波时间长,采样不易受到干扰,但响应慢;反之易受到干扰,响应快。
•® “Program properties”
选择FM352-5是否可以独立运行。选择独立运行时,FM352-5的程序通过PG或写卡器
写入MMC中。
•® “Encoder- General”
选择使用编码器的类型,SSI、5V和24V编码器,或者不连接编码器。
•® “Encoder- SSI”
如果连接SSI编码器,在本栏中定义SSI编码器的参数。
•® “Encoder -5V Differential and 24V single-ended encoder”
如果连接5V或24V编码器,在本栏中定义编码器的参数。
•® “Advanced Parameters”
参数“Module Diagnostics hardware support”、 “Output Diagnostics hardware support”、“Process Interrupts hardware support ”是“Module Diagnostics Enable”、 “Output Diagnostics Enable ”、“Process Interrupts Enable ”中选择产生中断条件的先决条件,如果在“Advanced Parameters”没有选择将不会产生任何中断信息。FM352-5可使用的编程资源有限,所有配置的中断都将占用FM352-5的资源,如果去掉没有使用的中断将节省模块的资源,增加用户程序的空间。
“Consistency check”检查CPU与FM352-5的配置匹配性,如选择“Module checks for consistency”,FM352-5参数修改后,编译后的配置信息必须从新下载到CPU中。n
5 编程
FM352-5模块具有独立的执行程序,与普通CPU编程方法类似,但是不能使用语句表编程,由于FM352-5是针对位信号进行处理,SIMATIC Manager中集成的一些指令不能使用,如图8所示,由于时序的原因在位逻辑中不能使用单线圈的R/S触发器及SAVE指令;在比较器和转换器中不能使用涉及浮点运算的指令,计数器、定时器则需要使用FM352-5专用的函数库。安装FM352-5的参数化软件后,在SIMATIC Manager中自动集成FM352-5专用的函数库如图9所示,函数库中包含计数器、定时器、加减乘除函数块、移位寄存器函数块等,如果在FM352-5中使用非法的指令,在程序编译时会报错。FM352-5的执行程序只能存储于一个函数块FB中,执行程序中不能使用M、DB、I、Q、L、PIW 、PQW等数据区,也不能使用绝对地址,必须使用FB中的形参进行程序的编写,FB形参的是由IN、OUT及STAT接口区组成,可以是数组、结构及FB等数据类型。FM352-5使用的函数块FB形参有固定的格式,有的形参可以添加修改,有的则不能做任何改动。函数块FB输入接口区的形参如表4所示。n
图8 FM352-5 不能使用的指令n
图9 FM352-5 专用函数库n
表4 FB输入接口区的形参n
地址 | 声明 | 名称 | 类型 | 注解 |
0.0 | in | DIn | ARRAY [0..14] | FM352-5集成的数字输入(0~11= 24V,12~14=RS422差分输入信号,地址不能修改但是数据类型及名称可以修改。 |
*0.1 | in | BOOL | ||
2.0 | in | CPU_Out | STRUCT | CPU传送到FM352-5的14个字节,不能修改。 |
+0.0 | in | Bits | ARRAY [0..15] | 名称和数据类型都可以修改,但是通信的字节数不能超过14个字节。 |
*0.1 | in | BOOL | ||
+2.0 | in | T1_PVT | DIN | |
+6.0 | in | T2_PV | BYTE | |
+7.0 | in | CmpByte | BYTE | |
+8.0 | in | C1_PV | INT | |
+10.0 | in | CP_Period | WORD | |
+12.0 | in | CMP | Int INT | |
=14.0 | in | END_STRUCT | 不能修改 |
输入接口区的形参为集成的数字量输入信号(2个字节)和CPU发送的命令信号(14个字节),形参使用符号名寻址,例如集成的第一个输入信号地址表示为Din[0],而不能使用IX.X。函数块FB输出接口区的形参如表5所示:n
表5 FB输出接口区的形参n
地址 | 声明 | 名称 | 类型 | 注解 |
16.0 | out | DOut | ARRAY [0..7] | FM352-5集成的8个数字量输出,地址不能修改但是数据类型及名称可以修改 |
*0.1 | out | BOOL | ||
18.0 | out | CPU_in | STRUCT | CPU接收FM352-5的信息,14个字节,不能修改。 |
+0.0 | out | Bits | ARRAY [0..15] | 名称和数据类型都可以修改,但是通信的字节数不能超过14个字节。 |
*0.1 | out | BOOL | ||
+2.0 | out | T2_CVasByte | BYTE | |
+3.0 | out | C1_CVasByte | BYTE | |
+4.0 | out | T2_CV | INT | |
+6.0 | out | T1_CV | DINT | |
+10.0 | out | Enc_CV1 | DINT | |
=14.0 | out | END_STRUCT | 不能修改 |
输出接口区的形参为集成的数字量输出信号(2个字节)和CPU发送的命令信号(14个字节)。函数块FB静态接口区的形参如表6所示:n
表6 应用FB块的静态形参格式n
地址 | 声明 | 名称 | 类型 | 注解 |
32.0 | stat | Intr | ARRAY [0..7] | FM352-5触发过程中断的事件源,不能改变。 |
*0.1 | stat | BOOL | ||
34.0 | stat | ST | STRUCT | FM352-5模块的诊断信息,不能修改。 |
+0.0 | stat | FIRSTSCAN | BOOL | FM352-5从STOP到RUN的第一个扫描,不能修改。 |
+0.1 | stat | M3L | BOOL | 3L电源掉电,不能修改。 |
+0.2 | stat | ESSF | BOOL | 编码器电源过载,不能修改。 |
+0.3 | stat | M2L | BOOL | 2L电源掉电,不能修改。 |
+0.4 | stat | M1L | BOOL | 1 L电源掉电,不能修改。 |
+2.0 | stat | OVERLOAD | ARRAY [0..7] | 模块集成的输出信号电压过载,不能修改。 |
*0.0 | stat | BOOL | ||
=4.0 | stat | END_STRUCT | 不能修改 | |
38.0 | stat | Encoder | STRUCT | 编码器数据,如果使用编码器则不能修改,如果没有连接编码器,编码器的形参可以删除。 |
+0.0 | stat | Direction | BOOL | |
+0.1 | stat | Home | BOOL | |
+0.2 | stat | Homed | BOOL | |
+0.3 | stat | Overflow | BOOL | |
+0.4 | stat | Underflow | BOOL | |
+0.5 | stat | SSIFrame | BOOL | |
+0.6 | stat | SSIDataReady | BOOL | |
+0.7 | stat | Open_Wire | BOOL | |
+1.0 | stat | Hold | BOOL | |
+1.1 | stat | Reset | BOOL | |
+1.2 | stat | Load | BOOL | |
+2.0 | stat | Cur_Val | DINT | |
+6.0 | stat | Load_Val | DINT | |
+10.0 | stat | END_STRUCT | ||
48.0 | stat | UCtr1 | “CTU16” | 可以根据用户的需求添加FM352-5的函数块,例如FB121。加入的数量与FM352-5的资源有关。 |
60.0 | stat | FF | STRUCT | 专用于S/R,R/S触发器,不能修改。 |
+0.0 | stat | FirstFF | BOOL | 名称可以修改 数量可以根据需要增加 |
+0.1 | stat | SecondFF | BOOL | |
+0.2 | stat | ThirdFF | BOOL | |
+2.0 | stat | MoreFFs | ARRAY [0..15] | |
*0.1 | stat | BOOL | ||
=4.0 | stat | END_STRUCT | ||
64.0 | stat | Edge | STRUCT | 专用于信号沿检查,不能修改。 |
+0.0 | stat | FirstEdge | BOOL | 名称可以修改 数量可以根据需要增加 |
+0.1 | stat | SecondEdge | BOOL | |
+0.2 | stat | ThirdEdge | BOOL | |
+2.0 | stat | Edge4to10 | ARRAY [4..10] | |
*0.1 | stat | BOOL | ||
+4.0 | stat | LastEdge | BOOL | |
=6.0 | stat | END_STRUCT | ||
70.0 | stat | Co | STRUCT | 专用于连接器,相当于普通CPU的中间变量,不能修改 |
+0.0 | stat | XCon | BOOL | 名称可以修改 数量可以根据需要增加 |
+2.0 | stat | arrXCon | ARRAY [0..31] | |
*0.1 | stat | BOOL | ||
+6.0 | stat | ICon | INT | |
+8.0 | stat | arrICon | ARRAY [0..3] | |
*2.0 | stat | INT | ||
+16.0 | stat | DICon | DINT | |
+20.0 | stat | arrDICon | ARRAY [0..3] | |
*4.0 | stat | DINT | ||
=36.0 | stat | END_STRUCT |
形参“Intr”中每一个位都可以产生过程中断,产生中断在CPU中调用相应OB块,例如OB40,通过OB40中的形参“0B40_POINT_ADDR”第一个字节的8个位可以判断产生中断的事件是由“Intr”中哪一个位触发;“ST”为FM352-5模块的诊断信息;“Encoder”为编码器的数据区,可以对编码器进行读写操作;在接下来的数据区可以自由插入FM352-5专用的函数块,例如计数器和定时器等,数量与FM352-5的资源有关;“FF” 专用于S/R,R/S触发器的寄存器,不能作为其它数据区使用;“Edge” 专用于信号沿检查的寄存器,不能作为其它数据区使用;“Co” 专用于连接器,相当于普通CPU的中间变量,不能作为其它数据区使用。
FM352-5模块只能使用上面介绍的形参以符号名寻址方式编程,下面以示例的方式介绍FM352-5的编程方法,假设当FM352-5的第一个输入点为1时,使能FM352-5第一个输出点输出10KHz脉冲,脉冲频率由CPU设定并将频率设定值读回到CPU中进行校验。根据控制要求,可以使用FM352-5专用函数库中的FB119产生脉冲输出,FB119的输入、输出参数如表7所示:n
表7 FB119输入输出参数n
参数 | 数据类型 | 输入/输出 | 功能 |
ENABLE | BOOL | 输入 | 开始输入信号 |
Q | BOOL | 输出 | 脉冲输出 |
PERIOD | WORD | 输入 | 脉冲周期,最小20us |
参数“PERIOD”等于50,000除以所需要的频率,例如当“PERIOD”= W#16#C350时,输出频率为1 Hz;当“PERIOD”= W#16#1时,输出频率为50KHz;当“PERIOD”= W#16#5时,输出频率为10KHz,所以从CPU中将W#16#5赋值参数“PERIOD”就能满足控制要求。FB119的功能图如图10所示:n
图10 FB119的功能图n
当 “ENABLE”为1时,Q输出频率信号。
编程步骤如下:
1. 建立S7-300 PLC站,在硬件配置插入CPU和FM352-5,编译存盘。
2. 在SIMATIC Manager中,打开库“Library”,将“FM352-5”中函数块复制到应用
程序中。其中FB3为FM352-5示例函数块,形参格式已经按照要求建立。
3. 在硬件配置中双击FM352-5图标,点击“Programming”标签进入编程设置界面,如图11所示:n
图11 FM352-5“Programming”界面n
在“Function Block number(FB)”处键入需要编写的FB块,本例中为3,点击“Edit Application FB”,编辑FB3。
4. 在FB3接口区“OUT”中加入形参“#CPU_In.Feedback1”(地址2.0)作为FM352-5
返回CPU的信息;在接口区“IN”中加入形参“#CPU_Out.CP_Period1” (地址
10.0)作为CPU发送的命令;在“STAT”中加入FB119,命名为CP1。
5. 在FB3中编写程序如图12所示:n
图12 FB3示例程序n
“#DIn[0]”为FM352-5集成的第一个输入点,“#DOut[0]”为FM352-5集成的第一个输出点,FB119参数“#CPU_Out.CP_Period1”为CPU发送的命令,并将发送的命令再返回到CPU中,存盘后关闭FB3。
6. 分别点击图9中的第3、4、5步进行语法检查、代码编译并将FB3中的程序下载
到FM352-5中(联机状态),在编译时显示程序占用FM352-5资源的百分比。
7. 在CPU中调用FB31功能块,建立与FM352-5的通信,示例程序如下:n
CALL "I_Normal" , "NormalDB"
Run :=M1.1 //启动FM352-5
OneScan :=M1.2 //FM352-5单次扫描
LADDRIn :=L#256 //FM352-5输入逻辑地址
LADDROut:=L#256 //FM352-5输出逻辑地址
CPU_Out :=M100.0 //CPU发送的命令,从MB100开始的14个字节
CPU_In :=M120.0 //CPU接收FM352-5返回的信息,从MB120开始
的14个字节
Error :=M1.3 //通信故障位
Status :=MW2 //通信状态字n
L W#16#5 //将脉冲周期命令发送到FM352-5
T MW 110 //与#CPU_Out.CP_Period1相对应n
M1.1为1时通信建立,FM352-5运行,并将W#16#5发送到FM352-5的数据接收区#CPU_Out.CP_Period1中,这样当FM352-5第一个输入信号为1时,第一个输出点输出10KHz频率。n
6 调试
由于FM352-5并行扫描以及应用于非常快的响应,以及FM352-5是门阵列,所以模块并没有预留程序调试接口,为了便于用户对程序的调试,软件提供了模拟调试功能(DEBUG),模拟调试功能模式是通过调用FB30实现的,FM352-5模块专用函数库中的FB30为调试块,当在CPU中调用FB30时,FM352-5模块集成的输入、输出点由CPU接替控制,适合于调试阶段程序模拟,FB30、FB31不能同时调用。FB30在OB1中的调用及参数赋值如图13所示:n
图13 切换调试模式示例程序n
与正常操作模式相比较,在行参上多出“APPFB”和“APPINSTDB”两个参数,分别赋值应用的FB块如FB3及FB3的背景数据块DB(需要重新生成),当M10.0为1时执行调试程序,应用程序的执行如同14所示:n
图14 调试程序执行流程n
从图14中可以看到FM352-5的CPU被旁通,应用程序被CPU直接调用。图中红色标识框中应在FM352-5执行的程序在调试模式下由CPU接替执行,数字标识的流程如下:
1) 在OB1中调用调试FB块(interface FB),CPU将命令发送到调试FB块,由调试
FB块传送到应用FB块的背景数据块DB中的CPU_OUT区。
2) 调试FB块将FM352-5的输入信号读出。
3) 调试FB块将读出的输入信号放入到应用FB块背景数据块DB中的MOD.INPUTS区。
4) 应用程序块从背景数据块中读出输入信号(包括命令信号)进行逻辑运算。
5) 将逻辑运算结果传送到背景数据块中。
6) 背景数据块将CPU_in的数据读到CPU中。
7) 背景数据块将MOD.OUTPUTS的数据直接输出到FM352-5模块。
8) 调试FB块将应用FB块传送的数据发送到CPU中。n
7 存储器的操作
在图11中的第五步中,程序下载到MMC存储卡中,每次FM352-5模块再次上电,模块将存储于MMC卡中的程序复制到FPGA存储器中,如果上电后复位MMC卡(操作如图15所示),模块也将重新复制MMC卡中的程序到FPGA中。n
图15 存储器的复位n
从MMC卡复制程序到FPGA中相当于重新连接逻辑单元和功能单元,模块运行后MMC可以拔插而不会影响模块的运行,但是模块复位和再次上电时要再次复制程序而不能拔下MMC卡。
程序下载到模块后,在MMC中生成系统数据SDB 32512(硬件配置与程序),通过PG或带有MMC卡适配器的PC可以将程序上载上来,但是源代码的保护,程序不能再次下载到其他MMC中,如果PC机上带有源程序则没有任何下载限制。n
8 FM352-5的编程资源
前面介绍过FM352-5使用可编辑元件实现一些基本的逻辑门电路,所以模块的编程资源是有限的,以份为单位共1200份,其中436份已被诊断或硬件配置占用,每个指令或多或少都需要占用编程资源,参考表8:n
表8 指令占用FM352-5的编程资源n
指令 | 所占的 | 指令 | 所占的份数 | 指令 | 所占的 | 指令 | 所占的 |
份数 | 份数 | 份数 | |||||
触发器类型 | 移位寄存器类型 | BitCast_W_U | 0 | 逻辑操作类型 | |||
(接上) | |||||||
BISCALE* | 2 | SHR_W* | 34 | BitPack_DW* | 17 | AND | 1 |
CP_GEN* | 29 | SHR_W_U | 34 | BitPack_DW_U | 0 | OR | 1 |
POS* | 2 | FIFO32* | 19 | BitPack_W* | 9 | XOR | 1 |
NEG* | 2 | FIFO16* | 19 | BitPack_W_U | 0 | 字逻辑操作类型 | |
SR* | 1 | LIFO32* | 21 | BitInsert32* | 33 | WAND_W* | 9 |
RS* | 1 | LIFO16* | 21 | BitInsert32_U | 32 | WAND_W_U | 8 |
计数器类型 | BitShift_DW* | 17 | BitInsert16* | 17 | WAND_DW* | 17 | |
CTD16* | 36 | BitShift_W* | 19 | BitInsert16_U | 16 | WOR_DW_U | 16 |
CTU16* | 31 | 运算指令类型 | 编码器类型 | WOR_W* | 9 | ||
CTUD16* | 47 | FMABS16 | 18 | Encoder 16 bit | 64 | WOR_DW* | 17 |
CTUD32* | 99 | FMABS32 | 37 | Encoder 32 bit | 117 | WOR_W_U | 8 |
定时器类型 | FMADD16 | 9 | SSI master 13 bit | 61 | WOR_DW_U | 16 | |
TOF16* | 26 | FMADD32 | 17 | SSI master 25 | 100 | WXOR_DW* | 17 |
bit | |||||||
TOF32* | 55 | FMDIV16* | 86 | SSI listen 16 | 77 | WXOR_DW_U | 16 |
bit | |||||||
TON16* | 25 | FMDIV32* | 153 | SSI listen 32 | 122 | WXOR_W* | 9 |
bit | |||||||
TON32* | 53 | FMMUL16* | 62 | None | 0 | WXOR_W_U | 8 |
TP16* | 26 | FMMUL32* | 118 | 比较器类型 | 其它类型 | ||
TP32* | 54 | BITSUM* | 21 | CMP16_EQ | 6 | FREQ32* | 71 |
移位寄存器类型 | BITSUM_U | 21 | CMP16_GE | 8 | FREQ16* | 51 | |
SHIFT* | 18 | ENCODE* | 19 | CMP16_GT | 8 | PERIOD32* | 43 |
SHIFT2* | 18 | ENCODE_U | 19 | CMP16_LE | 8 | PERIOD16* | 23 |
SHIFT4* | 18 | 数据传送类型 | CMP16_LT | 8 | == (INT) | 6 | |
SHIFT8* | 19 | MOVE | 17 | CMP16_NE | 6 | >= (INT) | 8 |
(锁存) | |||||||
SHIFT16* | 21 | MOVE_U | 0 | CMP32_EQ | 11 | > (INT) | 8 |
(无锁存) | |||||||
SHIFT32* | 29 | DATSEL16 | 8 | CMP32_GE | 25 | <= (INT) | 8 |
SHR_I* | 36 | DATSEL32 | 16 | CMP32_GT | 25 | < (INT) | 8 |
SHR_I_U | 36 | WordPack* | 17 | CMP32_LE | 25 | <> (INT) | 6 |
SHR_DI* | 88 | WordPack_U | 0 | CMP32_LT | 25 | == (DINT) | 11 |
SHR_DI_U | 87 | WordCast* | 17 | CMP32_NE | 11 | >= (DINT) | 25 |
ROL_DW* | 81 | WordCast_U | 0 | 转换类型 | > (DINT) | 25 | |
ROL_DW_U | 80 | BitPick_DW* | 10 | I_DI* | 9 | <= (DINT) | 25 |
SHL_DW* | 81 | BitPick_DW_U | 10 | I_DI_U | 0 | < (DINT) | 25 |
SHL_DW_U | 80 | BitPick_W* | 5 | INV_DI* | 17 | <> (DINT) | 11 |
SHL_W* | 35 | BitPick_W_U | 5 | INV_DI_U | 0 | ||
SHL_W_U | 34 | BitCast_DW* | 17 | INV_I* | 9 | ||
SHR_DW* | 81 | BitCast_DW_U | 0 | INV_I_U | 0 | ||
SHR_DW_U | 81 | BitCast_W* | 9 |
注意:
*号表示指令具有存储功能,需要多项时钟控制;_U表示没有锁存功能和存储功能。n
除此之外诊断和中断也需要占用FM352-5的资源,参考表9:n
表9 诊断和中断占用FM352-5的资源n
参数 | 所占的份数 |
模块诊断硬件支持 | |
I L电源掉电 | 3 |
2L电源掉电 | 11 |
编码器电源故障 | 12 |
3L电源掉电 | 11 |
SSI编码器值溢出 | 34 |
差分输入编码器断线 | 10 |
输出诊断硬件支持 | |
输出过载Q0~Q7 | 每个12个 |
过程中断硬件支持 | |
过程中断 0~7 | 每个4个 |
在编写程序时需要注意使用指令的次数以避免超出FM352-5的限制,用户程序在编译时会提示所占总资源的百分比,可以先编写部分程序,根据容量提示优化程序。
9 FM352-5应用-测量速度
通过FM352-5的快速输入信号可以测量物体的行走速度,例如汽车的瞬时速度如图16所示:
图16 速度测量
通过下面的方法进行速度测量:
1) 由于一个扫描周期固定为1 цs,在程序中利用内部变量可以生成一个频率为500KHZ
的脉冲。
2) 使用第一个光栅触发计数器计数,信号源为500KHZ的脉冲。
3) 使用第二个光栅停止计数器计数。
4) 读出计数值并转换为速度值。
使用FM352-5测量两个光栅间的瞬时速度最高可以达到300km/hr,精度小于0.1% (<5 µs)。使用FM350-1模块利用内部1MHZ的脉冲以及集成的输入也可以进行速度测量,但是FM352-5可以进行多路测量并且可以进行简单编程。
关键词
FM352-5 接线、参数说明、编程
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc326872.html