SoMachine 介绍和软件编程.ppt_第1页
SoMachine 介绍和软件编程.ppt_第2页
SoMachine 介绍和软件编程.ppt_第3页
SoMachine 介绍和软件编程.ppt_第4页
SoMachine 介绍和软件编程.ppt_第5页
已阅读5页,还剩176页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,SoMachine软件介绍和编程培训,ConfidentialPropertyofSchneiderElectric,王兆宇2018-5-12,Page2,ConfidentialPropertyofSchneiderElectric|,1,SoMachine软件简介,2,SoMachine软件编程入门培训,3,SoMachine典型编程举例-HSC,4,SoMachine典型编程举例-PTO,5,SoMachine典型编程举例-Modbus,6,SoMachine典型编程举例-CANopen,7,SoMachine在线编译、诊断,SoMachine,Page3,ConfidentialPropertyofSchneiderElectric|,SoMachineV4.3编程软件,V12007,V22009,V32011,V4.12014,友好的软件界面丰富的编程语言灵活的配置方案详实的在线帮助,V4.1SP12015,V4.22016,V4.32017,V4.3SP22018,SoMachineV4.2/V4.3自定义安装,Windows7SP1专业版32位/64位Windows8.1专业版32位/64位Windows10专业版32位/64位,PC推荐配置CPU-IntelCorei7内存-8G硬盘-15G空闲空间,SoMachine4.2/4.3软件下载:请关注微信号SoMachine然后在首页中下载,SoMachine4.1授权在4.2/3中有效,SoMachine具有强大的设备集成能力,简化机器的工程阶段,实现完整的机器设备程序,通过:1项目文件1次下载1根编程电缆TVDA文档和项目文件可以重复使用在相同机器上,大量节省设计时间。注:TVDA:TestedValidatedDocumentedArchitecture,Page6,ConfidentialPropertyofSchneiderElectric|,高级集成,设备元件本体集成在SoMachine编程软件中,方便使用,SoMachine兼容FDT/DTM使用FDT/DTM的好处:所有集成设备的一致性基于统一的标准,开放第三方产品的接入,Page7,ConfidentialPropertyofSchneiderElectric|,通过拖放来配置你的设备从设备和模块目录本地集成减少操作次数驱动器是预配置好的网络配置已经预设值完成现场总线预配置完成配置好的IO映射能够简化项目的开始阶段自动加载库文件第一步快速而且简单:,拖放编译下载运行!,SoMachine编程入门,Page8,ConfidentialPropertyofSchneiderElectric|,SoMachine软件,如何启动SoMachine和更改编程软件的语言,从窗口的开始菜单选择SoMachineV4.2/4.3或者双击桌面上的SoMachineV4.2/4.3打开SoMachine软件SoMachine第一次打开后是英文版在系统设定-logicbuilderoption-Internationalsetting-选择中文,选择后点击OK然后退出SoMachine再重新进入就是中文界面了,Page9,ConfidentialPropertyofSchneiderElectric|,SoMachine软件启动介绍,SoMachine软件启动画面,进入SoMachineV4.2软件后在启动界面下共有四个选项最近的项目-打开最近编辑过的项目连接控制器新建项目打开项目选择新建项目后SoMachine提供4个新建项目的方式,分别是:使用助手带模块空项目新建库,Page10,ConfidentialPropertyofSchneiderElectric|,SoMachine软件创建新的项目,使用模板,使用模板中的TVDA创建项目在带模板选项下面,选择机器类型并填写项目名称,Page11,ConfidentialPropertyofSchneiderElectric|,SoMachine软件创建新的项目,使用空项目创建新项目,使用空项目创建新的项目,项目中的PLC、触摸屏等硬件和程序需手动添加,Page12,ConfidentialPropertyofSchneiderElectric|,SoMachine软件创建新的库,使用空项目创建新库,使用空项目创建新的库-库的名称和库的属性,Page13,ConfidentialPropertyofSchneiderElectric|,SoMachine主页面编程环境介绍,主界面简介,多选项卡导航器:设备树、应用程序树和工具树,Page14,ConfidentialPropertyofSchneiderElectric|,SoMachine设备树,硬件配置,在设备树下双击需要编辑的条目例如需要设置高速计数器则双击counter,其它设置例如PTO,逻辑输入、输出、通讯等都使用同样的方法然后进行进一步设置,例如选择高速计数器的类型为HSCsimpleIO上的扩展:Catridge、COM_Bus和IO_Bus,采用右键菜单,选择“添加设备”,Page15,ConfidentialPropertyofSchneiderElectric|,SoMachine应用程序树,编程的功能,应用程序树包含了软件编程核心的功能采用右键菜单,选择“添加对象”,可添加的对象包括最常用的POU、跟踪、可视化、配方.然后选择添加程序组织单元POU,在POU中选择此POU是程序、功能块还是函数,Page16,ConfidentialPropertyofSchneiderElectric|,SoMachine应用程序树续,任务的配置和POU的调用,在任务配置中可创建多个任务,MAST任务在创建项目后自动创建选择某一任务,例如MAST任务,双击进入任务配置界面,设置任务优先级(数值越小越高)和任务的类型,如果是循环的,则每隔一段设置的“间隔”时间自动执行。,Page17,ConfidentialPropertyofSchneiderElectric|,SoMachine应用程序树续,任务的配置和POU的调用,在任务配置中可设置软件看门狗,看门狗的报警时间时间*“灵敏度”在“添加调用”选择在任务中执行的程序组织单元POU。,Page18,ConfidentialPropertyofSchneiderElectric|,SoMachine工具树,库文件的添加和配置,施耐德提供大量的库文件供最终用户使用,有些库在添加硬件时自动添加,有些库可以手动添加在工具树还有一个重要功能是工程设置,Page19,ConfidentialPropertyofSchneiderElectric|,SoMachine六种编程语言一,FBD/LD/IL/CFC/ST/SFC,梯形图LD是基于图形的编程语言,梯形图语言沿袭了继电器控制电路的形式,梯形图是在常用的继电器与接触器逻辑控制基础上简化了符号演变而来的,具有形象、直观、实用等特点,电气技术人员容易接受,是电气人员编程使用比较多的语言指令列表(IL)是一种类似汇编程序的IEC61131-3编程语言,适合熟练掌握机器语言的IT人员来使用,该语言支持基于累加器的编程。支持IEC61131-3操作符以及多输入/多输出、取反、注释、输出的设置/重置和无条件/有条件跳转。每个指令主要通过使用LD操作符将值载入累加器来发挥作用。此后会使用从累加器中获得的第一个参数执行操作。操作的结果可在累加器中使用,Page20,ConfidentialPropertyofSchneiderElectric|,SoMachine六种编程语言二,FBD/LD/IL/CFC/ST/SFC,FBD功能块图是面向图形的编程语言,是一种类似于数字逻辑电路结构的编程语言,是一种使用布尔代数的图形逻辑符号来表示的控制逻辑,一些复杂的功能用指令框表示,适合于有数字电路基础的编程人员使用。功能块图用类似于与门、或门的框图来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框用“导线”连在一起,信号自左向右连续功能图(CFC)语言是用图形方式连接程序库中以块的形式提供的各种功能,包括从简单的逻辑操作到复杂的功能块调用。编程时将这些块放到图中并用线连接起来即可。功能块自由放置,调整图形元素,允许将功能块的输出反过来接到输入。,Page21,ConfidentialPropertyofSchneiderElectric|,SoMachine六种编程语言三,FBD/LD/IL/CFC/ST/SFC,ST语言是定位给程序设计者使用的,它是一个与Pascal语言相类似的高级程序设计语言.程序包含了一些象DO-WHILE、REPEAT-UNTIL、FOR-TO-DO、IF-THEN-ELSE、CASE-OF的结构语句使用,方便用户编程,虽然不直观,但是编程方便,相比梯形图来说占用空间小,建议使用SoMachine软件的编程人员都要掌握这种编程方法。SFC顺序功能图,也称为顺序功能流程图,是一种强大的描述控制程序的顺序行为特征的图形化语言,可对复杂的过程或操作由顶到底地进行辅助开发,特别适合用于有固定流程的工艺过程。SFC允许一个复杂的问题逐层地分解为步和较小的能够被详细分析的顺序。SFC本身不是一种独立的语言.一个用SFC编写的程序看上去就象一个方框图,这个方框图由程序块(梯阶)、步间的转换和发生这些转换时所依赖的条件组成。,Page22,ConfidentialPropertyofSchneiderElectric|,SoMachine编程中的变量声明,变量声明,可通过以下方式声明一个变量:在软件目录的变量视图中在POU的声明编辑器中-手动添加,常用通过自动声明对话框最常用在DUT编辑器中在GVL编辑器中-手动添加,常用变量声明的语法:AT:=;:=这部分根据需要填写,可以没有初始值。变量的数据类型VAR_INPUT、VAR_OUTPUT、VAR_IN_OUT、VAR_GLOBAL、VAR_TEMP、VAR_STAT、VAR_EXTERNAL、VAR_CONFIG,Page23,ConfidentialPropertyofSchneiderElectric|,SoMachine编程中的变量声明,变量声明,变量数值的断电保持(剩余变量和保留持久性变量):前1000个%MW会自动持久保留,如果没有使用AT指令与这些变量关联。它们的值在重新启动/热复位/冷复位后得到保留。在GVL编辑器中声明为VARGLOBALPERSISTENTRETAIN,即将变量m1声明为保留持久性变量,Page24,ConfidentialPropertyofSchneiderElectric|,SoMachine的梯形图编程界面和常用指令,梯形图的编程,在FBD/LD/IL编辑器中,可选择梯形图编程时的所有元素包括:插入新的网络(即新的梯级)、常开、常闭、上升沿、下降沿触点、串联或并联触点、线圈、(置位线圈、复位线圈、取反线圈)、定时器(TON,TOFF,TP)、比较器可插入跳转或返回return可通过空功能块调用库中或用户自己编写的功能块可插入分支通过视图可以将程序在FBD、IL或LD三种语言中切换推荐用户尽快熟悉和使用ST编程语言,Page25,ConfidentialPropertyofSchneiderElectric|,SoMachine的常用指令,常用基本指令,基本算术指令(由IEC1131-3标准规定)可用:ADD加、MUL-乘、SUB减、DIV除、MOD-取余数、MOVE赋值操作逻辑操作操作符可用(与IEC1131-3标准匹配):AND-与、OR-或、XOR异或、NOT-取反移位操作符SHL-用于操作数的逐位左移位的IEC操作符。erg:=SHL(in,n)in:将向左移位的操作数;n:in向左进行移位的位数SHR-用于操作数的逐位左移位的IEC操作符ROL循环左移ROR-循环右移,Page26,ConfidentialPropertyofSchneiderElectric|,SoMachine的常用指令,常用基本指令,移位操作符SHR-用于操作数的逐位右移位的IEC操作符,左侧以0填充。erg:=SHR(in,n)in:将向右移位的操作数;n:in向左进行移位的位数ROL-循环左移用于对操作数进行向左逐位旋转的IEC操作符。允许的数据类型:BYTE、WORD、DWORD、LWORDin将n次向左进行1个位置的移位,而距离左侧最远的位将从右侧重新插入例:ROR-循环右移,Page27,ConfidentialPropertyofSchneiderElectric|,SoMachine的常用指令,常用基本指令,选择操作符SEL-选择操作符还可以通过变量来执行。用于二进制选择的IEC选择操作符。G将决定是否把IN0或IN1分配到OUT。OUT:=SEL(G,IN0,IN1);则ifG=FALSE,OUT:=IN0;ifG=TRUEOUT:=IN1MAX-取两个值中的最大值MIN-取两个值中的最小值LIMIT-限制函数OUT:=LIMIT(Min,IN,Max)N(MAX(IN,Min),Max)Max是结果的上限,而Min是结果的下限。如果值IN超出上限Max,则LIMIT将返回Max。如果IN低于Min,则结果将为Min。IN和OUT可以是任何类型的变量。,Page28,ConfidentialPropertyofSchneiderElectric|,SoMachine的常用指令,常用基本指令,选择操作符MUX-选择操作符还可以通过变量来执行IEC选择操作符,用于多路复用操作。OUT:=MUX(K,IN0,.,INn)意味着:OUT:=INkIN0,.,INn和OUT可以是任何类型的变量。K必须是BYTE,WORD,DWORD,LWORD,SINT,USINT,INT,UINT,DINT,LINT,ULINT或UDINT。MUX用于从一组值中选择第K个值。IN和OUT可以是任何类型的变量。,Page29,ConfidentialPropertyofSchneiderElectric|,SoMachine的梯形图编程界面和常用指令,常用基本指令,比较操作符GTGT操作符是布尔操作符,当第一个操作数的值大于第二个操作数的值时,返回值TRUE。LTLT操作符是布尔操作符,当第一个操作数的值小于第二个操作数的值时,返回值TRUE。LELE操作符是布尔操作符,当第一个操作数的值小于或等于第二个操作数的值时,返回值TRUE。GE-GE操作符是布尔操作符,当第一个操作数的值大于或等于第二个操作数的值时,返回值TRUE。EQEQ操作符是布尔操作符,当两个操作数相等时,返回值TRUE。NENE操作符是布尔操作符,当操作数不相等时,返回值TRUE。地址操作符ADR-ADR用于返回其参数的地址,以DWORD为数据类型。此地址可以分配给工程中的指针。-可以用内容操作符,传递指针指向的内容例如pt:=ADR(var_int1);var_int2:=pt;,Page30,ConfidentialPropertyofSchneiderElectric|,SoMachine的梯形图编程界面和常用指令,常用基本指令,显式转换操作符BOOL_TO转换TO_BOOL转换整数类型之间的转换REAL_TO-/LREAL_TO转换TIME_TO/TIME_OF_DAY转换DATE_TO/DT_TO转换STRING_TO转换TRUNC(浮点数转换为DINT)TRUNC_INTANY_NUM_TO_ANY_._TO转换。,Page31,ConfidentialPropertyofSchneiderElectric|,SoMachine的梯形图编程界面和常用指令,常用基本指令,数学函数ABS-绝对值SQRT开根号LN自然对数LOG-返回以10为底数的数字的对数值。EXP-数字IEC操作符,用于返回指数函数SIN-用于返回角的正弦值。以弧度为单位,输出变量必须是REAL或LREAL类型。COS-余弦函数TAN-正切函数ASIN反正弦ACOS反余弦ATAN反正切EXPT-用于使用一个变量对另一个变量求幂,Page32,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真和调试技巧,Page33,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真,程序的在线仿真,通过编译等选项查找程序的语法错误后,可使用仿真查找程序中可能存在的逻辑错误仿真功能可以在不连接到实际PLC进行软件的调试在“在线”菜单下勾选“仿真”然后在设备树选择在线的“codesys”然后登陆如果项目是最新的,要重新检查,点击:重新编译,Page34,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真-续,程序的在线仿真,在弹出的对话框确认选择“Yes”选择登录到仿真PLC“W7CN10212000810”然后SoMachine提示仿真器没有程序,在对话框中选择“是”SoMachine将下载程序,程序下载后点击运行程序运行后在编程软件中显示“运行”,Page35,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真-续,程序的在线仿真,程序运行后,先在准备值中设好需要的数据值,然后按CTRL+F7修改值如果需要更改变量的显示模式例如改为16进制显示,“调试”-“显示模式”-“16进制”,Page36,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真,程序的变量监视,程序运行后,可以在监视窗口添加要监视的变量,这样调整程序中的问题更方便,Page37,ConfidentialPropertyofSchneiderElectric|,SoMachine的在线仿真,程序的变量的交叉参数和查找,当程序比较大,变量被多次读写和调用,这时可以使用交叉参考和程序搜索功能帮助查找问题直接按Ctrl+F,查找的结果在消息变量对话框中,Page38,ConfidentialPropertyofSchneiderElectric|,SoMachine的内部画面和功能块演示,Page39,ConfidentialPropertyofSchneiderElectric|,SoMachine的内部画面,首先创建一个CFC编程的POU,加入ATV320控制功能块,然后创建SoMachine内部画面,Page40,ConfidentialPropertyofSchneiderElectric|,SoMachine的内部画面,添加内部画面完成后,在内部画面中选择Frame加入,Page41,ConfidentialPropertyofSchneiderElectric|,SoMachine的内部画面,在内部画面中选择Control_ATV功能块,然后在m_input中的.,在输入助手中关联POU中的功能块实例,Page42,ConfidentialPropertyofSchneiderElectric|,SoMachine项目相关练习,编程基础,练习1在SoMachine中新建TM241的项目。练习2打开一个IMC卡的TVDA项目,观察此TVDA项目的结构。练习3创建一个库文件,用于实现卷径的计算,卷径采用R=R0+2*h*m,其中R是实时卷径,R0是卷筒的直径、h为卷材的厚度,m为卷材的圈数。编程语言不限,要求编写实现此运算的功能块的编译库,并在新项目中添加并完成调用。,Page43,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,Page44,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,梯形图的编程,结构文本是一种高级语言,如果你知道如何使用高级语言来编程,像:Basic、PACSAL或C,那么你会很轻松的掌握StructuredText(ST)编程;如果了解这些高级语言,你也会看到ST有着简单、标准的结构,程序运行高效、阅读程序简洁易懂等突出的优点。ST使用了高级语言的许多传统特性,包括:变量、操作符和控制流程语句。ST提供以下功能:数字量和模拟量I/O逻辑操作和逻辑比较表达式算术运算判断语句循环语句功能块可选用的动态变量诊断工具,Page45,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,表达式表达式是指返回变量评估值的结构。表达式由操作符和操作数组成。操作数可以是常量,变量,调用函数或其它表达式。赋值操作符通过一个表达式和一个值来给变量赋值。赋值语句包括位于左边的变量,赋值操作符“:=”,及后边需要计算的表达式。所有的语句,包括赋值语句,必须要以分号“;”结尾。注意“=”是比较两者是否相等!注释虽然注释经常被删掉,但它们是源代码中非常重要的一部分。它们解释了一部分代码,使程序更易读懂。注释帮助你或其他人读你的程序,即使过去了很长时间。注释不被编译,因此不会影响程序的执行。注释应该用一对星号和小括号括起来“(*comment*)”或者在原有的程序加两个反斜杠“/”使原来的程序不起作用,Page46,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,操作符优先级如果在一个表达式中使用几个操作符,就会出现优先级的问题(执行的顺序)。操作符按优先级的顺序来执行。在任何一个表达式中,首先执行最高级别的操作符,接着执行低一级的操作符,等等,直到执行完所有的操作符。具有相同级别的操作符按照书写顺序从左至右依次执行。,Page47,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,SoMachine的数据类型SoMachine的数据类型分为两类:标准型和用户定义类型。标准型的数据类型BOOL、整数、REAL/LREAL、STRING、时间数据类型(TOD和DT)和某些标准型的扩展,Page48,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,数组和结构,扩展的数据类型-数组支持将一维、两维或三维数组。在POU的声明部分以及全局变量中定义数组。还可以使用隐式边界检查。:ARRAY.,.,.OF,其中,ll1,ll2,ll3标识字段范围的下限。ul1,ul2和ul3标识字段范围的上限。范围值必须为整数类型。例如声明一个扑克牌的二维数组:Card_game:ARRAY1.13,1.4OFINT;数组初始化举例:arr1:ARRAY1.5OFINT:=1,2,3,4,5;扩展的数据类型-结构在工厂生产产品的出厂信息包括了名字、批次、出厂日期等等数据,无法用一种数据类型进行描述,这时要用到结构体数据类型。TYPE:STRUCT.END_STRUCTEND_TYPE是在工程中识别的类型,并且可以用作标准数据类型。结构体允许嵌套但是不支持AT指令。多边形的结构定义示例:TYPEPolygonline:STRUCTStart:ARRAY1.2OFINT;Point1:ARRAY1.2OFINT;Point2:ARRAY1.2OFINT;Point3:ARRAY1.2OFINT;Point4:ARRAY1.2OFINT;End:ARRAY1.2OFINT;END_STRUCT,Page49,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,枚举,扩展的数据类型-枚举一个星期七天,一年只有十二个月,红绿灯有红、白、蓝三个颜色等等。串口校验方式:奇、偶、无。CANopen的状态:语法TYPE(,.,)|;END_TYPE类型的变量可以采用下列其中一个枚举值并且将以第一个枚举值进行初始化。这些值与整数兼容!如果枚举值未以声明中的特定值进行初始化,则计数将从0开始。初始化时,请确保初始值在组件行中增加。,Page50,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,布尔逻辑操作布尔逻辑操作的操作数可以是BOOL、字节、字、双字或长双字等类型。,Page51,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,布尔逻辑操作编程举例1在下面的电气图中DISilo1Up是常开触点,DoValveSilo2和DoValveSilo3是常闭触点,DoValveSilo1是线圈,使用ST语言进行编程。布尔逻辑操作编程例2在下面的电气图中MotorStart是电机启动按钮,MotorStop电机停止按钮,Motor_Thermal是电机的热保护常闭触点,MotorRun是线圈和它的常开触点,应如何进行编程?,Page52,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,基本算术运算SoMachine提供的基本运算包括加+、减-、乘*、除/和模除Mod。变量类型在算术运算中非常重要从下面的运算结果中可以看出变量类型对计算结果的影响,当res3为整型时,程序的编译将直接报错!。,Page53,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,变量类型的隐式转换该类型的转换由编译器完成。编译器将表达式中低的数据类型转换成高的数据类型。如果有两种或多个类型的变量参与运算,那么必须将它们转换成相同的类型以便执行运算。编译器会将USINT转为INT进行计算,如将VAR1_INT的变量类型设为USINT,编译会报错,提示不能转换。,Page54,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,变量类型的显式转换隐式转换不允许从较大的类型为较小的类型(例如,从INT到BYTE或从DINT到WORD)。因此,必须使用显式交换才能执行特殊的类型转换。显式交换基本上可以在任何基本类型之间转换。显性数据类型转换也是数据类型转换问题。我们知道,表达式的左右两边要有相同的数据类型,但还需注意上面编程的问题初看好像没什么问题,但是要注意有时两个INT的和会超过INT的范围(-32768到32767),这时程序就应修改为:比较指令高级编程语言ST允许比较操作的简单结构分支。比较的结果是真(TRUE)或假(FALSE)。比较操作作为一个逻辑条件用在IF,ELSE,WHILE和UNTIL语句中。,Page55,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,比较指令:判断指令:用IF语句表示判断,这里还要用到比较操作。判断分三部分:简单IF语句IFELSE语句IFELSIF语句嵌套的IF。,Page56,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,判断指令:最简单的IF指令基本上,如果条件表达式的结果为TRUE就执行语句。如果条件表达式的结果是FALSE,程序就执行END_IF后面的语句。条件表达式可以是简单关联的语句或用运算符(and,or等)连接的复合语句,Page57,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,SoMachine的ST编程语言,编程基础,IF-ELSE指令它是简单IF语句的扩展。在IF结构中应该只有一个ELSE语句。当条件为true时执行THEN后面的代码,当条件为false时执行ELSE后面的程序IF-ELSIF-ELSE运用一个或多个ELSE_IF语句可以实现多个不同的条件,而不用多个简单的IF语句创建复杂的程序逻辑。处理器自上而下地执行判定。如果条件的结果为TRUE,那么就执行属于这个条件的指令和命令,之后处理器就跳到判断语句的结尾(END_IF)。在程序的一次循环中,无论下一个条件是否为TRUE,只有上面属于第一个条件TRUE的语句被执行。如果IF或ELSIF条件都不为TRUE,那么就执行属于ELSE下的指令。,Page58,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,嵌套的IF语句嵌套对于依赖其它条件的条件测试很有用处。一个嵌套的IF语句其优先级低于上一层的优先级,它的执行取决于上一层IF条件的结果。使用嵌套时必须注意每个IF要和END_IF相匹配,否则会导致错误的执行顺序。当if语句中的执行语句又是if语句时,则构成了if语句嵌套的情形。其一般形式可表示如下:if(表达式)if语句;或者为:if(表达式)if语句;elseif语句;在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。建议在每个嵌套的IF语句和它的执行语句中使用缩排。IF语句可以嵌套在你想要的深度,但是级数过多将占用非常多的内存,所以这嵌套最多应使用3级嵌套,如果超过三级嵌套,应重新改写程序!练习:请使用ST语言编写程序判断某一年是否是闰年,仿真设置不同的数值检查程序是否正确。,Page59,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,CASE语句在CASE语句中,控制变量与几个值作比较,如果表达式的结果与其中一个值相同,那么就执行相应的语句。如果表达式的结果与任何一个值都不相同,那么就执行象IF语句一样的ELSE分支。语句执行完后,继续执行END_CASE后的程序。CASE语句的语法:CASE语句以CASE开始,以END_CASE结束,并且各自单独占一行。在CASE和OF之间的变量必须是UINT类型。在CASE的子句中,只能使用正整数,不允许使用变量名或表达式。数字不能重叠使或在几个区域内使用。,Page60,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,循环语句-FOR指令语法循环次数已知时,可以用for语句实现循环结构。循环变量则从“初值”开始逐次增加到“终值INT_Var:INT;FOR:=TOBYDOEND_FOR;括号中的段为可选。注意:如果等于数据类型的最大限制值,例如变量的类型为SINT而终值设为127将导致无穷循环。,Page61,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,循环语句-While指令当循环次数未知,只能根据某一条件来决定是否进行循环时,用while语句或repeat语句实现循环要更方便。如果条件最初并为“假”,则不会执行循环。如果条件最初为“真”,在程序运行中变为“假”,则循环会终止。WHILEDOEND_WHILE;初始和当前布尔表达式必须在循环指令内的某些点设置值变为“假”。否则,循环将不会终止,导致无限、无穷循环条件。循环语句-Repeat指令用while语句可以实现当型循环,用repeat-until语句可以实现直到型循环。repeat-until语句的含义是:重复执行循环,直到指定的条件为真时为止。REPEATUNTILEND_REPEAT;只要返回“真”,就会反复执行如果已经在第一个UNTIL计算生成,则只会将执行一次。必须在循环指令内的某些点设置值“真”。否则,循环将不会终止,导致无限、无穷循环条件。练习:请编写程序求m!+(m+1)!+(m+2)!之和,当m=7,20时的值分别是多少?,Page62,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,循环语句-EXIT指令EXIT语句是当终止条件满足时,退出所有的循环语句。初始和当前布尔表达式必须在循环指令内的某些点设置值变为“假”。否则,循环将不会终止,导致无限、无穷循环条件。循环语句-Contiue指令continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环,FOR、WHILE和REPEAT循环中支持CONTINUE指令。,Page63,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,跳转语句-JMP指令JMP指令用于实现程序无条件跳转到标签标记的代码行。注意:使用过多的JMP会降低程序的可读性,增加程序维护的难度。RETURN指令使用RETURN指令来离开POU,并结束后面语句的执行。,Page64,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,调用功能块在SoMachine中使用F2功能键调用功能块。下面的程序调用了上升沿功能块。,Page65,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,上电后的初始化程序在SoMachine中常常需要进行PLC的上电初始化,这时需用到:IsFirstMastCycle-第一个MAST循环期间返回TRUEIsFirstMastColdCycle-下载或冷复位后的第一个循环IsFirstMastWarmCycle-热启动后的第一个MAST循环期间返回TRUE。,Page66,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,常用功能块。,Page67,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,练习1在SoMachine中使用F2功能键调用功能块。实现按下启动按钮后延时两秒启动电机。练习2创建一个程序来计算传送带上瓶子的数量。运用STANDARD库中的CTU(上升沿计数器)功能块。使用CTU完成瓶子的计数,每计数24个计一箱。每5000箱一个班次,Page68,ConfidentialPropertyofSchneiderElectric|,SoMachine的ST编程语言,编程基础,练习3试编写程序,实现按一下按钮DI4选择电机1,再按超过2秒取消选择,DI5是电机1的启动按钮,DI6是电机1的停止按钮,DI7是热保护继电器的端子,常闭,输出是DQ1。请编写程序实现上述逻辑要求。练习4在三位的整数中,例如153可以满足13+53+33=153,这样的数称之为Armstrong数,试写出一程式找出所有的三位数Armstrong数。练习5:请编写程序求120之间的素数。,Page69,ConfidentialPropertyofSchneiderElectric|,SoMachine典型编程举例PTO,Page70,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的配置和编程,在设备树下选择Pulse_Generators选择脉冲发生功能下选择PTO选择脉冲方式为脉冲加方向设置辅助输入:原点开关REF、Z脉冲和探针PROBE,Page71,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的配置和编程,PTO的三种脉冲输出模式正反转脉冲脉冲加方向正交-AB两相差90的输出方式,Page72,ConfidentialPropertyofSchneiderElectric|,PTO的加减速时间和JerkRatioJerkRatio为0时是梯形斜坡且加减速通用JerkRatio大于0则是S曲线JerkRatio越大加减速的直线部分越短加减速单位以赫兹/毫秒表示,代表速度变化比率。以毫秒表示,代表从0上升到最大速度所需的时间。,SoMachine典型应用编程,PTO的配置和编程,PTO的限位软件限位在PTO的配置中默认范围是在-2,147,483,648到2,147,483,647,并要求正软件限位的值要大于负软件限位的值,Page73,ConfidentialPropertyofSchneiderElectric|,PTO的硬件限位硬件限位在PTO_Power功能块的MC_Power_PTO.LimP和MC_Power_PTO.LimN正负限位管脚上硬件限位要求必须是常闭,PTO配置中的几个参数说明启动速度:是步进电机拖动负载且不失步的情况下可以开始移动的最小频率。当从速度0开始运动时使用启动速度参数,此速度应小于最大速度。停止速度:是步进电机拖动负载且不失步的情况下停止移动的最大频率。仅当从高于停止速度的速度降速到速度0时,使用停止速度。最大速度:机械或电机允许的最大运行速度。,SoMachine典型应用编程,PTO的配置和编程,PTO的功能块分为两类运动功能块管理功能块,Page74,ConfidentialPropertyofSchneiderElectric|,PTO的模式切换状态图,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Power_PTOMC_Power_PTO功能块的status输出为真是其它运动功能块的执行前提。功能块的Drive_Ready输入是驱动器的外部准备完成,必须为真才能使能。LimP和LimN可以外接硬件限位,这时硬件限位必须接到PLC的逻辑输入上,如不使用硬件限位,将这两个输入置位为TrueAxis的管脚输入填入在硬件配置中的名字,默认为PTO_0或PTO_1功能块输出Error在检测到错误时置位为真,功能块执行结束,可在ErrorID检查故障码,方便查找故障的原因,Page75,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO和MC_Setposition_PTOMC_Home_PTO功能块的用于伺服的回原点,原点开关在PTO配置中开启原点开关必须接到PLC而不是伺服。Execute上升沿执行功能块,Direction只接受mcPositiveDirection和mcNegativeDirection。Axis的管脚填入在硬件配置中的名字,默认为PTO_0或PTO_1功能块输出Error在检测到错误时置位为真,在ErrorID检查故障码,帮助查找故障的原因PTO的MC_Home_PTO回零模式共有六种:长参考,正向(负向)回归到反向(前向)的参考开关下降沿。长参考和索引,短参考反向,短参考无反向,短参考和索引在外,短参考和索引在内。,Page76,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO回原点模式长参考和索引正向(反向),回归到反向(前向)参考开关下降沿后的第一个索引。此回原点模式必须配置REF和INDEX两个逻辑输入,Page77,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO回原点模式短参考反向正向(反向),回归到前向的参考开关上升沿。这种回原点方式可以实现碰到一侧硬限位反向。,Page78,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO回原点模式短参考无反向正向(反向),低速回归到前向(反向)的参考开关上升(下降)沿,无反向。碰到硬限位报错。,Page79,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO回原点模式短参考和索引在外正向(反向),回归到前向参考开关转换开启和关闭后的第一个索引(Z相脉冲)。,Page80,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Home_PTO回原点模式短参考和索引在内正向(反向),回归到前向参考开关上升沿后的第一个索引(Z相脉冲)。,Page81,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的运动模块,PTO的MC_Setposition_PTOMC_Setposition_PTO功能块的用于将当前点设成新的绝对位置值功能块执行完成,运动轴获得原点,可以执行绝对位置移动。Axis的管脚输入填入在硬件配置中的名字,默认为PTO_0或PTO_1功能块输出Error在检测到错误时置位为真,功能块执行结束,可在ErrorID检查故障码,方便查找故障的原因PTO的MC_MoveAbsolute_PTO绝对运动:伺服轴寻零结束后才能进行绝对移动需设置运动加减速和最大运行速度和方向MC_DIRECTION当有多个功能块切换时还需设置缓冲模式BufferMode,Page82,ConfidentialPropertyofSchneiderElectric|,SoMachine典型应用编程,PTO的配置和编程,PTO的功能块的缓冲模式某些运动功能块有一个称为缓冲区模式BufferMode的输入。使用此输入,功能块可以立即启动,在发生探测事件时启动,也可以进入缓冲区。在类型MC_BUFFER_MODE三个不同的工作方式:如果设置为(mcAborting),则中止正在进行的任何移动,并清除运动队列。缓冲的运动(mcBuffered、mcBlendingPrevious、seBufferedDelay)排入队列,即附加到当前正在执行或等待执行的任何移动后,将在前一个运动完成后开始。如果功能块的缓冲模式是(seTrigger),则在出现探针事件时启动执行MC_Stop_PTO功能时:在清

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论