设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
用SCL编写第一个TIA程序代码
返回列表
发新帖
[西门子]
用SCL编写第一个TIA程序代码
[复制链接]
260
|
0
|
2024-4-24 20:35:25
|
显示全部楼层
|
阅读模式
用LAD(梯形图)或FBD(功能图)写PLC代码有时候是非常困难的,特别是在做一些数学运算或大规模运算的时候,此时如果使用SCL/ST(结构化控制语言/结构化文本)会更容易一些。
第一步:创建或打开TIA项目
和用LAD或FBD编程一样,需要创建或打开一个带有PLC硬件的项目来进行编程。所有西门子SIMATIC PLC系列产品(包括S7-300、S7-400、S7-1200和S7-1500)都支持SCL。在本例中,将使用S7-1510SP CPU,同样适用于其它S7-1500或S7-1200 PLC。
第二步:添加FB/FC
创建项目并添加了可用的PLC后,就可以添加FC或FB了。FC和FB的主要区别就是自身是否带有存储区,FB带有存储区,存储的数据在PLC循环周期结束后仍然被保存。本例中,只需要使用FC。
双击“PLC/程序块”文件夹中的“添加新块”,打开“添加新块”对话框,在该对话框中可以选择要创建的块类型,例如FC。
选择块类型后,进一步选择编程语言。下拉列表将显示与所选块类型和PLC类型相对应的所有可用编程语言。本例中选择SCL。
根据需要,还可以在“更多信息”部分添加更多附加信息,例如:标题、注释、版本、作者等。现在,我们可以通过单击对话框中的“确定”来创建块。
第三步:定义块接口
FC块被创建后,我们可以定义和修改FC的接口。本例中,我们将定义一个类型为Array[0..5]of Int的输入、一个类型为Int的输出和两个类型为Int的临时变量。
注意:在FB的接口中,还有一个静态变量部分,用于存储超过实际PLC扫描周期的数据。
第四步:输入SCL代码
在下面的步骤中,编写代码用来求数组元素的最大值。代码将在数组中从索引0到5进行迭代,并比较实际值是否大于临时变量“tempMax”值。最终,我们将得到数组中包含的最大值。
在第一行,为临时变量“tempMax”赋值一个确定的值,本例中赋值为0。
注意:临时变量必须先赋值后使用。
在第三行,开始“FOR”循环。这将使用临时变量“tempCount”来存储循环的实际索引,它在开始时被置为0,并将一直运行到5。因此,循环将运行六次(0->1->2->3->4->5)。“FOR”循环的代码被封装在第三行中的“FOR…”语句和第七行的“END_FOR;”语句之间。
此代码块包含一个“IF”块,只有当条件“#In[#tempCount]>#tempMax”为真(TRUE)时,该块才会处理其内部代码,因此实际的“tempMax”小于索引为#tempCount的数组元素的值。
输入代码时,TIA Portal编辑器会提供智能感知建议。另外,和其它语言的编辑器一样,在文本编辑器的顶部有一个最喜欢的指令列表,可以通过从“指令”选项卡通过拖动其它指令的方式来添加。
第五步:设置数值
为了给程序提供一些值,需要创建一个全局数据块(DB),创建过程和创建FC差不多。设置一些启动值,这些启动值将在PLC启动时赋值给全局数据块。
第六步:在OB1中调用FC
要在PLC中使用FC,可以在循环组织块OB1中调用,并为其提供“GdbData”中的值。添加调用后,可以编译程序代码并将其加载到真实的PLC中,或使用PLCSIM进行模拟仿真。
第七步:测试
通过选择PLC并单击“转至在线”连接到PLC并启动监视后,可以监控程序的运行状态。
也可以创建一个监控表,在监控表中通过监视或修改值来测试代码。在“修改值”列中输入要设置的新值,然后单击工具栏中的“立即一次性修改所有选定值”按钮,新值将被写入到变量中,代码将使用新值进行计算。
注意:PLC程序设置的变量将在每个新的扫描周期覆盖手动设置值。
可以修改显示格式,例如:以十六进制或二进制来显示变量,如16#09或2#0000 1001。这样可增加易读性,例如:“状态字”。
第八步:更多常用的方法
在块的接口中,可以定义具有可变限值的输入数组,以便为具有不同长度数组提供更好的重用性。本例中,必须调整FC的接口,并添加代码来确定数组的下限和上限。另外,还可以使用多维数组来实现这一点。
此处不再演示,有兴趣的朋友可以自己尝试。
注意:该功能只适用于较新版本的PLC(S7-1200/S7-1500)。
SCL优缺点:
优点
缺点
易于编写复杂代码
不易于跟踪信号顺序(不用于故障安全型PLC编程)
适合大规模运算
不易于逻辑概览
易于多分支选择编程
有时易读性不强(没有高级语言编程基础的)
注意:选择最适合需要的编程语言,也可以在FBD或LAD代码中使用SCL代码,例如:复杂代码部分使用SCL编写、输出的联锁部分使用FDB或LAD编写。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
注册哦
x
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
工控老炮儿
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』