问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

想把epec里的程序复制出来,用coDesys程序怎么写?大神

发布网友 发布时间:2022-04-03 23:58

我来回答

2个回答

懂视网 时间:2022-04-04 04:19

CoDeSys是一种功能强大的PLC软件编程工具,它支持IEC61131-3标准IL、ST、FBD、LD、CFC、SFC六种PLC编程语言,用户可以在同一项目中选择不同的语言编辑子程序,功能模块等。

  

  CoDeSys是可编程逻辑控制PLC的完整开发环境(CoDeSys是ControlledDevelopmentSystem的缩写),在PLC程序员编程时,CoDeSys为强大的IEC语言提供了一个简单的方法,系统的编辑器和调试器的功能是建立在高级编程语言的基础上(如VisualC++)。国内PLC用户使用的版本多为CoDeSysV2.3,最新的版本是CoDeSysV3。V3在软件架构上有了很大的改善,朝安全软件的方向发展,正在申请TUV关于EN61508的SIL认证。

  

  CoDeSys软件还可以编辑显示器界面(Visualization),具有很多的控制模块(Motion),可以放置图片等强大的功能,典型的用户有ifm等。CoDeSys功能总览:如何构建一个工程、怎么样构建一个工程、怎么样测试工程、调试、附加联机功能。CoDeSys的附加功能、工具等。ABBBachmann,IFM易福门,EPEC派芬,HOLLYSYS和利时,intercontrol的PROSYD1131,赫思曼公司iFlex系列、力士乐的RC系列,TTcontrol公司TTC系列控制器等PLC厂家都是使用Codesys平台开发自己的编程软件的。

热心网友 时间:2022-04-04 01:27

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中的procer/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中也被称为UDT

TYPE TRAFFIC :

(RED, YELLOW:=1, GREEN:=10);

END_TYPE

TYPE STRUCT1 :

STRUCT

P1:INT;

P2:INT;

P3:INT;

END_STRUCT

END_TYPE

2.指针,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、FB

1.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_PRG

PLC_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 OF

1, 5:

BOOL1 := TRUE;

BOOL3 := FALSE;

2:

BOOL2 := FALSE;

BOOL3 := TRUE;

10..20:

BOOL1 := TRUE;

BOOL3:= TRUE;

ELSE

BOOL1 := NOT BOOL1;

BOOL2 := BOOL1 OR BOOL2;

END_CASE;

case语句是我比较喜欢的功能,可以实现手动自动,可以实现多工位。

K5 PLC没有日系的STL,也没有西门子的SCR指令,可以通过其他方式实现类case方法,大家也可以思考下。

更多CoDeSys的使用细节可参考CoDeSys说明书“CoDeSys_V23_E.pdf”

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 楼梯的水泥台阶上可以铺地板革吗 手机腾讯会议共享屏幕播放视频没声 邓紫棋《我是歌手》是哪一年? 我是歌手中 邓紫棋演唱过的所有曲目? 我是歌手邓紫棋竞赛全部歌曲 新股申购中签号怎么看?如何知道自己中签了?股票 申购新股怎么知道中签732843 如何让新鲜的山药去皮不变黑 火锅店和餐饮店的,山药如何防止氧化,变黑的?有没有懂的告诉一下?万分感谢 切好的山药为什么容易变黑?该如何防止切好的山药变黑? 怎样防止山药氧化变黑 Codesys与倍腡winCAT是什么关系 从手机抖音下载的视频在电脑上播放为什么是竖屏? 苹果手机强制重启白屏变黑屏 苹果6白屏了怎么办? 苹果6死机时白屏,中间一个黑苹果怎么办? 苹果6plus开机一直白屏进不了系统怎么办? 苹果6 plus手机一直出现白屏现象不能开机怎么办? iPhone6莫名其妙关机 然后闪白屏 开不了机 一闪一闪的 未能强制恢复 9 求大神帮忙 抖音手游直播忘按非游戏后怎么改为竖屏?- 问一问 苹果6手机出现白屏之后开不开机怎么办 中国电信人工服务怎么打? 我是歌手邓紫棋一共都唱了哪些歌,分别都是的第几名? 求邓紫棋在我是歌手唱的所有歌 求邓紫棋在我是歌手唱过的所有歌。 我是歌手邓紫棋唱过哪些歌 求邓紫棋我是歌手全部歌曲 《我是歌手》里面邓紫棋具体唱过哪些歌 邓紫棋在我是歌手都唱过什么歌 我是歌手邓紫棋今年多大?都唱过哪些歌? 我是歌手巅峰会为什么没有邓紫棋 怎么让自己的产品出现在轻淘客里面 oppoA11怎么来微信不显示对方的微信名字啊 微信不出全名称怎办? 微信上和对方聊天,怎么才能不把他的微名显示出来 微信好友的名字,却显示不出来,怎么解决 微信聊天界面里怎么不能显示好友名字了? 微信收到短信屏幕不显示对方名字 微信好友发消息怎么不显示微信对方怎么设置? 一台二手pos机能卖多少钱? 微信聊天列表好友不显示出来? 怎么在别人的微信聊天界面上显示自己的真实昵称?别人的微信聊天界面上显示的不是自己的真实昵称怎么办?