用S7-SCL开发非通用协议通讯功能
plc《SCL》语言说明
浅谈西门子PLC的“SCL语言”编程随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受:传统的‘梯形图’编程方式在面对越来越复杂的控制要求时,已显得力不从心。
其实,现在很多大品牌的中高级PLC都支持国际电工委员会IEC61131标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。
在这五种编程语言中,我认为梯形图+结构化文本是一种不错的组合,用梯形图写逻辑控制,用结构化文本写计算,这样可以加快编程效率并且使程序的可读性大大提高。
而流程图编程则非常适用于一些“顺序控制”场合。
至于指令表和功能块,我个人认为实用性并不太大。
西门子S7系列PLC在国内工控领域中使用很广,它的编程软件Step7默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。
下面,笔者就结合自己的一些使用经验介绍一下如何在Step7中用结构化文本编程。
一、什么是结构化文本编程结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL语言。
具体的语法规则大家可参考西门子的相关手册,在此就不做详细介绍。
下图为Step7中的SCL编程界面:二、S7-SCL软件包的安装在Step7 中,结构化文本编程被称为结构化控制语言(Structured Control Language),缩写为SCL. Step7 V5.3的软件包中已包含了S7-SCL软件包,在安装Step7 V5.3时,系统会提示是否要安装S7-SCL,把复选框打钩即可,见下图:Step7 V5.3的软件包里包含了SCL软件包和流程图编程软件包S7-GRAPH三、SCL软件包的使用SCL软件包用于以“源文件”的方式编写功能块、函数块。
步骤如下:第一步:当Step7中已正确安装SCL软件包后,会有如下界面正确安装了SCL软件包后,就可以用这种方式来建立Source File第二步:进入SCL编程界面,并选择准备编写的程序块的类别选择你所要编写的程序块的类确定你所编写的程序块编号,本例中编写的是FC1第三步:编写程序并编译程序编写完毕后按这两个按钮中的任何一个进行编译编译后生产FC1经过以上四步,就完成了一个用SCL编写功能块的全过程,FC1的源程序,保存在“Sources”文件夹中,可随时打开进行修改。
西门子S7-300系列PLC在编程时是否需要用到SCL
问:西门子S7-300编程必须要用到SCL吗,只用LAD怎么样?答:S7 SCL是符合EN 61131-3(IEC 61131-3)标准的高级文本语言,也就是说支持该标准的任意厂家的PLC均可以使用与之相似的语言编程,支持强大的数据处理运算功能,一般深受IT人员的喜爱。
SCL是STEP 7软件的一个可选附件包,标准版的只有 LAD,STL,FBD三种编程工具。
它同STL、LAD、FBD属于同一个作用, SCL需要用单独的程序块来编写,需要编译后才能下载到CPU执行;LAD和STL可以在同一个程序块里编写。
在STEP7没有安装SCL时,用其编辑的块都会以STL格式打开并显示。
S7 SCL 包含的语言结构与编程语言Pascal和C相类似,所以只要接触过Pascal、Delphi、vb等编程语言者,实现S7-SCL语言的快速入门是非常容易的,不必了解继电器原理,而且,即使是做逻辑控制也只需简单的编程语句就可以完成,所以S7 SCL特别适合于习惯于使用高级编程语言的人使用。
这种语言适合于处理复杂的逻辑和大量的数学运算,由于其具有高级语言的编程结构,因此和S7的STL语句表编程方式比较起来有着更加方便的控制方式,可以这样说,只要是必须使用语句表的地方,我们均可以考虑使用SCL。
也许STL在执行时比SCL更加高效,但事实上也不一定,首先SCL可以编译成STL,同时 SCL设计时可以优化编程,而STL若运用不当,可能还会将低效率。
当然在目前的这种系列的PLC上,效率对于我们来说已是次要的,我们更关心的是编程结构。
就像在PC机上,舍弃了汇编语言,而主要采用C/C++等高级语言。
总体来说,SCL适合于编写标准功能块,由于在维护中,它和STL一样,不象 Lad 一样利于维护,因此这些标准功能块都应该有文档说明,以便用户了解其功能。
STL源文件由文本组成,使用关键字在源文件中设定块结构、声明变量表和程序网络段,为将其编译成块,必须按一定规则编写其结构及语句。
西门子S7-SCL编程与应用
子程序处理:用来调用函数和功能。
-32-
2.1 源文件结构
指令部分
FUNCTION_BOLCK FB10 属 性 声明部分
指令部分
END_FUNCTION_BLOCK
BEGIN //位运算、算法实例 Q0.0:=I0.0 AND I0.1; MW20:=MW22+MW24; //赋值实例 Measured_Value:=0; //控制指令 IF I1.1 THEN N:=0; SUM:=0.0; ELSEIF START=TRUE THEN N:=N+1; SUM:=SUM+IN; ELSE OK:=FALSE; END_IF; //子程序调用实例 FB10.DB2(Pa:=10,Pa2:=MW2) -33Result:=DB2.MVAL8;
OB编号
OB1 OB10-17 OB20-23 OB30-38
用途
循环程序 时钟中断 延迟中断 循环中断
OB编号
OB83 OB84 OB85 OB86
用途
插入/删除中断 CPU硬件故障 程序顺序错误 DP故障
OB40-47
OB80 OB81 OB82
硬件中断
时间错误 电源故障 诊断中断
OB87
OB100-102 OB121 OB122
内容。因此采用了SCL,可以编制结构清洗,易读性好的程序。
-4-
1.1 SCL语言
应用领域
复杂的数学函数功能,例如:调节器
数据管理 配方管理
具有大量分支和循环结构的程序
特点
易于掌握
可短时间开发易读性更好的程序
可间接地描述复杂的算法 支持S7中的块和数据类型等概念
与S7语言(LAD、FBD、STL)实现系统集成
浅谈西门子PLC的“SCL语言”编程[指南]
浅谈西门子PLC的“SCL语言”编程[指南] 浅谈西门子PLC的“SCL语言”编程随着现代工控技术的不断发展,可能很多使用过PLC的技术人员都有这么一个感受:传统的‘梯形图’编程方式在面对越来越复杂的控制要求时,已显得力不从心。
其实,现在很多大品牌的中高级PLC都支持国际电工委员会IEC61131标准中规范的五种编程语言的混合编程,即梯形图(LD)、结构化文本(ST)、流程图(SFC)、指令表(IL)和功能块(FB)。
在这五种编程语言中,我认为梯形图,结构化文本是一种不错的组合,用梯形图写逻辑控制,用结构化文本写计算,这样可以加快编程效率并且使程序的可读性大大提高。
而流程图编程则非常适用于一些“顺序控制”场合。
至于指令表和功能块,我个人认为实用性并不太大。
西门子S7系列PLC在国内工控领域中使用很广,它的编程软件Step7默认情况下只支持梯形图和指令表编程,但通过安装“S7-SCL”软件包和“S7-Graph”软件包可实现结构化文本和流程图编程。
下面,笔者就结合自己的一些使用经验介绍一下如何在Step7中用结构化文本编程。
一、什么是结构化文本编程结构化文本是一种类似于计算机高级语言的编程方式,它的语法规范接近计算机中的PASCAL语言。
具体的语法规则大家可参考西门子的相关手册,在此就不做详细介绍。
下图为Step7中的SCL编程界面:二、 S7-SCL软件包的安装在Step7 中,结构化文本编程被称为结构化控制语言(Structured Control Language),缩写为SCL. Step7 V5.3的软件包中已包含了S7-SCL软件包,在安装Step7 V5.3时,系统会提示是否要安装S7-SCL,把复选框打钩即可,见下图:Step7 V5.3的软件包里包含了SCL软件包和流程图编程软件包S7-GRAPH三、 SCL软件包的使用SCL软件包用于以“源文件”的方式编写功能块、函数块。
步骤如下: 第一步:当Step7中已正确安装SCL软件包后,会有如下界面正确安装了SCL软件包后,就可以用这种方式来建立Source File第二步:进入SCL编程界面,并选择准备编写的程序块的类别选择你所要编写的程序块的类型确定你所编写的程序块编号,本例中编写的是FC1第三步:编写程序并编译程序编写完毕后按这两个按钮中的任何一个进行编译编译后生产FC1经过以上四步,就完成了一个用SCL编写功能块的全过程, FC1的源程序,保存在“Sources”文件夹中,可随时打开进行修改。
在没有明确声明DB的情况下,如何使用S7-SCL打开一个数据块
在没有明确声明DB的情况下,如何使用S7-SCL打开一个数据块?
描述:
编程过程中,可以使用参数类型BLOCK_DB (图. 01). 在编译时,具体的数据块是不确定的,所以S7-SCL编译器通过符号表和DB的变量声明不能找到对应的数据类型。
如果使用绝对地址访问DB,S7-SCL假定该数据类型为BOOL, BYTE, WORD或DWORD。
下面的例子,通过绝对地址寻址, 可以访问DB数据中的变量。
在FB中,没有确定DB块(db_test)的数据DD0此时被读。
图. 01
该DB的数据DD0为DINT数据格式。
DD0被转化为TIME类型变量。
注意:
语句 "WORD_TO_BLOCK_DB(Code_2).dw[Byte_Index]...;" 允许直接访问DB。
必须定义WORD类型的"Code_2"变量用于DB号和整型类型的变量"Byte_Index"用作DB数据索引。
如果DB号是"BLOCK_DB"类型的一个输入变量类型,可以间接地使用"dbnumber.dw0"变量访问DB。
更多的信息请参考S7-SCL在线帮助
∙Absolute access to data blocks
∙Indexed access to data blocks
∙Class B conversion functions。
S7-1500PLC应用技术 第8章 SCL编程语言
Date: 2023/6/26
Page: 5
8.2 SCL常用指令
• 指令介绍-IF
Date: 2023/6/26
Page: 6
8.2 SCL常用指令
• 指令介绍-CASE
Date: 2023/6/26
Page: 7
8.2 SCL常用指令
• 指令介绍-FOR
Date: 2023/6/26
Page: 8
SCL语言为在PLC中的应用做了相应的优化处理,它不仅包含PLC的典 型元素(例如,输入、输出、定时器或存储器)外,还包含了高级编程语 言的特性;例如采用表达式、赋值运算、运算符、高级函数等完成数据的 传送和运算,创建程序分支、选择、循环或跳转进行程序控制等。
Date: 2023/6/26
Page: 3
• 控制要求
系统有四台电动机,按下启动按钮,MOTOR_1先 启动,10s后MOTOR_2启动;MOTOR_2运行20s后, MOTOR_3启动;MOTOR_3运行30s后,MOTOR_4启动 。按下停止按钮,四台电动机同时停止。
Date: 2023/6/26
Page: 14
8.4 四台电动机顺序起动控制程序设计
《S7-1500PLC应用技术》
Date: 2023/6/26PageLeabharlann 1第 8 章 SCL编程语言
8.1 SCL编程语言简介 8.2 SCL常用指令介绍 8.3 SCL语言编程设计 8.4四台电动机顺序起动控制程序设计
2
Date: 2023/6/26
Page: 2
8.1 SCL编程语言简介
• SCL编程语言的特点
• 定时器指令应用电路
Date: 2023/6/26
在西门子PLC中使用SCL语言实现CRC校验计算
在西门子PLC中使用SCL语言实现CRC校验计算在西门子PLC中运用传统梯形图方式和查表法实现Modbus通讯和CRC校验,会影响控制的稳定和对采集设备的数量和数据量有所限制,无法做到高效、稳定。
采用SCL语言编程很好解决了原有的问题,并使控制器效率大大提高。
标签:西门子PLC;SCL语言;Modbus;CRC校验1、引言当前几乎所有的PLC控制器都带有Modbus总线通信接口,这其中也包括西门子的S7300和S7400系列[1],西门子PLC的CPU模块自身不带有Modbus 通信口,需配置相应的RS485通讯模块(CP340/CP341/CP440/CP441),再配置相应的Modbus通讯协议硬件狗,就是说你要用西门子PLC做Modbus通讯时,你需要增加RS485通讯模块和Modbus通讯协议硬件狗费用。
根据西门子公开报价,Modbus通讯协议硬件狗的价格要14000.00元。
而且用传统的梯形图编程方法实现CRC校验,會导致CPU处理量迅速增加,严重占用了CPU的资源,导致CPU死机,影响系统的稳定性。
为解决以上问题,我们以前采用查表法解决CRC校验问题,但用查表发存在很大的局限性,比如:只能有固定的设备地址、固定的数据长度和固定的数据寄存器地址;当需通讯的设备有几十台或上百台后,查表法就会显的效率很低、程序累赘繁琐,影响系统稳定。
使用SCL语言编程方式(除西门子编程软件外需另外安装的一种编程方式,这是一种类似于C语言的一种编程方式),就很好的解决了以上问题。
2、Modbus通讯和CRC校验的相关介绍2.1 Modbus通讯协议Modbus通讯协议[2]在一根通讯线上采用主从应答方式的通讯连接方式。
首先主机寻址到唯一设备地址的终端(从机),随后从机发出相应信号以反向的方式传输给主机。
Modbus通讯只允许主机和从机之间通讯,不允许从机之间通讯,这样就保证了从机在初始化时占有数据链路,而仅限于相应到达本从机的查询信号。
scl编写485通讯功能块
scl编写485通讯功能块在物联网应用场景中,485通讯技术被广泛应用于工业控制系统、智能家居、智能电力监测等领域。
为了实现485通讯功能,在SCL(Structured Control Language,结构化控制语言)编程环境下,我们可以编写相应的功能块来实现。
本篇文章将一步一步回答如何使用SCL编写485通讯功能块。
第一步:了解485通讯协议在开始编写485通讯功能块之前,我们需要先了解485通讯的基本协议。
485通讯协议是一种硬件接口标准,使用差分信号传输数据。
它具有传输距离长、传输速率高、抗干扰能力强等特点。
常见的485通讯协议包括MODBUS、Profibus等。
第二步:创建485通讯功能块在SCL编程环境下,我们可以通过创建一个函数块来实现485通讯功能。
可以采用如下代码创建一个名为"485Communication"的函数块:FUNCTION_BLOCK 485CommunicationVAR_INPUTComPort: INT; 485通讯串口号SlaveAddress: INT; 从设备地址FunctionCode: INT; 功能码StartAddress: INT; 数据起始地址Length: INT; 数据长度Data: ARRAY[1..128] OF BYTE; 数据END_VARMETHOD SendMessage实现发送消息的代码END_METHODMETHOD ReceiveMessage实现接收消息的代码END_METHODEND_FUNCTION_BLOCK在以上代码中,我们定义了五个输入参数,分别是ComPort、SlaveAddress、FunctionCode、StartAddress和Length,用于指定485通讯的相关参数。
Data参数用于输入和输出通讯数据。
SendMessage 和ReceiveMessgae方法用于实现发送和接收消息的代码。
scl调用fc实例
scl调用fc实例本文将介绍如何使用SCL调用FC实例。
FC(FunctionCode)是一种可重复使用的代码单元,用于执行特定的功能。
FC实例是FC的实际实现,包含特定的输入和输出参数。
SCL(Structured Control Language)是一种程序设计语言,用于编写S7-300/S7-400 PLC (Programmable Logic Controller)控制程序。
在SCL程序中调用FC实例,需要先声明FC实例变量并初始化,然后调用FC实例函数。
以下是一个简单的示例程序:```FUNCTION_BLOCK MyProgramVARMyFCInstance : MyFCType; //声明FC实例变量END_VARMyFCInstance(IN := myInput, OUT => myOutput); //调用FC 实例函数```上面的程序声明了一个名为MyFCInstance的FC实例变量,然后调用了该实例的函数,并将输入参数myInput传递给它。
输出参数myOutput将被更新以反映FC实例函数的结果。
要使用SCL调用FC实例,请按照以下步骤操作:1. 在S7-300/S7-400 PLC中创建FC实例,并设置输入和输出参数。
这通常需要使用Step 7或TIA Portal软件来完成。
2. 在SCL程序中声明FC实例变量。
变量类型应设置为与FC实例相同的类型,例如:```VARMyFCInstance : MyFCType;END_VAR```3. 初始化FC实例变量。
这可以通过在程序中调用“NEW”函数来完成,如下所示:```MyFCInstance := NEW(MyFCType);```这将分配内存并初始化FC实例变量。
4. 调用FC实例函数。
这可以通过使用FC实例变量和函数名称来完成,如下所示:```MyFCInstance(IN := myInput, OUT => myOutput);```5. 在程序结束时,释放FC实例变量。
西门子S7-300SCL编程笔记(附实例)
西门子S7-300SCL编程笔记(附实例)1.数据类型:注:还有两种类型:P:POINTER(指针数据类型)。
A:ANY(任何类型)数组的定义:M1:ARRAY[n0..m0,n1..m1] OF INT;数组的类型2.寻址绝对寻址符号寻址如:DB10.setpoint'motor1data'.DW12间接寻址如:E[byteindex,bitindex]MB[byteindex]DB10.DW[byteindex]三.SCL运算符和表达式注:以上运算符的表达式基本大多和我们的数学表达式一样。
这里只讲解一下AND,XOR,OR指令。
如:a1:=a1 AND W#16#FFFFa1:=a1 XOR W#16#FFFFa1:=a1 OR MW10四.控制语句注意:当使用程序循环时,请确保不超过循环监测时间。
1. IF语句:IF 条件0THEN 语句0;ELSIF 条件1THEN 语句1;ELSIF 条件2ELSE 语句3;END_IF;2. CASE语句:'选择'内的值等于Const内的值就执行那个语句。
其它语句不执行,就执行END_CASE;CASE 选择 OFConst1:语句1;Const2:语句2;………Constn:语句n;END_CASE;3. FOR语句FOR 变量:=n0 TO n BY m DO…………………..;………………….;END_FOR;注意:这里的n为整型变量或整数值。
m为每循环加几。
4. WHILE语句:只要条件满足,程序循环就重复。
WHILE 条件 DO语句;END_WHILE;5. REPEAT语句:只要条件不满足,就重复程序循环。
REPEAT语句;UNTIL 条件;END_REPEAT;6. CONTINUE语句:在FOR, WHILE, REPEAT循环中终止当前程序通道。
7. EXIT语句:在FOR, WHILE, REPEAT循环中终止所有程序通道。
基于SCL语言的工业PLC多级通讯系统构建
2019.14科学技术创新 -67-基于SCL 语言的工业PLC 多级通讯系统构建郑印贾文超(教授)(长春工业大学,吉林长春130012)摘 要:随着工业的发展,高可靠是电气控制设备的关键性能,PLC 以及电机的应用越来越广泛,西门子PLC 作为一款主流的自动化控制系统,目前被广泛的应用在工业领域。
介绍工厂设备从西门子S7- 300PLC 主站配一个通信模块,与外部其他设备 的通信,构成一个工业现场局部网络。
通过西门子PLC-S7软件实现对控制设备的数据随时修改、实时监视和故障查询的功能。
着重介绍PLC 在使用过程中与PLC 运用通信模块PNPN_Coupler 实现信号交互的过程,并运用西门子PLC-S7软件中的SC1语言进行程序进行编程封装FB 块,提高了生产效率。
说明了西门子PLC 在工业领域的应用具有便捷性、稳定性和易维护等特点。
关键词:PLC ; PNPN_Coupler;程序;故障;SC1语言中图分类号:TP311.il文献标识码:A 文章编号:2096-4390( 2019 )14-0067-03西门子PLC Simatic Step7软件,简称S7,以汽车白车身下 部设备组成的补焊线为例,简述西门子PLC- S7软件的应用。
它和其他相关的辅助设备通过工业TCP/IP 组成网络构成一条 通讯网络,并能通过用S7软件一站式联线,应用PNPN_Coupler 进行PLC 之间的通讯,将安全和普通的信号依次传递给下一级。
工业上一般应用西门子S-300或者S-400,我们以S-300为例。
1硬件设备系统还为操作员配置了 PC677型带触屏操作,它在控制系 统组成的TCP/IP 网络上,使操作员可以在操作屏上直接调整机 器参数和遥控机器人,还能将故障信息显示于操作屏上。
操作屏 的控制软件采用的是西门子Winccflexible 2008软件,使用该软 件可有效的缩短开发时间,达到快捷、准确的目的,确保与控制 系统同步进行,并保护数据的完整性,并且支持当前所有网络通 讯协议,使得站与站之间的过程数据交换畅通无阻。
西门子 S7-SCL 语言
西门子 S7-SCL 语言S7-SCL(Structured Control Language)-结构性控制语言,它属于可程控的控制卡上使用的PASCAL高级语言。
S7-SCL符合定义于DIN EN/IEC 61131-3的高水平结构性文字(ST:Structured Text)的本文语言,它特别适合编写程序复杂的算法和数学函数,或是数据处理任务。
下面就是我用S7-SCL写的一段程序FUNCTION_BLOCK FB110VAR_TEMP// Temporary VariablesSuitCanNum : INT ; //套筒可以拧紧的数量CanSave : BOOL ; //判断可以存储END_VARVAR// Static VariablesCurrentOK_Num : INT;INDEX : INT ;END_VARVAR_INPUTTotalsNum : INT ; //此扳手可拧的最多的螺栓数SuitNo : INT ; //套筒号(程序号)Current_Torque : REAL ; //当前的扭矩Current_Corner : REAL ; //当前的转角Current_OK : BOOL ; //当前拧合格后进行记录ResetCondition : BOOL ; //当移动到下一个工位,或下个发动机过来,清空记数END_VARBEGIN//SuitCanNum :=DB1.SuitCanUseNum[SuitNo] ;IF Current_OK THENCanSave := True;END_IF;IF ResetCondition = True THENCurrentOK_Num :=0 ;FOR INDEX:= 1 TO TotalsNum BY 1 DO //当移动到下一个工位,或下个发动机过来,把存储区的内容全部清空// Statement SectionDB2.Bolt[CurrentOK_Num].Suit := 0;DB2.Bolt[CurrentOK_Num].NO :=0;DB2.Bolt[CurrentOK_Num].Torque :=0.0;DB2.Bolt[CurrentOK_Num].Corner :=0.0;DB2.Bolt[CurrentOK_Num].State :='';END_FOR;ELSIF CanSave THEN //当拧紧合格CanSave := False;IF CurrentOK_Num = TotalsNum THEN //若当前数量等于最大数量,则退出,避免CPU停止RETURN;END_IF;CurrentOK_Num := CurrentOK_Num +1; //移动到下一个存储区域DB2.Bolt[CurrentOK_Num].Suit := SuitNo;DB2.Bolt[CurrentOK_Num].NO :=CurrentOK_Num;DB2.Bolt[CurrentOK_Num].Torque :=Current_Torque;DB2.Bolt[CurrentOK_Num].Corner :=Current_Corner;//DB2.Bolt[CurrentOK_Num].State :='OK';END_IF ;// Instruction SectionEND_FUNCTION_BLOCK怎么样,假如这个扳手可以拧几种螺栓,每种螺栓数量不定,用梯形图写起来就相对麻烦,而且不容易读,对熟悉PASCAL 语言的人是不是一个福音,退一步说,你了解其他的高级语言,不了解PASCAL也没有关系的,基础的原理都是一样的,希望和大家一起探讨。
西门子S7SCL编程与应用
BEGIN
//位运算、算法实例
Q0.0:=I0.0 AND I0.1;
MW20:=MW22+MW24;
//赋值实例
Measured_Value:=0;
//控制指令
IF I1.1 THEN
N:=0;
SUM:=0.0;
ELSEIF START=TRUE THEN
N:=N+1;
SUM:=SUM+IN;
ELSE
编译源文件
编译按键
-19-
1.5 文件操作
下载与帮助
下载按键
编译结果出错 E:错误W:警告 按F1进入帮助
-20-
第二章 创建和调用块
源文件结构 组织块(OB)的结构 函数(FC/SFC)的结构 功能块(FB/SFB)的结构
数据块的结构
-21-
第二章 创建和调用块
用户自定义数据类型结构 组织块(OB)的结构 函数(FC/SFC)的结构 功能块(FB/SFB)的结构
FUNCTION fc_name:function_type ORGAINZATION_BOLCK ob_name
:
:
END_FUNCTION
END_ORGAINZATION_BOLCK
块的开始和结束定义
-26-
2.1 源文件结构
块模块
块模块包含块的开始和结束部分。在SCL编辑器中,通过菜单项 insert-BOLCK Template-OB、FB、FC、DB和UDT,对源文件中的 块进行插入。
IF New_value<>Old_value THEN
index:=(index mod max_values)+1;
measurement_values[index]:=INT_TO_REAL(measurement);
在西门子PLC中使用SCL语言编程的技巧
在西门子PLC中使用SCL语言编程的技巧前言:两年半前我就在工控网上发表了有关SCL编程的知识<<在S7300400型PLC中使用高级语言编程>>,但发表完后,即使我自己都从没有把任何使用SCL编写的程序用到实际控制中,当时的感觉是使用SCL编程到处受限,没有STL语言灵活和强大。
直到最近使用施耐德的Unity软件编程,并使用这种已经国际标准化的文本语言(等同于西门子的SCL 语言),才体会到它的优点:<1>、程序容易阅读,便于诊断和维护;<2>、程序容易在不同厂家之间的PLC之间转换。
西门子的STL语言是强大,但难于阅读,编写程序也需要异常小心,其最强大的可能是它的寄存器寻址(类似于一些计算机高级语言中的地址指针),SCL没有这个功能,那就多费一些程序代码来实现同样的功能,程序是否优秀更应该看重程序的架构和提高程序生产效率的标准化,好的PLC程序不应该只有自己明白,而是让更多的人明白。
在西门子PLC中使用SCL语言的场合一般是编写标准功能块FB,其编程方式和西门子的其他编程语言,如梯形图Lad、语句表STL是完全不同的,同时为了实现程序的国际标准化,即为了方便的将程序代码移植到不同厂家的PLC系统上,尽量不要在SCL 中使用西门子独有的功能块。
1、在FB块中使用结构编写FB块的准则,就是其使用的内部变量尽量与外部隔离,除了像PLC的新启动/重启动标志,以及一些方波/脉冲波等全局变量可以在FB块中使用外,其他的任何全局变量都不应该在FB内部使用,即使是自定义结构也应该在FB中单独定义,在FB块中使用结构应该在静态类型变量中定义,如下:VAR // Static Variables IM:STRUCT //Data structure of Internal FlagsH1_AFCountImp:BOOL:=False; // Aux Flag Counter Impulse H1_CountImp:BOOL:=False; // Counter Impulse H1_ELCountMV:BOOL:=False; // Endless Counter Maximum Value END_STRUCT; //other data structure … END_VAR 在使用这些结构时,可以按照如下方式:IM. H1_CountImp:=Imp;2、在SCL中替代Set/Reset指令的方法SCL中不存在Set/Reset指令,或者说也没有必要使用。
西门子S7-SCL-编程
初始值
程序输入完毕后,选择编译前, 选择选项菜单 把生成调试信息选项打上勾。
插入FC块
函数返回值类型调用。Fra bibliotek选择编译工具,程序编译无措后,生成FB块
程序运行后,在SCL的监控界面如下:
问题1
S7-SCL 程序编译后生成的执行代码实际上为STL 格式,但果用户将Source 目录中 的FC1 的源文件删除后,再双击打开块后,显示的将为STL格式。
西门子西门子S7-SCL 编程
STEP7 标准版并不包括S7-SCL 软件包,需要单独安装 建立S7-SCL程序 1. 插入SCL源
2. 在SCL界面,继续选择插入,选择要插入的项目FB)
3. 插入后显示如下:
4. 鼠标放在临时变量前回车后,选择插入块的接口变量:
接口变量输入格式
冒号
分号
变量名 变量类型
S7-1500系列博途中使用SCL语言编程方法简介
S7-1500系列博途中使用SCL语言编程方法简介S7-1500系列博途中使用SCL语言编程方法简介SCL:Structured Contorl Language,结构化控制语言。
在TIA博途软件中,默认支持SCL语言,在建立程序块时可以直接选择SCL语言。
SCL语言类似计算机高级语言,如果你有C、Java、C++、Python这种高级语言的学习经历,再学习SCL就会容易很多。
在用SCL语言编程时,主要用IF...THEN/FOR/WHILE语句去构造条件、循环、判断这样的结构,在这些结构中再次添加指令,去实现逻辑判断。
所有程序的编写都是在纯文本的环境下编辑,不像梯形图那么直观。
能把SCL运用的比较灵活的,大多是从IT转行过来做工控的人。
本人就对SCL不太感冒,虽然一直在学习。
1、新建SCL语言功能块在TIA博途软件中能直接建立SCL语言的功能块,如下图所示,只需要在语言下拉列表中选择SCL即可。
新建好程序块直接打开,会进入SCL的编辑环境,如下图所示2、SCL语言指令介绍介绍指令之前先说一些,高级语言编写基础知识。
•一行代码结束后要添加英文分号,表示改行代码结束。
•所有代码程序都为英文字符,在英文输入法下输入字符。
•可以添加中文注释,注释前先添加双斜杠,即://。
这种注释方法只能添加行注释,段注释要插入一个注释段。
•在SCL中变量需要在双引号内,定义好变量后软件能辅助添加。
每种高级语言的编写都有各自基础规则,建议大家多了解,不要在基础知识上犯错误。
1)、赋值指令赋值是比较常见的指令,在高级编程语言中大多使用等号,即:”=”。
在SCL语言中赋值指令的格式是,一个冒号加等号,即:”:=”。
2)、位逻辑运算指令在SCL语言中常用的为逻辑指令有:•取反指令:NOT,与于梯形图中的NOT指令用法相同。
•与运算指令:AND,相当于梯形图中的串联关系。
•或运算指令:OR,相当于提醒图中的并联关系。
•异或运算指令:XOR,在梯形图中字逻辑运算中有异或运算指令,没有BOOL的异或指令。
在 STEP 7 (TIA 博途) 中移植 S7-SCL 程序需要注意事项
说明 STEP 7 V5.x 的 S7-SCL 程序中使用一些指令在移植到 STEP 7 (TIA 博途) 后显示会有变化或者需要用户作适 当修改。下表列出了这些指令:
描述 使能输出 ENO1) 字符串中断 IO 地址 1) EXPD 功能 1) LOG 功能 2) 绝对寻址 符号名操作 3)
1) 2) 3)
有关移植这些功能到 TIA 博途的相关信息可参阅系统手册,条目 ID:68113685。 在 STEP 7 (TIA 博途)中 LOG 功能 (标准对数) 必须用 LN 功能 (自然对数) 创建:[ LN(...)/LN(10) ] 在 SIMATIC STEP 7 V5.x 中创建 S7-SCL 程序时,必须确保输入类型的名称如 “EB1” 不能再用作块或者 FC
表 01
STEP7 V5.x myBool:=ENO 'Test$> $<Test' myByte:=PEB1 myReal:=EXPD(2) myReal:=LOG(2) %DB1.DBX1.0 myByte:=EB1
TIA 博途 #myBool:=?ENO? 'TestTest' #myByte:=%EB1:P #myReal:=10**(2) LOG in red %%DB1.DBX1.0 #myByte:=?"Tag_x"?
的名称。否则,程序移植时会有冲突,因为名称 “EB1” 已经进入到符号表。 下图显示了表 01 的指令移植到 STEP7 (TIA 博途) 前后的对照。如果不符合 STEP 7 (TIA 博途) 的程序语法,移 植时会生成相关的错误信息。
图. 01 为确保程序的执行,移植过程中不符合的语法必须更正,更正的程序代码显示在图 02 中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收 稿 日期 : 2 0 1 6 - 1 0 - 1 9
机, HM I 计 算机可 以直接访 问基 础 自动化 , 监控设备 和
1 引 言
随着城市 的快速 发展 , 城市供 水的生产 节奏 日趋 紧 张, 管理部 门的工作量 越来越 大 , 为 了提 高管理部 门的 工作 效率 , 城市供 水管 网泵站运行 管理 的 自动化程度要
准。 由于 1 0 3 规 约的通信 协议 比较复杂 , 且不是通用 型
通信协议 , 需要 进行复杂 编制后才 能正 常通信 , 而且在 PL C中用 S TL等语言 编制通讯接 口异 常麻烦 。因此 采
监视生产数 据 , 根据 以上 模式 , 可 以分 别接人多个站 点
度 中控 室部分 , 通过 S DH 光缆直接 接入现 场 网络 交换
3 ( I E C 6 1 1 3 1 - 3 ) 标准 的高级 文本语 言 , 支持强大的数据 处理运 算功能 。S C L适合软件 工程师 , L AD适合 电气工 程师 , S T L兼有优缺点 , F B D适合 电子工程 师 [ 1 - 3 ] o
De v e l o p me n t O f NO n . Un i v e r s a l Pr o t o c o I Co mmu n i c a t i o n
F u n c t i o n wi t h S7 . . SCL
ZBA O S o n g - b i n , W AN G Xu - d o n g
赵松斌 , 王旭东
( 上海 新阿塞克工程技术有 限公司 , 上海 2 0 0 0 8 3 )
摘 要 : 一般在 自动化系统 中都需要 采集各 种仪表的数据 , 而有些仪表通 信协议不是通用协议 , 为此需要开发针对 不同仪表 的通
讯软件接 口程 序进 行数据采集 。
关键词 : I E C1 0 3 协议 l 泵站 自动化 ; R S 4 8 5 通讯 I S C Ll C P 3 4 1 I 非通用 协议 中图分类号 : T P 3 1 3 文献标识码 : B 文章编号 : 1 0 0 3 —7 2 4 1 ( 2 0 1 7 ) 1 2 — 0 0 6 5 —0 4
用S C L更适合编制此类通信生产运 行 的数据 采集量 越来越大 。为 此 , 在泵 站 自动 化系统 中采集各种仪表数据势在必行 。
S i e me n s 编程 工具 S t e p 7 V5 . X 中的 S C L语言开发
( S h a n g h a i Ne w AS E C E n g i n e e r i n g T e c h n o l o g y C o . , L t d . , S h a n g h a i 2 0 0 0 8 3 C h i n a )
Abs t r a c t :Us ua l l y i n t h e a u t o ma t i o n s y s t e m ne e d s t o c o l l e c t a v a r i e t y o f me t e r d a t a ,a n d s o me me t e r c o mmu n i c a t i o n p r o t o c o l i s n o n — u n i v e r s a l p r o t o c o 1 . S o i t n e e d s t o d e v e l o p t h e d i fe r e n t c o mm u ni c a t i o n i n t e r f a c e p r o g r a m t o c o l l e c t he t d a t a f r o m t h e i n s t r u me n t s . Ke y wo r ds : I EC1 0 3 p r o t o c o l ; p u mp s t a t i o n a u t o ma t i o n; RS 4 8 5 ;S CL; CP 3 41 ; n o n - u n i v e r s a l p r o t o c o l
通 信 与信 息处 理
Co mmun i c a t i on a n d I n f o r ma t i on Pr oc es s i n g
《 自动化 技术 与应 用 》 2 0 1 7 年第 3 6卷第 1 2期
用S 7 . S C L开发 非通 用协 议通 讯功 能
2 网络 结构 图
网络结构见系统 网络配置 图 ( 图1 ) 。 基础 自动 化部分 , 包含 现场设备 控制系统和配 电系
统数据 采集 , 高压配 电系统部分 , 包 含高压 配 电综保 装
工具为开 发人员提 供 了方 便快捷 的开 发环境 。与计算机 高 级编程语 言相 比 , SCL语言有着 非常相 似的特性 : 语
法 简洁 、可读性强 、适合复杂 算法 的编程 、数学 函数引 用 方便 、大量数据 处理方便 , 使 用其编程 的代码 执行效
率 比其 他语 言 高效 的多 。S 7 SCL是 符合 E N 6 1 1 3 1 -
置和其他 配 电通信设备 ; 现场监控设 备部分 , 包含触 摸 屏和 HM I 计算机 , 用于监 控设备 和监视 生产数据 ; 调