在CFC中如何连接DB块中的变量
CFC编程常见问题
CFC编程常见问题目录1、CFC里能不能调用LAD/STL编写的FC/FB2、如何查看CFC中给用户预留的FC/DB范围3、修改FC/DB块范围时报错4、CFC中如何监控功能块和变量5、如何禁用部分CFC的执行6、CFC编译时为何将创建的OB块删除了7、没有驱动块的CFC程序编译时如何自动生成诊断OB8、如何将CFC的Chart编译成一个功能块9、如何一次打印所有的CFC10、如何将IO管脚的数据类型显示出来11、CFC中使用IN_OUT管脚,为何只能接输入12、CFC中的功能块的EN管脚能否通过逻辑来控制13、CFC编译时为何报超过64K的上限问题1.CFC里能不能调用LAD/STL编写的FC/FB在CFC中可以调用其他编程语言编写的FC/FB,例如使用LAD编写的设备逻辑处理代码等。
使用LAD/STL等编写FC/DB时需要注意功能块号的选择,具体信息请参考问题2;问题2.如何查看CFC中给用户预留的FC/DB范围在CFC的编程窗口中,依次打开菜单项“Options”→“ Customize”→“Compile/Download”:在弹出的窗口中,“Areas Reserved for Other Applications”中可以设置和查看给用户预留的FC和DB范围:问题3.修改FC/DB块范围时报错CFC编译过程中会根据Chart中插入的功能块和运行组的设置,自动创建FC和DB块。
如果程序中还有通过LAD/STL/FBD创建的FC和DB,在CFC编译过程中为了保护这些用户代码,可以指定哪些范围中的FC和DB块被保留。
根据实际需要可以调整预留的FC和DB块的范围,但在调整过程中,可能会弹出如下错误提示:导致这个问题的原因是设置的新范围并不能涵盖所有用户自定义的FC/DB。
可以将涉及到的FC/DB修改块号来适应新的范围。
在FC/DB的范围设置窗口中还可以通过“Compress”选项来调整CFC相关的FC/DB以实现块号的连贯性。
分享:西门子PLCDB块变量一键转换为MCGS触摸屏变量
分享:西门子PLCDB块变量一键转换为MCGS触摸屏变量
西门子PLC DB块变量一键转换为MCGS触摸屏变量软件,文末附链接。
1.博图DB块必须为非优化,使变量具有偏移量。
2.在博图里添加一个HMI,精简屏精致屏都可以。
3.将需要在HMI中操作的DB变量拖入HMI的变量表,结构体、数据类型、数组等展开添加里边的变量,不能直接添加,在HMI变量的访问模式选择绝对地址。
目前支持的数据类型有 bool byte int uint dint word dword real。
4.导出HMI标签
5.打开昆仑通态触摸屏软件,在设备窗口把设备信息导出。
6.打开转换软件,选择西门子HMI导出的文件和昆仑通态触摸屏软件导出的文件,点击开始生成,弹出生成完成后再用昆仑通态触摸屏软件在设备窗口把设备信息导入,完成!。
PLC编程语言CFC(连续功能块图) - plc
PLC编程语言CFC(连续功能块图) - plc IEC61131-3标准中,制定了plc 的六种编程语言,分别是IL,LD,FBD,ST,CFC,SFC。
它们各有千秋,适用不同的场合。
今天就跟大家介绍一下CFC。
CFC,是指连续功能块图。
有些人认为它是dcs的编程语言,其实这种认识是片面的,是盲人摸象的认知,最初,这种语言主要用在过程控制中,比如西门子的PCS7,以及各种DCS系统中。
因为过程控制就是一系列连续的控制,比如,各种化学反应,都是一环套一环,而连续功能图正好符合这种控制要求,所以就在DCS中大规模应用。
其实,PLC也是可以用这种编程方式的,毕竟编程不是目的,实现工艺才是目的,只不过这种语言在PLC中应用很少,我第一次接触也是在CODESYS的PLC中。
其实,CFC 就是一种可以自由移动的FBD,它比FBD更自由更灵活。
只要你掌握了FBD,就可以轻松掌握CFC,而FBD,又和LD有着千丝万缕的联系。
所以,CFC是一种非常简单,容易入手的编程语言。
我们不妨看一个例子CFC编程语言如上图所示,这是一个典型的CFC编程语言,这段程序是PLC通过以太网口使用MODBUSTCP协议和远程机器人交互数据,程序我只截取了一部分,但已经包含了大部分CFC的元素。
黄色荧光笔部分:这部分是程序的注释,你可以自由输入各种文本,PLC是不会编译的。
红色圆圈部分:这部分是个黑点,和我们电路图中的实心点的意思是一样的,表示电路是相交相通的。
蓝色圆圈部分:这部分没有黑点,同样,和电路图是一样的,表示电路是相交但不相通。
淡蓝色圆圈部分:数字是软件自动加上的,表示执行顺序,什么意思呢?PLC是循环扫描的,由于CFC可以自由移动,因此,循环扫描可能没梯形图那么直观,就加上数字,表示扫描顺序。
以上,就是CFC 的关键元素,至于其他的输入,输出,功能块调用和FBD是一模一样的。
个人认为,CFC可以自由移动的原因,在高速计数,运动控制,总线通讯等大批量使用功能块,而且功能块之间联系很多的场合是非常方便的。
CFC常见问题
CFC常见问题1、为了能对DB 和FC 进行编程,而不受CFC 影响,DB 和FC 如何在编译过程中保持不被占用的状态?( 8 KB ) ( 11 KB )( 10 KB ) ( 19 KB )描述:在CFC中生成的S7-SCL 源代码不能在S7-SCL 中直接打开和编译。
上述现象和信息可能会在大的CFC项目中出现,并且在有大量S7-SCL 源代码的情况下也会出现。
SCL 编译器的注意事项:当使用S7-SCL 编译器编译图表时,请确认在一个任务或运行系统组中没有安装太多块;否则,块就会变得太多和太大,导致S7-SCL 编译器出现上述错误信息。
可通过分割块为几个运行系统组以避免这一情况。
在编译过程中会产生一些小的函数( FC) 。
在S7-SCL编译器中大的CFC 结构的编译过程需要花很长时间;在某些情况下,可能会有几分钟没有进程指示。
补救措施:消息∙“块中符号名称太多”∙“因语法错误编译中止”会出现在,块生成时超出了S7-SCL 编译器中的内部系统限制。
这是因为调用了太多块(例如OB35) 或块的符号名称太长,因此您应将块调用拆分成不同的运行系统组。
相关的更多信息可见手册“S7连续功能图的CFC ”(条目号1139062)。
注意:如果您仍然使用S7-SCL 版本V5.1,我们推荐您安装SP5 (Service Pack 5)。
您可以通过条目号17061717下载。
为什么插入到块文件夹中的错误OB在编译过程中被删除?而且也没有生成CFC中已组态的OB84?描述:在CFC选项包中,编程到块文件夹中的空的错误OB会在编译过程中自动删除。
结果,所要的OB没有在加载过程中传送到控制器中。
补救措施:插入一个无意义的块(如NAND)到CFC图中。
打开“运行时间顺序”窗口(“编辑>运行时间顺序”)并将此块放到所要的OB中。
因此,在编译过程中CFC就会生成组织块。
注意事项:当驱动发生器在PCS 7的范围内使用时会自动生成错误的OB。
cfc中fc自定义范围的疑惑?
cfc中fc自定义范围的疑惑?
1.cfc中fc默认为60-700,db为db1-db60。
但我在程序中用到了max4_r,发现它为fc65,这不会和自定义的冲突了吗?
2.如果我只用到基本功能块,就可以用fc65了?
3.是不是只要在60-700的范围,并且不和要调用的其他功能块冲突就可以了?
4.如果程序中要用到很多定时器time_p,这些定时器是放在ob1中还是在ob35中?
问题补充:
程序中要用到多个接通延迟定时器,我用的是time_p。
可现在的问题是:用plcsim仿真后,发现延迟时间并没到就触发输出了。
请问是什么原因?该怎么做?
最佳答案
1.这个范围是给cfc编译后生成fc,db用的,所以我们自己在cfc里拖的fc块不在这个范围,可以在开始就调整好,例如,将fc0-1399给用户留着,这样编译时自动生成的程序从fc1400开始。
db区同样可以调整,但是不要在生产起来后调整,要停机下载的。
2。
楼主的判断是正确的。
3。
timper—p一定要放在ob3x等循环ob里,不能放ob1
里,因为这个块是靠判断被调用的次数乘以扫描时间来计时的,ob1的扫描时间不固定,所以计时会不准。
PCS7_DB变量上传
问题:如何实现PCS7中DB块中变量的自动上传?
解答:
1.首先插入一个全局数据块。
注意:数据块号必须符合要求,可以参考PCS7中定义的预留DB块的范围,默认为1-60(打开CFC,然后点击 “Options->Customize-
>Compile/Download” 。
)
2.在数据块中定义数据结构和格式,并设置需要上传的变量的属
性,打开变量的OCM功能。
具体操作依次如下图所示。
<定义上传变量的属性>:鼠标右键点击所需上传的变量,选择“Object Properties”
<加入S7_m_c属性,注意字母的大小写,S7_m_c:=True >
定义此变量的属性,其中“S7_m_c”表示此变量可上传到WinCC。
例如:变量“DB_VAR”
<加入属性后的变量标识>
若变量定义属性后,会包含一个类似小红旗的表示,如图所示。
3.定义数据块的属性,打开OCM功能并定制上传变量的格式转
换。
具体操作依次如下图所示。
<定义数据块属性 >
鼠标右键点击所需上传的DB块,选择“ Operator Control and Monitoring…”,此处为DB 50。
<打开OCM功能,并定制转换格式>
选中“Operator Control and Monitoring”,表示此DB块可以上传。
4.编译OS,相应的变量就可以自动上传到Wincc项目中。
<编译OS>
<被上传的变量>
此处DB50.DB_VAR为DB50中上传上来的变量DB_VAR。
PCS7_V8.2的CFC的常用功能与操作
PCS7_V8.2的CFC的常用功能与操作
调用在线帮助信息 (1)
互联到地址 (1)
互连两个块 (2)
为CFC中调用的功能块进行设置 (2)
为CFC中调用的功能块的 I/O进行设置 (3)
显示隐藏的 I/O (5)
切换 CFC 视图 (5)
CFC的运行组顺序 (5)
CFC编译和下载 (7)
CFC编译/下载的选项设置 (8)
CFC 测试 (9)
对FB进行使能/禁用 (10)
对IO值进行取反 (11)
为IO数据设置OS变量归档 (12)
回读(Read back) (13)
块清理与块更新 (14)
交叉索引(Cross Reference) (14)
调用在线帮助信息
选择CFC 图表任意位置单击F1,调出CFC帮助
选择具体的功能块,例如一个APL库功能块,单击F1 键,将调出该库(如APL)的帮助文件
互联到地址
可以为CFC中的功能块关联的实际的IO地址、M区地址、DB块地址。
选中IO右键->Interconnection to Address,如果为数据定义了符号名并且数据格式与IO匹配,则自动出现在下拉列表中。
否则需要手动输入绝对地址。
互联的数据可以是简单数据类型或结构体类型,不支持指针访问。
互连两个块
先选择一个块的输出,然后再选择另一个块的输入,将这两个参数进行互连。
在进行互连时,无需考虑选择的顺序。
要在两个图表之间建立互连,则需打开这两个图表。
然后单击一个图中的输出,再单击另一个图中的输入(选择顺序可不同)。
为CFC中调用的功能块进行设置
双击功能块进行属性设置。
WinCC STEP7 DB块中的变量如何直接导入WinCC变量表
WinCC STEP7 DB块中的变量如何直接导入WinCC变量表?(2011-04-07 22:04:02)转载▼标签:分类:PLC杂谈1、从WinCC里调用STEP 7 变量的意义和前提条件2、在Simatic Manager里建立新的WinCC项目3、把现成的WinCC项目集成到STEP 7 项目中4、把变量(符号表,共享DB)从STEP 7传送到WinCC里5、在WinCC里直接调用STEP 7的符号表或共享DB块里的变量该文档的软件环境:Windows XP Professional SP1 EnglishWinCC V6.0 SP2 HF2 EuropeSTEP 7 V5.3 SP11、从WinCC里调用STEP 7 变量的前提条件从WinCC里调用STEP 7 变量可以将建立变量的工作量减少一半,同时将建立变量的出错概率建设一半,从而减少了相应的排错工作,大大提高了工作效率。
从WinCC里调用STEP 7 变量的前提条件是,WinCC的项目文件必须是集成在STEP 7项目中的。
在安装所有Simatic 软件前,请查阅软件的安装注意事项,确定操作系统与软件的兼容性。
该文档一般位于:CD\Documents\<语言版本>\InstallNotes.chm。
要使用WinCC与STEP 7的集成功能,WinCC和STEP 7必须安装在同一台计算机上,必须在安装WinCC之前安装STEP 7。
STEP 7 与WinCC的版本必须一致。
WinCC与STEP 7的版本兼容行列表可以在西门子自动化与驱动集团的技术支持与服务网站上获得。
请STEP 7安装完毕后,进行WinCC安装。
在WinCC安装过程中,请选择“自定义安装”,并且选中下图中红框标识的选件:图 1. 与集成相关的WinCC组件2、在Simatic Manager里建立新的WinCC项目在建立新的STEP 7项目后,可以在Simatic Manager里直接建立新的WinCC项目。
STEP7_DB块中的变量如何直接导入WinCC变量表
STEP7 DB块中的变量如何直接导入WinCC变量表?一、从WinCC里调用STEP 7 变量的前提条件从WinCC里调用STEP 7 变量可以将建立变量的工作量减少一半,同时将建立变量的出错概率建设一半,从而减少了相应的排错工作,大大提高了工作效率。
从WinCC里调用STEP 7 变量的前提条件是,WinCC的项目文件必须是集成在STEP 7项目中的。
在安装所有Simatic 软件前,请查阅软件的安装注意事项,确定操作系统与软件的兼容性。
该文档一般位于:CD\Documents\<语言版本>\InstallNotes.chm。
要使用WinCC与STEP 7的集成功能,WinCC和STEP 7必须安装在同一台计算机上,必须在安装WinCC之前安装STEP 7。
STEP 7 与WinCC的版本必须一致。
WinCC 与STEP 7的版本兼容行列表可以在西门子自动化与驱动集团的技术支持与服务网站上获得。
请STEP 7安装完毕后,进行WinCC安装。
在WinCC安装过程中,请选择“自定义安装”,在communitation 下的所有选项都必须钩选。
二、在Simatic Manager里建立新的WinCC项目在建立新的STEP 7项目后,可以在Simatic Manager里直接建立新的WinCC项目。
方法是在Simatic Manager里,右键点击项目名称,选择“Insert New Object\OS”。
此时系统会在STEP 7 项目文件里建立一个WinCC项目文件你可以在OS站上点击右键,选择“Re name”来修改WinCC项目名称。
可以通过在名称上点击右键,选择“Open Object”打开并编辑这个WinCC项目三、把现成的WinCC项目集成到STEP 7 项目中按如下步骤把已有WinCC项目文件插入STEP 7项目文件A. 在STEP 7项目文件中插入一个OS站,然后把它改名为已有的WinCC项目名称。
WinCC STEP7 DB块中的变量如何直接导入WinCC变量表-推荐下载
WinCC STEP7 DB块中的变量如何直接导入WinCC变量表?(2011-04-07 22:04:02)转载▼标签:分类:PLC杂谈1、从WinCC里调用STEP 7 变量的意义和前提条件2、在Simatic Manager里建立新的WinCC项目3、把现成的WinCC项目集成到STEP 7 项目中4、把变量(符号表,共享DB)从STEP 7传送到WinCC里5、在WinCC里直接调用STEP 7的符号表或共享DB块里的变量该文档的软件环境:Windows XP Professional SP1 EnglishWinCC V6.0 SP2 HF2 EuropeSTEP 7 V5.3 SP11、从WinCC里调用STEP 7 变量的前提条件从WinCC里调用STEP 7 变量可以将建立变量的工作量减少一半,同时将建立变量的出错概率建设一半,从而减少了相应的排错工作,大大提高了工作效率。
从WinCC里调用STEP 7 变量的前提条件是,WinCC的项目文件必须是集成在STEP 7项目中的。
在安装所有Simatic 软件前,请查阅软件的安装注意事项,确定操作系统与软件的兼容性。
该文档一般位于:CD\Documents\<语言版本>\InstallNotes.chm。
要使用WinCC与STEP 7的集成功能,WinCC和STEP 7必须安装在同一台计算机上,必须在安装WinCC之前安装STEP 7。
STEP 7 与WinCC的版本必须一致。
WinCC与STEP 7的版本兼容行列表可以在西门子自动化与驱动集团的技术支持与服务网站上获得。
请STEP 7安装完毕后,进行WinCC安装。
在WinCC安装过程中,请选择“自定义安装”,并且选中下图中红框标识的选件:图 1. 与集成相关的WinCC组件2、在Simatic Manager里建立新的WinCC项目在建立新的STEP 7项目后,可以在Simatic Manager里直接建立新的WinCC项目。
STEP7 DB块中的变量如何直接导入WinCC变量表
STEP7 DB块中的变量如何直接导入WinCC变量表1、从WinCC里调用STEP 7 变量的意义和前提条件2、在Simatic Manager里建立新的WinCC项目3、把现成的WinCC项目集成到STEP 7 项目中4、把变量(符号表,共享DB)从STEP 7传送到WinCC里5、在WinCC里直接调用STEP 7的符号表或共享DB块里的变量该文档的软件环境:Windows XP Professional SP1 EnglishWinCC V6.0 SP2 HF2 EuropeSTEP 7 V5.3 SP11、从WinCC里调用STEP 7 变量的前提条件从WinCC里调用STEP 7 变量可以将建立变量的工作量减少一半,同时将建立变量的出错概率建设一半,从而减少了相应的排错工作,大大提高了工作效率。
从WinCC里调用STEP 7 变量的前提条件是,WinCC的项目文件必须是集成在STEP 7项目中的。
在安装所有Simatic 软件前,请查阅软件的安装注意事项,确定操作系统与软件的兼容性。
该文档一般位于:CDDocuments<语言版本>InstallNotes.chm。
要使用WinCC与STEP 7的集成功能,WinCC和STEP 7必须安装在同一台计算机上,必须在安装WinCC之前安装STEP 7。
STEP 7 与WinCC的版本必须一致。
WinCC与STEP 7的版本兼容行列表可以在西门子自动化与驱动集团的技术支持与服务网站上获得。
请STEP 7安装完毕后,进行WinCC安装。
在WinCC安装过程中,请选择“自定义安装”,并且选中下图中红框标识的选件:图1. 与集成相关的WinCC组件2、在Simatic Manager里建立新的WinCC项目在建立新的STEP 7项目后,可以在Simatic Manager里直接建立新的WinCC 项目。
方法是在Simatic Manager里,右键点击项目名称,选择“Insert New ObjectOS”。
如何实现PCS7中DB块中变量的自动上传
如何实现PCS7中DB块中变量的自动上传如何实现PCS7中DB块中变量的自动上传?PCS7下,所有CFC中的变量都通过编译的方式自动上传的OS项目中,针对自定义的DB块同样也可以通过设置相关属性自动上传的OS中,具体操作如下:1. 插入一个全局数据块。
注意:数据块号必须符合要求,可以参考PCS7中定 ...PCS7下,所有CFC中的变量都通过编译的方式自动上传的OS项目中,针对自定义的DB块同样也可以通过设置相关属性自动上传的OS中,具体操作如下:1. 插入一个全局数据块。
注意:数据块号必须符合要求,可以参考PCS7中定义的预留DB 块的范围,默认为1-60(打开CFC,然后点击“Options->Customize->Compile/Download” 查看设置。
)Pic1:设置自定义DB块范围2. 在数据块中定义数据结构和格式,并设置需要上传的变量的属性,打开变量的OCM功能。
具体操作依次如下图所示。
(注意:DB块中变量自动上传的功能不支持格式/量程转换,不支持复杂结构变量,例如数组、结构体等)Pic2:定义上传变量的属性Pic3:加入S7_m_c属性定义此变量的属性,其中“S7_m_c”表示此变量可上传到WinCC,注意字母的大小写。
例如:变量“DB_VAR”Pic4:加入属性后的变量标识若变量定义属性后,会包含一个类似小红旗的表示,如图Pic4所示。
3. 定义数据块的属性,打开OCM功能并定制上传变量的格式转换。
具体操作依次如下图所示。
Pic5:定义数据块属性鼠标右键点击所需上传的DB块,选择“ Operator Control and Monitoring…”,此处为DB 50。
Pic6:打开OCM功能选中“Operator Control and Monitoring”,表示此DB块可以上传。
4. 编译OS,相应的变量就可以自动上传到Wincc项目中。
Pic7:编译OSPic8:被上传到OS的变量此处DB50.DB_VAR为DB50中上传上来的变量DB_VAR。
plc中不同的db块数据传送至同一db块中的方法(一)
plc中不同的db块数据传送至同一db块中的方法(一)PLC中不同的DB块数据传送至同一DB块中引言在PLC编程中,经常会遇到需要将不同的DB(Data Block)块中的数据传送至同一个DB块中的需求。
这种需求一般发生在需要对来自不同部分的数据进行汇总和分析的情况下。
本文将详细说明多种方法来实现这一需求。
方法一:使用数据块间的复制指令1.新建一个DB模块用于接收和存储其他DB块的数据。
2.使用PLC编程软件中提供的数据块间的复制(COPY)指令,将其他DB块中的数据复制至接收DB块中。
3.在复制过程中,可以根据需要选择复制整个DB块还是只复制其中的部分数据。
4.定期调用复制指令,以确保接收DB块中的数据是最新的。
方法二:使用数据块之间的读写操作1.在接收DB块中定义与其他DB块相同的数据结构。
2.使用数据块之间的读写操作,将其他DB块中的数据逐个读取,并写入接收DB块中。
3.可以采用循环的方式,依次读取每个DB块,将数据写入接收DB块中。
4.在写入过程中,需要注意保持数据的一致性,以避免数据冲突和丢失。
方法三:使用定时中断1.设置一个定时中断,定时触发数据传送操作。
2.在定时中断发生时,依次读取其他DB块的数据,并写入接收DB块中。
3.使用定时中断可以实现按照设定的频率自动执行数据传送操作,无需手动触发。
方法四:使用PLC的事件触发功能1.利用PLC编程软件提供的事件触发功能,在特定的事件(如状态变化、数据更新等)发生时执行数据传送操作。
2.将其他DB块中的数据读取,并写入接收DB块中。
3.通过设置适当的事件触发条件,可以确保数据传送操作能够在需要的时候自动执行。
方法五:使用程序块调用1.在PLC编程中定义一个新的程序块,用于执行数据传送操作。
2.在程序块中依次读取其他DB块中的数据,并写入接收DB块中。
3.在主程序中调用该程序块,以触发数据传送操作。
4.可以根据实际需要设置程序块的调用频率和执行逻辑。
存储过程中的拼接变量用法
存储过程中的拼接变量用法在数据库编程中,存储过程是一个非常重要的工具,它让我们可以在数据库中写一些复杂的逻辑,然后通过调用这些存储过程来执行。
你想想看,不用每次都重新写一堆SQL 语句,直接调用存储过程,简直就是懒人的福音!但是在这过程中,拼接变量这件事儿,很多小伙伴可能就头疼了。
今天咱们就来聊聊这个话题,看看怎么在存储过程中用好拼接变量,既简单又高效。
啥叫拼接变量呢?你可以理解为把一些字符串或者变量连接在一起,组成一个新的字符串。
举个例子,假如你有一个变量存储了用户的名字,另一个变量存储了用户的年龄,然后你想输出一句话,告诉别人“用户小明今年30岁”。
那咋办呢?很简单,拼接呀!你把这两个变量合并成一个字符串,输出的结果就是“用户小明今年30岁”了。
这种操作在 SQL 里是非常常见的,尤其是在存储过程中,用得最多。
别看拼接变量这么简单,有时候它的坑可多了,稍不留神就会出问题。
比如有个朋友,曾经在拼接字符串的时候,直接用的是“+”号,结果竟然报错了!其实在 SQL 中,字符串拼接不是用加法运算符“+”,而是要用“CONCAT”函数。
你看看,这么简单的事情,如果不注意细节,可能就浪费了大把时间。
可是换个角度想,拼接变量就像做饭一样,材料准备好,火候控制得当,做出来的饭菜才能美味。
犯个小错,饭就会糊了!要是你在存储过程中用拼接变量,没掌握好方法,往往还会碰到另一个问题——SQL 注入。
这是啥意思呢?就是说,如果你不小心把外部用户的输入直接拼接到 SQL查询语句中,黑客就可能通过特殊字符来操控你的 SQL 语句,搞得数据库鸡飞狗跳,损失惨重。
你想想,如果你不小心把“'; DROP TABLE users;”这串恶意字符拼接到 SQL 语句里,等于给黑客打开了数据库的大门!所以,在拼接变量的时候,一定要特别小心,千万不要把不受信任的输入直接拼接进 SQL 语句里。
记住,防范SQL注入才是王道,永远不要让用户的输入直接成为你的 SQL 语句的一部分。
在CFC中如何连接DB块中的变量
在CFC中如何连接DB块中的变量How to connect DB variables in CFCKey WordsCFC, DB, Variable connection问题:在CFC中,如何将DB块中的变量连接到块引脚?解答:1. 对于DB块中定义的基本变量类型,可以在CFC中直接连接到该变量的符号名。
前提是CFC中块引脚的数据类型定义与DB块中的数据类型一致。
例如,引脚定义为Real类型,则可以连接到DB块中定义为Real类型的变量。
如果类型不同,即使数据长度一致也无法连接,例如Real和DWORD无法连接。
如下图所示:DB块中的变量定义引脚的定义CFC中的连接2. ANY类型的引脚可以连接到DB块中的任何类型的变量,包括基本类型和ARRAY,STRUCT等复杂类型。
如下图所示:引脚的定义3. 如果要连接复杂变量类型(例如ARRAY, UDT, STRUCT等)中的某个变量,则无法通过符号名称连接,这种情况下只能使用绝对地址连接。
绝对地址的引用语法如下:变量类型引用语法示例bit db1.dx2.0byte db1.db2word db1.dw2dword db1.dd2在CFC中,绝对地址引用可以直接连接到BOOL,BYTE,WORD和DWORD类型的引脚上,但是无法连接到Int, Dint, Real等类型的引脚。
如果要连接此类引脚,还需要在连接之前通过类型转换块进行转换。
在下图所示例子中,要将一个Int类型的引脚连接到DB块中一个包含5个Int值的Array变量的第二个值。
Array的起始地址为18,因此第二个值的地址为20。
在CFC 中应该连接的地址为“DB1.DW20”,由于Int类型的引脚无法直接连接,因此通过W_I转换块实现连接。
CFC 中的连接DB块中的定义附录-推荐网址PCS7西门子(中国)有限公司自动化与驱动集团客户服务与支持中心网站首页:/Service/专家推荐精品文档:/Service/recommend.aspPCS7常问问题:/CN/view/zh/10806846/133000 PCS7更新信息:/CN/view/zh/10806846/133400。
CFC连续功能图
1. 置首 把选中元素移到执行顺序的首端。如果选中多个 元素执行这个命令时,选中元素的原有的内部顺 序保持不变;未选中元素的内部顺序也保持不变 ,下图说明此功能:
如选中图7中3号元素执行置首命令后执行顺序如下 :
命令执行完成后,原3号元素标号变为了0号。其他 元素的序号也做了调整,但依旧保持了原先的执 行顺序。
• CFC 是连续功能块图(Continuous Function Chart )的简称。 • CFC 是一种图形化的编程语言。CFC 基于FBD 语 言,但没有“节”的限制,摆放元素更加灵活。 。元素可以摆放在编程区任意位置。用鼠标拖拽 在元素之间连线,当元素移动位置时,编辑器会 自动调整连线长度。如果连接线因为缺乏空间不 能画出,在输入和相关的输出之间出现一个红线 ,这个红线只有当空间充足时才转化为连接线。
CFC元素
编排器
编排器用于结构体类型的运算块输入。编排器会 显示结构体的所有成员,以方便编程人员使用它们。 使用方法是:先增加一个编排器到编辑器中,修改 “???”为要使用的结构体名字,然后连接编排器的 输出引脚和运算块的输入引脚。
CFC元素
选择器
选择器用于结构体类型的运算块输出。选择器会 显示结构体的所有成员,以方便编程人员使用它们。 使用方法是:先增加一个选择器到编辑器中,修改 “???”为要使用的结构体名字,然后连接选择器的 输出引脚和运算块的输出引脚。
5. 插入元素 CFC 的元素包括块、 输入、输出、跳转、 标记、返回和注释等 具体参考下表:
3.5.3 CFC元素的执行顺序
CFC 语言中运算块、输出、跳转、返回和标签 元素的右上角的数字,显示了在线模式下CFC中元 素的执行顺序。执行流程从编号为0的元素开始。 考虑到执行顺序会影响到结果,在一定情况下可 以改变执行顺序。操作在菜单“CFC” 下的“执 行顺序”中的子菜单命令可以改变元素的执行顺 序。 执行顺序包含的命令有:置首、置尾、向上移 动、向下移动、设置执行顺序、按数据流排序、 按拓扑排序。
SCL访问DB
SCL访问DB•可以在块中访问数据块号,输入管脚填起始地址。
如果使用的是BLOCK_DB数据类型,也可以直接连接数据块。
优点是,CFC中可以直接显示符号名。
•可以将数据块与一个ANY指针相连。
优点是,可以连接数据块中的某个变量,这个变量可以作为访问数据的起始点。
例程包括这两种情况的SCL代码。
以下是程序中使用的数据块。
通过数据块号访问:FUNCTION FC601 : VOIDVAR_INPUTDB_NO : BLOCK_DB; // Number of the Data-BlockSTRT_ADD : INT; // Start address in the DBEND_VARVAR_OUTPUTQ_DB : INT;Q_INT1 : INT;Q_REAL1 : REAL;Q_WORD1 : WORD;Q_BOOL1 : BOOL;END_VARQ_DB := WORD_TO_INT (BLOCK_DB_TO_WORD (DB_NO));// absolute addressing from start addressQ_INT1 := WORD_TO_INT (DB_NO.DW[STRT_ADD + 0]);Q_REAL1 := DINT_TO_REAL (DWORD_TO_DINT (DB_NO.DD[STRT_ADD + 2]));Q_WORD1 := DB_NO.DW[STRT_ADD + 6];Q_BOOL1 := DB_No.DX[STRT_ADD + 8, 0];END_FUNCTION请注意,BLOCK_DB数据类型仅针对于输入参数。
如果要使用输出参数或者输入输出参数,必须使用不同的数据类型,并通过转换功能块后再访问数据。
(比如INT_TO_BLOCK_DB)。
过ANY指针访问:ANY指针格式在STEP 7在线帮助中有具体说明(标题: "Format of the ANY parameter type")。
db块的用法
DB块用于存储用户数据及程序的中间变量,为全局变量。
DB的最大容量根据不同的系统有所不同,例如S7-300的最大容量为32KB,S7-400的最大容量为64KB。
DB块有两种使用形态:一种是使用DB块的符号地址,另一种是取消勾选“优化的块访问”,使用DB块的绝对地址。
后者可用于通信,如与其它品牌的触摸屏进行通信。
如果需要存储数据块中的数据,可以选择共享数据块作为所有程序使用的全局变量。
在CPU允许的条件下,一个程序可创建任意多个DB,每个DB的最大容量为64KB。
默认条件下,共享数据块为掉电保持,在其属性菜单中选中“Non Retain” 可以更改为掉电数据丢失。
以上内容仅供参考,建议咨询专业人士获取更准确的信息。
博途数据块FC使用方法详解
博途数据块FC使用方法详解文章内容概要:✧1数据块的使用✧2存储保持功能介绍✧3DB 快照功能1.数据块的使用1)S7-1200 数据块的使用硬件环境:S7-1200 CPU V4.4(6ES7 214-1AG40-0XB0)软件环境:①Windows 10 Enterprise 64位②STEP7 Professional V162)步骤A.创建DB块:在项目中添加了S7-1200设备之后,在项目树中此PLC的"程序块"下即可以添加新的数据块。
图1 DB块的创建在打开的"添加新块"窗口下选择数据块。
以下是对此窗口下各项配置的说明:名称:此处可以键入DB块的符号名。
如果不做更改,那么将保留系统分配的默认符号名。
例如此处为DB块分配的符号名为“数据块_1”;类型:此处可以通过下拉菜单选择所要创建的数据块类型-全局数据块、背景数据块,或是基于UDT以及SDT的全局数据块。
如果要创建背景数据块,下拉菜单中列出了此项目中已有的FB供用户选择。
语言:对于创建数据块,此处不可更改。
编号:默认配置为“自动”,即系统自动为所生成的数据块配分块号。
当然也可以选择“手动”,则“编号”处的下拉菜单变为高亮状态,以便用户自行分配DB块编号。
当以上的数据块属性全部定义完成,点击“确定”按钮即创建完成一个数据块。
用户可以在项目树中看到刚刚创建的数据块,如图2所示:图2 项目树中的DB块B.为数据块定义变量:双击打开数据块即可逐行添加变量,如图3 所示。
图3 DB块的编辑如果取消勾选数据块的属性对话框中的“优化的块访问”的复选框,参考图10,则在数据块中可以看到“偏移量”列,并且系统在编译之后在该列生成每个变量的地址偏移量。
设置成优化访问的数据块则无此列。
默认情况下会有一些变量属性列未被显示出来,可以通过右键单击任意列标题,可在出现的菜单中选择显示被隐藏的列,见图4:图4 显示隐藏列表1是对数据块变量定义的所有列的说明:列名称表1 DB块中的列属性定义变量的数据类型:可以为变量定义基本数据类型,复杂数据类型(时间与日期,字符串,结构体,数组等),PLC数据类型(如用户自定义数据类型),系统数据类型和硬件数据类型。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在CFC中如何连接DB块中的变量How to connect DB variables in CFC
Key Words
CFC, DB, Variable connection
问题:在CFC中,如何将DB块中的变量连接到块引脚?
解答:
1. 对于DB块中定义的基本变量类型,可以在CFC中直接连接到该变量的符号名。
前提
是CFC中块引脚的数据类型定义与DB块中的数据类型一致。
例如,引脚定义为Real类型,则可以连接到DB块中定义为Real类型的变量。
如果类型不同,即使数据长度一致也无法连接,例如Real和DWORD无法连接。
如下图所示:
DB块中的变量定义
引脚的定义
CFC中的连接
2. ANY类型的引脚可以连接到DB块中的任何类型的变量,包括基本类型和ARRAY,
STRUCT等复杂类型。
如下图所示:
引脚的定义
3. 如果要连接复杂变量类型(例如ARRAY, UDT, STRUCT等)中的某个变量,则无法通
过符号名称连接,这种情况下只能使用绝对地址连接。
绝对地址的引用语法如下:
变量类型引用语法示例
bit db1.dx2.0
byte db1.db2
word db1.dw2
dword db1.dd2
在CFC中,绝对地址引用可以直接连接到BOOL,BYTE,WORD和DWORD类型的引脚上,但是无法连接到Int, Dint, Real等类型的引脚。
如果要连接此类引脚,还需要在连接之前通过类型转换块进行转换。
在下图所示例子中,要将一个Int类型的引脚连接到DB块中一个包含5个Int值的Array变量的第二个值。
Array的起始地址为18,因此第二个值的地址为20。
在CFC 中应该连接的地址为“DB1.DW20”,由于Int类型的引脚无法直接连接,因此通过W_I转换块实现连接。
CFC 中的连接
DB
块中的定义
附录-推荐网址
PCS7
西门子(中国)有限公司
自动化与驱动集团客户服务与支持中心
网站首页:/Service/
专家推荐精品文档:/Service/recommend.asp
PCS7常问问题:/CN/view/zh/10806846/133000 PCS7更新信息:/CN/view/zh/10806846/133400。