注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

冷若寒梅

积跬步以致千里life is what you make it.love it

 
 
 

日志

 
 

编程语言及数据类型  

2010-09-12 19:44:59|  分类: CoDeSys |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

CoDeSys是一种功能强大PLC软件编程工具,它支持IEC1131-3标准ILSTFBDLDSFCCFC六种PLC编程语言,用户可在同一项目中根据需要选择不同的语言编写子程序、功能模块等。

一、指令表ILInstruction List

IL程序设计语言是用布尔助记符来描述程序的一种程序设计语言,它与计算机中的汇编语言非常相似,采用布尔助记符来表示操作功能。

指令    描述

LD      读取操作数的值;

ST       把当前值存入操作数;

S           把布尔量操作数置 TRUE

R           把布尔量操作数置FALSE

AND    逻辑与;

OR      逻辑或;

NOT                     逻辑非;

XOR     逻辑异或;

ADD    加;

SUB         减;

MUL   

DIV     

MOD                   求余数;

GT      >

GE      >=

EQ      =

NE      <>

LE      <=

LT       <

JMP      跳转至标志行;

CAL    调用子程序;

RET      返回主程序;

例:

 

 

 

 

 

 

 

 

 

 

其余指令参见CoDeSys手册。例:

LD          TRUE                   (*读取 TRUE*)

ANDN     BOOL1                  (*与变量 BOOL1的反值进行AND 运算*)

JMPC       mark                      (*当结果为 TRUE,跳转至 "mark"*)

LDN              BOOL2                       (*变量BOOL2值取反*)

ST           ERG                     (*把结果存至ERG*)

JMP          end                        (*跳转至 "end"*)

mark:                       (*"mark"标志行*)      

LD          BOOL2                       (*读取BOOL2的值  *)

ST           ERG                     (*BOOL2存至ERG*)

End:                                        (*"end"标志行*)  

 

 

二、梯形图

梯形图程序设计语言是用梯形图的图形符号来描述程序的一种程序设计语言。这种程序设计语言采用因果关系来描述事件发生的条件和结果。每个梯级是一个因果关系。在梯级中,描述事件发生的条件表示在左面,事件发生的结果表示在后面。它来源于继电器逻辑控制系统的描述。指令参见CoDeSys手册,例:

梯形图程序设计语言的特点是:

-        与电气操作原理图相对应,具有直观性和对应性;主要应用于开关量逻辑控制目的的程序

-        与原有的继电器逻辑控制技术的不同点是,梯形图中的能流(Power FLow)不是实际意义的电流,内部的继电器也不是实际存在的继电器,因此,应用时,需与原有继电器逻辑控制技术的有关概念区别对待;  

-        与指令表程序设计语言有一一对应关系,便于相互的转换和程序的检查。

 

三、结构化文本STStructured  Text

ST程序设计语言是用结构化的描述语句来描述程序的一种程序设计语言。它是一种类似于高级语言的程序设计语言。在大中型的可编程序控制器系统中,尤其是大量的模拟量运算和处理,常采用ST语言来描述控制系统中各个变量之间较复杂的控制运算关系,完成所需的功能或操作。

ST语言与BASIC语言或C语言等高级语言相类似,但为了应用方便,在语句的表达方法及语句的种类等方面都进行了简化。

指令         描述

AND         逻辑与;

OR           逻辑或;

NOT                          逻辑非;

XOR           逻辑异或;

+              加;

-              减;

*              乘;

/               除;

MOD                         求余数;

函数名(参数表)      函数调用;

EXPT        幂函数;

<,>,<=,>=         比较;

 

例:

 

 

 

 

 

 

 

 

 

 

 


ST语言除有一般算术运算、逻辑运算、表达式、调用子程序等指令外,还有一些结构化的语句模块。

条件语句:

IF <逻辑表达式1> THEN                    (*表达式为TRUE时,执行功能块一*)

  ...                                                          (*功能块一*)

ELSIF <逻辑表达式2> THEN             (*表达式为TRUE时,执行功能块二*) 

 ...                                                           (*功能块二*) 

ELSIF <逻辑表达式n> THEN             (*表达式为TRUE时,执行功能块n*)

 ...                                                           (*功能块n*)

ELSE

 ...                                                            (*功能块n+1*)

END_IF;                                                  (* 条件结束*)

其余指令用法参见CoDeSys手册。

四、功能模块图FBDFunction Block Diagram

功能模块图程序设计语言是采用功能模块来表示模块所具有的功能,不同的功能模块有不同的功能。它有若干个输入端和输出端,通过软连接的方式,分别连接到所需的其它端子,完成所需的控制运算或控制功能。功能模块可以分为不同的类型,在同一种类型中,也可能因功能参数的不同而使功能或应用范围有所差别,例如,输入端的数量、输入信号的类型等的不同使它的使用范围不同。由于采用软连接的方式进行功能模块之间及功能模块与外部端子的连接,因此控制方案的更改、信号连接的替换等操作可很方便实现。功能模块图程序设计语言的特点是:

-        以功能模块为单位,从控制功能入手,使控制方案的分析和理解变得容易; 

-        功能模块是用图形化的方法描述功能,它的直观性大大方便了设计人员的编程和组态,有较好的易操作性;

-        对控制规模较大、控制关系较复录的系统,由于控制功能的关系可以较清楚地表达出来,因此,编程和组态时间可以缩短,调试时间也能减少;

-        用户自己可以用不同的语言编写特定的功能模块,也可在用其他语言编程时插入功能模块。例:

                                 

 

 

 

 

 

 

 

 

 

 

上例中,共有五个模块,分别实现PLC初始化、输入模拟量标定、工作控制、PWM输出、参数FLASH等五种功能。

五、顺序流程图SFCSepuential Function Chart

 SFC语言是用顺序流程图来描述程序的一种程序设计语言。采用顺序流程图的描述,控制系统被分为若干个子系统,从功能入手,使系统的操作具有明确的含义,便于设计人员和操作人员设计思想的沟通,便于程序的分工设计和检查调试。

SFC语言的特点是:

-        以功能为主线,条理清楚,便于对程序操作的理解和沟通;

-        对大型的程序,可分工设计,采用较为灵活的程序结构,可节省程序设计时间和调试时间;

-        能较简单和清楚地描述并发系统和复杂系统的所有现象,并能对系统中存有的死锁、不安全等反常现象进行分析和建模,在模型的基础上能直接编程 。例:

                          

   当且仅当顺序条件为真时,程序才能往下执行。每一步功能块可用不同语言编写。同等条件的功能块,可指定时间执行顺序。

六、数据类型

1CoDeSys环境中,有以下标准数据类型:

u  BOOL(布尔量);

u  SINT(短整型)、INT(整型数)、DINT(双整型数);

u  USINT无符号短整型)、UINT无符号整型数)、UDINT无符号双整型数);

u  BYTE(位)、WORD(字)、DWORD(双字);

u  STRING(字符量);

u  REAL(实型数)、LREAL(长实型数);

u  TIME(时间量);

整型量数值范围

Type

下限

上限

存储空间

BYTE

0

255

8 Bit

WORD

0

65535

16 Bit

DWORD

0

4294967295

32 Bit

SINT

-128

127

8 Bit

USINT

0

255

8 Bit

INT

-32768

32767

16 Bit

UINT

0

65535

16 Bit

DINT

-2147483648

2147483647

32 Bit

UDINT

0

4294967295

32 Bit

 

2、自定义数据类型

        自定义数据类型有数组、指针、结构等,具体操作参见CoDeSys手册。

 

 

第四章     程序的创建

一、程序结构

一个POU由两部分组成变量说明部分和程序体。例

工程文件名

 

程序体

对象管理区

 

局部变量说明区

 


 

 

 

 

 

 

 

 


创建一个工程文件时,打开 CoDeSys 后选择 "File" "New",这时出现一个对话框:

 

 

 

 

 

 

这是此工程文件的第一个POU,已经命名为一个默认的名字PLC_PRG,类型被定义为程序。不要改动名字及类型,选择一种要编程的语言,创建第一个POU。因为在任何一个工程文件中,必须要有这一文件,一般地,把它作为主程序。

要创建其他的POU时,把光标移到对象管理区,按鼠标右键,选择“Add Object”,或选择主菜单 “Project”  “Object” “Add”,出现上述菜单,输入文件名、选择POU类型及编程语言,按“OK”结束。

当你存盘时,系统会提示你输入工程文件名,文件名的命名原则跟Windows文件名要求一致。

    在程序下载后断电之前必须先点击Online栏里的Create boot project

、调用库文件

CoDeSys有大量的库文件(后缀名为lib)供用户编程时调用。当你要调用某一操作指令时,把包含该指令的库文件调入当前工程文件的库中。操作如下:

点击主菜单“Window” “Library  Manager”,弹出对话框:

库文件区

 


将光标移到库文件区按右键选择Additional  Library…Ins”,弹出对话框:

  

选中要用的文件即可。关于一些库文件的详细说明,请参看下一章。

三、程序实例

这里,以演示台的例子来说明程序建立的过程。该演示台用两个万向手柄控制八个灯泡,每个灯泡对应一个手柄某一方向,手柄位移的大小控制灯泡的亮度。本例采用2023控制器。首先,编写项目的控制方案和程序流程,对控制器的I/O口进行分布。按前面的方法建立工程文件取名Performance,并以PLC_PRG为主程序,采用FBD语言。接下来设置I/O口,点击对象管理取的“Resources”按扭,弹出对话框:

“Global Varibels”下面的“Access_Varibles”更名为“IO_2023”, “Global_Varibles”更名为 Parameter”。双击 IO_2023”,设置 I/O口,如下图:

在主程序中,先要对I/O进行初始化,编写I/O初始化模块,并在主程序的第一模块调用该模块,然后编写其他程序模块。主程序模块如下:

 

 

 

 

I/O初始化程序如下

在此程序中,“ai_cali”模块为手柄输入标定,“motion_output”PWM信号输出,“PARAMS_SRE”为参数固化模块。


  评论这张
 
阅读(1054)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017