如何安装codesys
蓝米情感岛
2024-06-07 03:25:50
最佳回答
codesys 3.5是一款非常好用且功能强大的plc编程工具,全称为controlled developement system,这个是最新版本,它为iec语言提供了一个简单的方法,iec61131-3标准il 、st、 fbd 、ld、 cfc、 sfc等六种编程语言,并内置了强大的系统编辑器和调试器,本站提供了codesys v3.5 下载地址,有需要的朋友们就来下载使用吧。codesys 3.5特色codesys为强大的iec语言提供了一个简单的方法,系统的编辑器和调试器的功能是建立在高级编程语言的基础上(如v**ual c++)。现在国内plc用户使用的版本多为codesys v2.3, 最新的版本是codesys v3。v3 在软件架构上有了很大的改善,朝安全软件的方向发展,目前正在申请tuv关于en 61508的sil认证。codesys软件还可以编辑显示器界面(v**ualization),具有很多的控制模块(motion),可以放置图片等强大的功能,典型的用户有ifm等。codesys功能总览:如何构建一个工程、怎么样构建一个工程、怎么样测试工程、调试、附加联机功能。codesys的附加功能、工具等。国内首家采用codesys**的国产plc 和声 hsc c3系列**也已大批量产业应用。同时,也有运动控制厂家如:scheider electric, banchman, googoltech在在使用codesys**开发自己的编程软件。codesys 软件商是德国smart software solution gmbh,该公司位于德国巴伐利亚州肯普腾市。功能介绍codesys框架组成两部分:1、codesys ide。即codesys集成开发环境,符合iec61131编程规范,安装于pc机上,运行于windows或者linux下。由最终应用用户所使用的开发工具。2、codesys runtime。即硬件**系统。需要设备制造商与3s公司共同完成,3s公司需要评估硬件开发商所设计的硬件系统,并为其定制codesys runtime框架,客户需要为此向3s付费。然后硬件及系统开发商需要根据本系统的外围输入输入等配置,编写相应的驱动,并以库或者plc configure接口的形式提供给codesys id开发环境调用。实际上就是形成一套target安装包。此外,codesys还会对每个使用其codesys runtime的设备贴标,设备供应商需要为每个3s标牌付费,作为其知识产权的一部分。3、最终用户(应用开发商)可以下载通用的codesys ide。里面提供基本的iec61131编程环境,但是对于一个具体的硬件plc或者hmi,需要安装与该硬件相对应的targets包。这个 targets包的入口文件是*.tnf文件,有其来指定:1、targets(*.tar)文件,对应 codesys ide的target setting项.2、plcconf文件夹下的*.cfg文件,对应codesys ide的plc configuration项。其安装路径由installtarget组件程序的installation选项指定。反映在codesys ide上就是:project\options\directories\target\configuration files: "**\*\plcconf\"。3、lib文件夹下的诸*.lib文件,提供底层的codesys runtime的驱动接口。对应codesys ide的library manager。其安装路径由installtarget组件程序的installation选项指定。反映在codesys ide上就是:project\options\directories\target\libraries: "**\*\libs\"。上图,就是安装target的过程,也就是每个oem厂家安装自己硬件的过程。codesys底层运行原理codesys runtime是建立在os上的,常见的os有wince,windows,linux,vxworks。构建在os的优势就在于系统的扩展性更强,pc的更多功能都可以在plc上实现。control task**作系统每隔一段时间(典型是1ms)调用一次。iec task被内建的看门狗监控,监视plc的实际工作周期是否超出预定时间,如果超出则iec task任务停止,向系统报告错误。说到这里讲讲plcopen的iec 61131-3标准(这个iec具体名字,网上现查的,方博士掌握的很好)。iec 61131-3多任务操作系统,也没查到具体如何实现,自己之前做过嵌入式开发,了解os以及rtos,自认为和rtos类似,热情高的朋友可以网上看看rtos,重点是rtos的优点是什么?欧洲的产品都很注重概念,概念理解了,就可以让你自由发挥。这里就多插一句,日系plc在做大型项目时,还是和低端plc一样,编程习惯类似汇编,编程上想要实现框架的概念非常难,因此在欧洲比较难推广。现在日系也在改进,加入了st编程,使用了功能块,也算是日本人的妥协吧。这里有几个概念:优先级,数值越小优先级越高,根据任务的实时性,设定优先级任务类型循环:周期性执行任务自由运行:只要启动程序就处理任务,cpu空闲就运行该task。event触发型:触发位的上升沿调用程序。外部事件触发功能,未定制的厂家此选项不能使用看门狗(早期单片机上的一个概念,纺织程序进入死循环,提出了定时喂狗的概念,其本质就是一个减法定时器)说说mcu如何使用watchdog吧。while(1){//用户自己写的程序watchdog = 10ms; //watchdog timer后台按照tick做减法,如果timer为0,就触发一个硬件中断,告诉用户程序在单位时间内没执行完,检查错误。正常则每次喂狗,设置timer为10ms}codesys的watchdog定时监视plc的实际工作周期是否超出预定时间,避免plc在执行程序的过程中进入死循环,或者plc执行非预定程序造成系统瘫痪。当任务超时,任务复位,进入初始状态,继续执行。对比一下ab control logix的任务实现control logix项目分为任务(task),程序(program)和例程(routine)。任务(task):每个control logix**最多32个任务,仅有一个continuous任务,其余为periodic或者event任务。任务命名包括任务功能,优先级和执行周期任务的三种类型:1. 连续型任务,指的是周而复始连续执行的任务,一个项目只允许定义1个,亦可以不定义,等同于codesys中的plc_prg(pou)。2. 周期型任务,定时中断执行的逻辑程序,需定义周期时间,设定优先级别,最多可以定义31个3. 事件触发型任务,事件触发引起的任务调度,事件触发可以是外部输入点引起(如同plc5/slc),也可以由consumed tag引起或者直接指令调用引起,还可以由运动控制状态引起,需要设定优先级别,最多定义31个。control logix中的producer/consumer的概念非常好,体现在其组网能力上。比如某一个模块是消息的生产者,产生消息存放在消息块中,其他需要此变量的功能块,定义一个消息consumer即可。有兴趣的朋友可以自己看看相关资料。codesys的编程工具il 、st、 fbd 、ld、 cfc、 sfc六种语言,我个人比较钟爱st,cfc。codesysv2.3还是强调过程编程,到了v3.5则强调面向对象,c 的影子更多了。言归正传,应用者也不需要关心那么多技巧,能实现功能,并且代码具有可维护性就是一个合格的工程师。1.高级语言中的struct,union。stuct在西门子scl语言中被称为udt(user defined type),ab rslogix 5000中也被称为udttype traffic :(red, yellow:=1, green:=10);end_typetype struct1 :structp1:int;p2:int;p3:int;end_structend_type2.指针,c,c 中的顶级利器,在codesys中也可以使用example in st:pt:pointer to int;var_int1:int;var_int2:int;pt := adr(var_int1);var_int2:=pt^;3.fc,fb的概念上述是codesys说明书的例程,不知道看出有什么不同?fc在程序中直接调用即可,fb则需要先定义实例(instance),instance: fub。这里的instance就是c 中的对象实例。怎么理解这个实例呢?上个最傻的高级语言的例子吧。class student{int age;int sex;int grade;void dowork(void);};student tony, jany;tony.age = 10;tony.sex = male;tony.grade = 3;tony.dowork();jany.age = 9;jany.sex = female;jany.grade = 3;jany.dowork();这里的dowork就类似fb,可以看到fb带有自己独立的数据块,比如例中的age,sex,grade。对比西门子s300/s400的fc、fb1.fc不具备自己的存储区,fb有自己的存储区-背景db。2.fc和fb都有自己的temp变量,存储在系统的本地stack上。当fc和fb调用完毕,temp变量会释放。3.fb有静态变量,fc没有。静态变量在背景db中,fb调用完毕,静态变量仍然有效。西门子300中,db分为背景db和共享db,背景db和fb相关联。景db和共享db没有本质区别,它们的数据都可以被任何一个db,fc或者fb读写。它们的区别在于使用目的:背景db为fb提供数据,其数据格式和fb变量声明一致;共享db目的为用户程序提供一个可保存的数据区。如果对c比较熟悉,可以这样理解:fc和fb像c中的函数,只不过fb可以生成静态变量,在下次函数调用时数据可以保留,而fc的变量只在调用期内有效,下次调用又重新更换。每次调用fc的i/o区域必须要自己每次手动输入,而fb就不要,省去不少麻烦,如果在上位机控制直接输入db控制地址就可!看到这里,大家再思索一下,德系plc的编程思想虽然实现形式不同,但强调的概念都一样,一定要理解这些概念,才能熟练应用。4.plc_prgplc_prg是一个预定义的pou(program of unit),每个工程必须包含这个特定的程序,这个pou在每个cycle中调用一次。其本质就是一个freewheeling程序。如果使用了多任务,可以不包含plc_prg,按照任务配置表执行特定程序。5.lib库的使用lib的使用体现了codesys高级语言的特性,支持math.lib,string.lib,canopen.lib,可以使用自定义的lib用户自己实现的lib库,包含两种:internal lib,external lib,有什么区别呢?内部是完全利用codesys实现的自定义lib库。外部库则需要利用相关的编译链去编译,更多被底层开发者所采用,可以直接利用os底层的api进行编程,性能效率更高。6.好用的case语句case int1 of1, 5:bool1 := true;bool3 := false;2:bool2 := false;bool3 := true;10..20:bool1 := true;bool3:= true;elsebool1 := not bool1;bool2 := bool1 or bool2;end_case;case语句是我比较喜欢的功能,可以实现手动自动,可以实现多工位。 20210311