1、SoMachine 软件介绍和编程培训Confidential Property of Schneider Electric王兆宇2018-5-12Confidential Property of Schneider Electric|1SoMachine软件简介软件简介2SoMachine软件编程入门培训软件编程入门培训3SoMachine典型编程举例典型编程举例-HSC4SoMachine典型编程举例典型编程举例-PTO5SoMachine典型编程举例典型编程举例-Modbus6SoMachine典型编程举例典型编程举例-CANopen7SoMachine在线编译、诊断在线编译、诊断SoM
2、achineConfidential Property of Schneider Electric|Confidential Property of Schneider ElectricSoMachine V4.3 编程软件编程软件V1 2007V2 2009V3 2011V4.12014u友好的软件界面友好的软件界面u丰富的编程语言丰富的编程语言u灵活的配置方案灵活的配置方案u详实的在线帮助详实的在线帮助V4.1 SP12015V4.2 2016V4.3 2017V4.3 SP22018Confidential Property of Schneider ElectricSoMachine
3、V4.2/V4.3 自定义安装自定义安装Windows 7 SP1 专业版 32 位/64 位Windows 8.1专业版 32 位/64 位Windows 10专业版 32 位/64 位PC推荐配置CPU-Intel Core i7内存-8G硬盘-15G空闲空间SoMachine 4.2/4.3 软件下载:请关注微信号SoMachine然后在首页中下载SoMachine 4.1授权在4.2/3中有效SoMachine 具有强大的设备集成能力具有强大的设备集成能力简化机器的工程阶段 实现完整的机器设备程序,通过:1 项目文件项目文件 1 次下载次下载 1 根编程电缆根编程电缆 TVDA文档和项
4、目文件可以重复使用在相同机器上,大量节省设计时间。注:TVDA:Tested Validated Documented Architecture Confidential Property of Schneider Electric|高级集成 设备元件本体集成在SoMachine编程软件中,方便使用SoMachine兼容FDT/DTM 使用FDT/DTM 的好处:所有集成设备的一致性基于统一的标准,开放第三方产品的接入Confidential Property of Schneider Electric|通过拖放来配置你的设备通过拖放来配置你的设备 从设备和模块目录 本地集成减少操作次数 驱动
5、器是预配置好的驱动器是预配置好的 网络配置已经预设值完成 现场总线预配置完成 配置好的IO映射能够简化项目的开始阶段 自动加载库文件第一步快速而且简单:拖放 编译 下载 运行!SoMachine编程入门Confidential Property of Schneider Electric|SoMachine软件软件如何启动SoMachine和更改编程软件的语言 从窗口的开始菜单选择从窗口的开始菜单选择SoMachine V4.2/4.3 或者双击桌面上的或者双击桌面上的SoMachine V4.2/4.3打开SoMachine软件 SoMachine第一次打开后是英文版第一次打开后是英文版在系
6、统设定-logic builder option-International setting-选择中文,选择后点击OK然后退出SoMachine再重新进入就是中文界面了Confidential Property of Schneider Electric|SoMachine软件启动介绍软件启动介绍SoMachine 软件启动画面 进入进入SoMachine V4.2软件后软件后在启动界面下共有四个选项在启动界面下共有四个选项最近的项目-打开最近编辑过的项目连接控制器新建项目打开项目 选择新建项目后选择新建项目后SoMachine提供4个新建项目的方式,分别是:使用助手带模块空项目新建库Conf
7、idential Property of Schneider Electric|SoMachine软件创建新的项目软件创建新的项目使用模板 使用模板中的使用模板中的TVDA创建项目创建项目在带模板选项下面,选择机器类型并填写项目名称在带模板选项下面,选择机器类型并填写项目名称Confidential Property of Schneider Electric|SoMachine软件创建新的项目软件创建新的项目使用空项目创建新项目 使用空项目创建新的项目,项目中的使用空项目创建新的项目,项目中的PLC、触摸屏等硬件和程序需手动添加、触摸屏等硬件和程序需手动添加Confidential Prop
8、erty of Schneider Electric|SoMachine软件创建新的库软件创建新的库使用空项目创建新库 使用空项目创建新的库使用空项目创建新的库-库的名称和库的属性库的名称和库的属性Confidential Property of Schneider Electric|SoMachine主页面编程环境介绍主页面编程环境介绍主界面简介 多选项卡导航器:设备树、应用程序树和工具树Confidential Property of Schneider Electric|SoMachine设备树设备树硬件配置 在设备树下双击需要编辑的条目在设备树下双击需要编辑的条目例如需要设置高速计数器
9、则双击counter,其它设置例如PTO,逻辑输入、输出、通讯等都使用同样的方法 然后进行进一步设置,例如选择高速计数器的类型为HSCsimple IO上的扩展:上的扩展:Catridge、COM_Bus和和IO_Bus,采用右键菜单,选择,采用右键菜单,选择“添加设备添加设备”Confidential Property of Schneider Electric|SoMachine应用程序树应用程序树编程的功能 应用程序树包含了软件编程核心的功能应用程序树包含了软件编程核心的功能 采用右键菜单,选择采用右键菜单,选择“添加对象添加对象”,可添加的对象包括最常用的,可添加的对象包括最常用的PO
10、U、跟踪、可视化、配方、跟踪、可视化、配方.然后选择添加程序组织单元然后选择添加程序组织单元POU,在,在POU中选择此中选择此POU是程序、功能块还是函数是程序、功能块还是函数Confidential Property of Schneider Electric|SoMachine应用程序树续应用程序树续任务的配置和POU的调用 在任务配置中可创建多个任务,在任务配置中可创建多个任务,MAST任务在创建项目后自动创建任务在创建项目后自动创建 选择某一任务,例如选择某一任务,例如MAST任务,双击进入任务配置界面,设置任务优先级(数值越小越高)和任任务,双击进入任务配置界面,设置任务优先级(数
11、值越小越高)和任务的类型,如果是循环的,则每隔一段设置的务的类型,如果是循环的,则每隔一段设置的“间隔间隔”时间自动执行。时间自动执行。Confidential Property of Schneider Electric|SoMachine应用程序树续应用程序树续任务的配置和POU的调用 在任务配置中可设置软件看门狗,看门狗的报警时间在任务配置中可设置软件看门狗,看门狗的报警时间时间时间*“灵敏度灵敏度”在在“添加调用添加调用”选择在任务中执行的程序组织单元选择在任务中执行的程序组织单元POU。Confidential Property of Schneider Electric|SoMac
12、hine工具树工具树库文件的添加和配置 施耐德提供大量的库文件供最终用户使用,有些库在添加硬件时自动添加,有些库可以手动添加施耐德提供大量的库文件供最终用户使用,有些库在添加硬件时自动添加,有些库可以手动添加 在工具树还有一个重要功能是工程设置在工具树还有一个重要功能是工程设置Confidential Property of Schneider Electric|SoMachine六种编程语言一六种编程语言一FBD/LD/IL/CFC/ST/SFC 梯形图LD是基于图形的编程语言,梯形图语言沿袭了继电器控制电路的形式,梯形图是在常用的继电器与接触器逻辑控制基础上简化了符号演变而来的,具有形象、
13、直观、实用等特点,电气技术人员容易接受,是电气人员编程使用比较多的语言 指令列表(IL)是一种类似汇编程序的 IEC 61131-3 编程语言,适合熟练掌握机器语言的IT人员来使用,该语言支持基于累加器的编程。支持 IEC 61131-3 操作符以及多输入/多输出、取反、注释、输出的设置/重置和无条件/有条件跳转。每个指令主要通过使用 LD 操作符将值载入累加器来发挥作用。此后会使用从累加器中获得的第一个参数执行操作。操作的结果可在累加器中使用Confidential Property of Schneider Electric|SoMachine六种编程语言二六种编程语言二FBD/LD/IL
14、/CFC/ST/SFC FBD功能块图是面向图形的编程语言,是一种类似于数字逻辑电路结构的编程语言,是一种使用布尔代数的图形逻辑符号来表示的控制逻辑,一些复杂的功能用指令框表示,适合于有数字电路基础的编程人员使用。功能块图用类似于与门、或门的框图来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,方框用“导线”连在一起,信号自左向右 连续功能图(CFC)语言是用图形方式连接程序库中以块的形式提供的各种功能,包括从简单的逻辑操作到复杂的功能块调用。编程时将这些块放到图中并用线连接起来即可。功能块自由放置,调整图形元素,允许将功能块的输出反过来接
15、到输入。Confidential Property of Schneider Electric|SoMachine六种编程语言三六种编程语言三FBD/LD/IL/CFC/ST/SFC ST语言是定位给程序设计者使用的,它是一个与Pascal语言相类似的高级程序设计语言.程序包含了一些象DO-WHILE、REPEAT-UNTIL、FOR-TO-DO、IF-THEN-ELSE、CASE-OF的结构语句使用,方便用户编程,虽然不直观,但是编程方便,相比梯形图来说占用空间小,建议使用SoMachine软件的编程人员都要掌握这种编程方法。SFC顺序功能图,也称为顺序功能流程图,是一种强大的描述控制程序的
16、顺序行为特征的图形化语言,可对复杂的过程或操作由顶到底地进行辅助开发,特别适合用于有固定流程的工艺过程。SFC允许一个复杂的问题逐层地分解为步和较小的能够被详细分析的顺序。SFC本身不是一种独立的语言.一个用SFC编写的程序看上去就象一个方框图,这个方框图由程序块(梯阶)、步间的转换和发生这些转换时所依赖的条件组成。Confidential Property of Schneider Electric|SoMachine编程中的变量声明编程中的变量声明变量声明 可通过以下方式声明一个变量:在软件目录的变量视图中 在 POU 的声明编辑器中-手动添加,常用 通过自动声明对话框 最常用在 DUT
17、编辑器中在 GVL 编辑器中-手动添加,常用 变量声明的语法:AT:=;:=这部分根据需要填写,可以没有初始值。变量的数据类型 VAR_INPUT、VAR_OUTPUT、VAR_IN_OUT、VAR_GLOBAL、VAR_TEMP、VAR_STAT、VAR_EXTERNAL、VAR_CONFIGConfidential Property of Schneider Electric|SoMachine编程中的变量声明编程中的变量声明变量声明 变量数值的断电保持(剩余变量和保留持久性变量):前 1000 个%MW 会自动持久保留,如果没有使用AT指令与这些变量关联。它们的值在重新启动/热复位/冷复
18、位后得到保留。在GVL编辑器中声明为VAR GLOBAL PERSISTENT RETAIN,即将变量m1声明为保留持久性变量Confidential Property of Schneider Electric|SoMachine的梯形图编程界面和常用指令的梯形图编程界面和常用指令梯形图的编程 在FBD/LD/IL编辑器中,可选择梯形图编程时的所有元素包括:插入新的网络(即新的梯级)、常开、常闭、上升沿、下降沿触点、串联或并联触点、线圈、(置位线圈、复位线圈、取反线圈)、定时器(TON,TOFF,TP)、比较器 可插入跳转或返回return 可通过空功能块调用库中或用户自己编写的功能块 可插
19、入分支 通过视图可以将程序在FBD、IL或LD三种语言中切换 推荐用户尽快熟悉和使用ST编程语言Confidential Property of Schneider Electric|SoMachine的常用指令的常用指令常用基本指令 基本算术指令(由 IEC1131-3 标准规定)可用:ADD 加、MUL-乘、SUB 减、DIV 除、MOD-取余数、MOVE 赋值操作 逻辑操作操作符可用(与 IEC1131-3 标准匹配):AND-与、OR-或、XOR 异或、NOT-取反 移位操作符 SHL-用于操作数的逐位左移位的 IEC 操作符。erg:=SHL(in,n)in:将向左移位的操作数;n:
20、in 向左进行移位的位数 SHR-用于操作数的逐位左移位的 IEC 操作符 ROL 循环左移 ROR-循环右移 Confidential Property of Schneider Electric|SoMachine的常用指令的常用指令常用基本指令 移位操作符 SHR-用于操作数的逐位右移位的 IEC 操作符,左侧以0填充。erg:=SHR(in,n)in:将向右移位的操作数;n:in 向左进行移位的位数ROL-循环左移用于对操作数进行向左逐位旋转的 IEC 操作符。允许的数据类型:BYTE、WORD、DWORD、LWORD in 将 n 次向左进行 1 个位置的移位,而距离左侧最远的位将从
21、右侧重新插入 例:ROR-循环右移Confidential Property of Schneider Electric|SoMachine的常用指令的常用指令常用基本指令 选择操作符 SEL-选择操作符还可以通过变量来执行。用于二进制选择的 IEC 选择操作符。G 将决定是否把 IN0 或 IN1 分配到 OUT。OUT:=SEL(G,IN0,IN1);则 if G=FALSE,OUT:=IN0;if G=TRUE OUT:=IN1 MAX-取两个值中的最大值 MIN-取两个值中的最小值 LIMIT-限制函数OUT:=LIMIT(Min,IN,Max)N(MAX(IN,Min),Max)Ma
22、x 是结果的上限,而 Min 是结果的下限。如果值 IN 超出上限 Max,则 LIMIT 将返回 Max。如果 IN 低于 Min,则结果将为 Min。IN 和 OUT 可以是任何类型的变量。Confidential Property of Schneider Electric|SoMachine的常用指令的常用指令常用基本指令 选择操作符 MUX-选择操作符还可以通过变量来执行IEC 选择操作符,用于多路复用操作。OUT:=MUX(K,IN0,.,INn)意味着:OUT:=INk IN0,.,INn 和 OUT 可以是任何类型的变量。K 必须是 BYTE,WORD,DWORD,LWORD,
23、SINT,USINT,INT,UINT,DINT,LINT,ULINT 或 UDINT。MUX 用于从一组值中选择第 K 个值。IN 和 OUT 可以是任何类型的变量。Confidential Property of Schneider Electric|SoMachine的梯形图编程界面和常用指令的梯形图编程界面和常用指令常用基本指令 比较操作符GT GT 操作符是布尔操作符,当第一个操作数的值大于第二个操作数的值时,返回值 TRUE。LT LT 操作符是布尔操作符,当第一个操作数的值小于第二个操作数的值时,返回值 TRUE。LE LE 操作符是布尔操作符,当第一个操作数的值小于或等于第二个
24、操作数的值时,返回值 TRUE。GE-GE 操作符是布尔操作符,当第一个操作数的值大于或等于第二个操作数的值时,返回值 TRUE。EQ EQ 操作符是布尔操作符,当两个操作数相等时,返回值 TRUE。NE NE 操作符是布尔操作符,当操作数不相等时,返回值 TRUE。地址操作符 ADR-ADR 用于返回其参数的地址,以 DWORD 为数据类型。此地址可以分配给工程中的指针。-可以用内容操作符,传递指针指向的内容例如pt:=ADR(var_int1);var_int2:=pt;Confidential Property of Schneider Electric|SoMachine的梯形图编程界
25、面和常用指令的梯形图编程界面和常用指令常用基本指令 显式转换操作符 BOOL_TO 转换 TO_BOOL 转换 整数类型之间的转换 REAL_TO-/LREAL_TO 转换 TIME_TO/TIME_OF_DAY 转换 DATE_TO/DT_TO 转换 STRING_TO 转换 TRUNC(浮点数转换为 DINT)TRUNC_INT ANY_NUM_TO_ ANY_._TO 转换 。Confidential Property of Schneider Electric|SoMachine的梯形图编程界面和常用指令的梯形图编程界面和常用指令常用基本指令 数学函数 ABS-绝对值 SQRT 开根号
26、 LN 自然对数 LOG-返回以 10 为底数的数字的对数值。EXP-数字 IEC 操作符,用于返回指数函数 SIN-用于返回角的正弦值。以弧度为单位,输出变量必须是 REAL 或 LREAL 类型。COS-余弦函数 TAN-正切函数 ASIN 反正弦 ACOS 反余弦 ATAN 反正切 EXPT-用于使用一个变量对另一个变量求幂 Confidential Property of Schneider Electric|SoMachine的在线仿真和调试技巧Confidential Property of Schneider Electric|SoMachine的在线仿真程序的在线仿真 通过编译
27、等选项查找程序的语法错误后,可使用仿真查找程序中可能存在的逻辑错误仿真功能可以在不连接到实际PLC进行软件的调试在“在线”菜单下勾选“仿真”然后在设备树选择在线的“codesys”然后登陆如果项目是最新的,要重新检查,点击:重新编译重新编译Confidential Property of Schneider Electric|SoMachine的在线仿真-续程序的在线仿真在弹出的对话框确认选择“Yes”选择登录到仿真PLC“W7CN10212000810”然后SoMachine提示仿真器没有程序,在对话框中选择“是”SoMachine将下载程序,程序下载后点击运行程序运行后在编程软件中显示“运
28、行”Confidential Property of Schneider Electric|SoMachine的在线仿真-续程序的在线仿真 程序运行后,先在准备值中设好需要的数据值,然后按CTRL+F7修改值 如果需要更改变量的显示模式例如改为16进制显示,“调试”-“显示模式”-“16进制”Confidential Property of Schneider Electric|SoMachine的在线仿真程序的变量监视 程序运行后,可以在监视窗口添加要监视的变量,这样调整程序中的问题更方便Confidential Property of Schneider Electric|SoMachin
29、e的在线仿真程序的变量的交叉参数和查找 当程序比较大,变量被多次读写和调用,这时可以使用交叉参考和程序搜索功能帮助查找问题 直接按Ctrl+F,查找的结果在消息变量对话框中Confidential Property of Schneider Electric|SoMachine的内部画面和功能块演示Confidential Property of Schneider Electric|SoMachine的内部画面首先创建一个CFC编程的POU,加入ATV320控制功能块,然后创建SoMachine内部画面Confidential Property of Schneider Electric|S
30、oMachine的内部画面添加内部画面完成后,在内部画面中选择Frame加入Confidential Property of Schneider Electric|SoMachine的内部画面在内部画面中选择Control_ATV功能块,然后在m_input中的.,在输入助手中关联POU中的功能块实例Confidential Property of Schneider Electric|SoMachine项目相关练习项目相关练习编程基础 练习1在SoMachine中新建TM241的项目。练习2打开一个IMC卡的TVDA项目,观察此TVDA项目的结构。练习3创建一个库文件,用于实现卷径的计算,卷
31、径采用R=R0+2*h*m,其中R是实时卷径,R0是卷筒的直径、h为卷材的厚度,m为卷材的圈数。编程语言不限,要求编写实现此运算的功能块的编译库,并在新项目中添加并完成调用。Confidential Property of Schneider Electric|SoMachine的ST编程语言Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言梯形图的编程 结构文本是一种高级语言,如果你知道如何使用高级语言来编程,像:Basic、PACSAL或C,那么你会很轻松的掌握Structured Text(ST)编程;如果了
32、解这些高级语言,你也会看到ST有着简单、标准的结构,程序运行高效、阅读程序简洁易懂等突出的优点。ST使用了高级语言的许多传统特性,包括:变量、操作符和控制流程语句。ST提供以下功能:数字量和模拟量I/O 逻辑操作和逻辑比较表达式 算术运算 判断语句 循环语句 功能块 可选用的动态变量 诊断工具Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 表达式表达式是指返回变量评估值的结构。表达式由操作符和操作数组成。操作数可以是常量,变量,调用函数或其它表达式。赋值操作符通过一个表达式和一个值来给变量赋值。赋值语句
33、包括位于左边的变量,赋值操作符“:=”,及后边需要计算的表达式。所有的语句,包括赋值语句,必须要以分号“;”结尾。注意“=”是比较两者是否相等!注释虽然注释经常被删掉,但它们是源代码中非常重要的一部分。它们解释了一部分代码,使程序更易读懂。注释帮助你或其他人读你的程序,即使过去了很长时间。注释不被编译,因此不会影响程序的执行。注释应该用一对星号和小括号括起来“(*comment*)”或者在原有的程序加两个反斜杠“/”使原来的程序不起作用Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 操作符优先级如果在一
34、个表达式中使用几个操作符,就会出现优先级的问题(执行的顺序)。操作符按优先级的顺序来执行。在任何一个表达式中,首先执行最高级别的操作符,接着执行低一级的操作符,等等,直到执行完所有的操作符。具有相同级别的操作符按照书写顺序从左至右依次执行。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 SoMachine的数据类型SoMachine的数据类型分为两类:标准型和用户定义类型。标准型的数据类型BOOL、整数、REAL/LREAL、STRING、时间数据类型(TOD 和DT)和某些标准型的扩展Confiden
35、tial Property of Schneider Electric|数据类型数据类型 下限下限 上限上限 存储器空间存储器空间 BYTE 0 255 8 位 WORD 0 65,535 16 位 DWORD 0 4,294,967,295 32 位 LWORD 0 264-1 64 位 SINT 128 127 8 位 USINT 0 255 8 位 INT 32,768 32,767 16 位 UINT 0 65,535 16 位 DINT 2,147,483,648 2,147,483,647 32 位 UDINT 0 4,294,967,295 32 位 LINT 263 263-1
36、 64 位 ULINT 0 264-1 64 位 REAL1.401e-453.403e+3832位LREAL2.2250738585072014e-3081.7976931348623158e+30864位TIME或或LTIME类型举例类型举例TIME1:=T#14ms;TIME1:=T#100S12ms;TIME1:=t#12h34m15s;LTIME1:=LTIME#1000d15h23m12s34ms2us44nsDATE 值可以内部方式处理为值可以内部方式处理为 DWORD 值,包含从值,包含从 1970 年年 01 月月 01 日日 00:00 时钟时间开始的时间范围,以秒为单位。
37、时钟时间开始的时间范围,以秒为单位。例如:例如:DATE#1996-05-06d#1972-03-29TIME_OF_DAY 值可以内部方式处理为值可以内部方式处理为 DWORD 值,包含从值,包含从 00:00 时钟时间开始的时间范围,以毫秒为单位。时钟时间开始的时间范围,以毫秒为单位。例如例如TIME_OF_DAY#15:36:30.123tod#00:00:00SoMachine的的ST编程语言编程语言数组和结构 扩展的数据类型-数组支持将一维、两维或三维数组。在 POU 的声明部分以及全局变量中定义数组。还可以使用隐式边界检查。:ARRAY.,.,.OF ,其中,ll1,ll2,ll3
38、 标识字段范围的下限。ul1,ul2 和 ul3 标识字段范围的上限。范围值必须为整数类型。例如声明一个扑克牌的二维数组:Card_game:ARRAY 1.13,1.4 OF INT;数组初始化举例:arr1:ARRAY 1.5 OF INT:=1,2,3,4,5;扩展的数据类型-结构在工厂生产产品的出厂信息包括了名字、批次、出厂日期等等数据,无法用一种数据类型进行描述,这时要用到结构体数据类型。TYPE:STRUCT .END_STRUCT END_TYPE 是在工程中识别的类型,并且可以用作标准数据类型。结构体允许嵌套但是不支持AT指令。多边形的结构定义示例:TYPE Polygonli
39、ne:STRUCT Start:ARRAY 1.2 OF INT;Point1:ARRAY 1.2 OF INT;Point2:ARRAY 1.2 OF INT;Point3:ARRAY 1.2 OF INT;Point4:ARRAY 1.2 OF INT;End:ARRAY 1.2 OF INT;END_STRUCTConfidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言枚举 扩展的数据类型-枚举一个星期七天,一年只有十二个月,红绿灯有红、白、蓝三个颜色等等。串口校验方式:奇、偶、无。CANopen的状态:语法 TYP
40、E (,.,)|;END_TYPE 类型的变量可以采用下列其中一个枚举值 并且将以第一个枚举值进行初始化。这些值与整数兼容!如果枚举值未以声明中的特定值进行初始化,则计数将从 0 开始。初始化时,请确保初始值在组件行中增加。Confidential Property of Schneider Electric|INIT 初始化0RESET_COMM复位通讯1RESET_APP复位应用2PRE_OPERATIONAL预处理3STOPPED停止4OPERATIONAL正常运行5UNKNOWN未知6NOT_AVAIL不可用7SoMachine的的ST编程语言编程语言编程基础 布尔逻辑操作布尔逻辑操作
41、的操作数可以是BOOL、字节、字、双字或长双字等类型。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 布尔逻辑操作编程举例1在下面的电气图中DISilo1Up是常开触点,DoValveSilo2和DoValveSilo3是常闭触点,DoValveSilo1是线圈,使用ST语言进行编程。布尔逻辑操作编程例2在下面的电气图中MotorStart是电机启动按钮,MotorStop电机停止按钮,Motor_Thermal是电机的热保护常闭触点,MotorRun是线圈和它的常开触点,应如何进行编程?Confide
42、ntial Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 基本算术运算SoMachine提供的基本运算包括加+、减-、乘*、除/和模除Mod。变量类型在算术运算中非常重要从下面的运算结果中可以看出变量类型对计算结果的影响,当res3为整型时,程序的编译将直接报错!。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 变量类型的隐式转换该类型的转换由编译器完成。编译器将表达式中低的数据类型转换成高的数据类型。如果有两种或多个类型的变量参与运算
43、,那么必须将它们转换成相同的类型以便执行运算。编译器会将USINT转为INT进行计算,如将VAR1_INT的变量类型设为USINT,编译会报错,提示不能转换。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 变量类型的显式转换隐式转换不允许从较大的类型为较小的类型(例如,从 INT 到 BYTE 或从 DINT 到 WORD)。因此,必须使用显式交换才能执行特殊的类型转换。显式交换基本上可以在任何基本类型之间转换。显性数据类型转换也是数据类型转换问题。我们知道,表达式的左右两边要有相同的数据类型,但还需注
44、意上面编程的问题初看好像没什么问题,但是要注意有时两个INT的和会超过INT的范围(-32768到32767),这时程序就应修改为:比较指令高级编程语言ST允许比较操作的简单结构分支。比较的结果是真(TRUE)或假(FALSE)。比较操作作为一个逻辑条件用在IF,ELSE,WHILE 和UNTIL语句中。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 比较指令:判断指令:用IF语句表示判断,这里还要用到比较操作。判断分三部分:简单IF语句IF ELSE语句IF ELSIF语句嵌套的IF。Confiden
45、tial Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 判断指令:最简单的IF指令基本上,如果条件表达式的结果为TRUE就执行语句。如果条件表达式的结果是FALSE,程序就执行END_IF后面的语句。条件表达式可以是简单关联的语句或用运算符(and,or等)连接的复合语句Confidential Property of Schneider Electric|判断判断语法语法描述描述IF THENIF a b THEN1.比较 Result:=1;1.条件为真执行ELSIF THENELSIF a c THEN2.比较(可选),
46、可以有多个 Result:=2;2.条件为真执行ELSEELSE前面 IF语句都不满足(可选)Result:=3;3.条件为真执行END_IFEND_IF判断结束SoMachine的的ST编程语言编程语言SoMachine的的ST编程语言编程语言编程基础 IF-ELSE指令它是简单IF语句的扩展。在IF结构中应该只有一个ELSE语句。当条件为 true 时执行THEN后面的代码,当条件为 false 时执行ELSE后面的程序 IF-ELSIF-ELSE运用一个或多个ELSE_IF语句可以实现多个不同的条件,而不用多个简单的IF语句创建复杂的程序逻辑。处理器自上而下地执行判定。如果条件的结果为T
47、RUE,那么就执行属于这个条件的指令和命令,之后处理器就跳到判断语句的结尾(END_IF)。在程序的一次循环中,无论下一个条件是否为TRUE,只有上面属于第一个条件TRUE的语句被执行。如果IF或ELSIF条件都不为TRUE,那么就执行属于ELSE下的指令。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 嵌套的IF语句嵌套对于依赖其它条件的条件测试很有用处。一个嵌套的IF语句其优先级低于上一层的优先级,它的执行取决于上一层IF条件的结果。使用嵌套时必须注意每个IF要和END_IF相匹配,否则会导致错误的
48、执行顺序。当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的情形。其一般形式可表示如下:if(表达式)if语句;或者为:if(表达式)if语句;else if语句;在嵌套内的if语句可能又是if-else型的,这将会出现多个if和多个else重叠的情况,这时要特别注意if和else的配对问题。建议在每个嵌套的IF 语句和它的执行语句中使用缩排。IF语句可以嵌套在你想要的深度,但是级数过多将占用非常多的内存,所以这嵌套最多应使用3级嵌套,如果超过三级嵌套,应重新改写程序!练习:请使用ST语言编写程序判断某一年是否是闰年,仿真设置不同的数值检查程序是否正确。Confidential P
49、roperty of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 CASE语句在CASE语句中,控制变量与几个值作比较,如果表达式的结果与其中一个值相同,那么就执行相应的语句。如果表达式的结果与任何一个值都不相同,那么就执行象IF 语句一样的ELSE分支。语句执行完后,继续执行END_CASE后的程序。CASE语句的语法:CASE语句以CASE开始,以END_CASE结束,并且各自单独占一行。在CASE和OF之间的变量必须是UINT类型。在CASE的子句中,只能使用正整数,不允许使用变量名或表达式。数字不能重叠使或在几个区域内使用。Confiden
50、tial Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 循环语句-FOR指令语法 循环次数已知时,可以用for语句实现循环结构。循环变量则从“初值”开始逐次增加到“终值INT_Var:INT;FOR :=TO BY DO END_FOR;括号 中的段为可选。注意:如果 等于数据类型 的最大限制值,例如变量的类型为SINT而终值设为127将导致无穷循环。Confidential Property of Schneider Electric|SoMachine的的ST编程语言编程语言编程基础 循环语句-While指令 当循环次数未