设为首页
收藏本站
PLC技术网
开启辅助访问
切换到宽版
登录
注册哦
只需一步,快速开始
微信扫码登录
门户
Portal
论坛
BBS
导读
Guide
排行榜
Ranklist
搜索
搜索
本版
文章
帖子
用户
PLC论坛-全力打造可编程控制器专业技术论坛
»
论坛
›
工控技术交流区
›
『国外:三菱/西门子/欧姆龙/松下』
›
TwinCAT与Step 7编程的异同
返回列表
发新帖
[西门子]
TwinCAT与Step 7编程的异同
[复制链接]
68073
|
0
|
2024-1-18 15:42:52
|
显示全部楼层
|
阅读模式
熟悉西门子PLC编程的客户,首次使用TwinCAT PLC时,总是有一些概念要重新理解。本文根据作者个人经验,对二者做一些对比。希望做到系统、全面、正确,实际却未必做到。欢迎留言补充、指正。
二者的相同点在于都符合 IEC61131-3编程标准。不同之处则包括但不限于以下几点:
1. 程序执行周期
传统PLC程序按逐行扫描的模式,执行PLC代码。第一遍完成后紧接着开始第二遍扫描执行。连续两次输出更新的时间间隔是不固定的。
TwinCAT PLC要按指定的任务周期来调用程序,默认周期10ms。程序语句第一遍执行完成后,CPU处于等待状态,直到下一个任务周期触发。所以连续两次输出更新的时间间隔总是固定的(比如10ms)。
2. 中断
传统PLC中有中断任务,事件发生后立即中断普通程序而执行中断程序。
TwinCAT PLC中没有中断,但是有分时多任务。在每个Base Time的Ticker,高优先级的任务先执行。最短BaseTime可以设置为50us,实际上起到了替代中断任务的作用。
3. 程序组织对象
西门子中分为OB,FB和FC。控制器中预留了若干编号的OB,FB和FC,有些编号是固定有专门的用途,比如OB86、OB100、FB52等等,有些编号的对象是客户可以自由编程使用的。PLC运行时,识别这些对象的编号。对象的Symbol或者名字,主要是为了便于开发人员理解,增加程序的可读性。
TwinCAT PLC中分为PRG、FB和FC。分别对应西门子PLC中的OB、FB和FC,但PRG、FB和FC都可以自由命名,而不需要编号,所以也不限制个数。
西门子项目文件中的OB、FB和FC可以单独修改和下载,而TwinCAT PLC程序的更新则每次都是整个程序完全下载,不能单独修改和下载某个程序单元。
3.1. OB与PRG的对比
西门子PLC中预留了若干编号的OB,FB和FC,有些编号是固定有专门的用途,比如OB86、OB100、FB52等等,有些编号的对象是客户可以自由编程使用的。
TwinCAT PLC中,所有的PRG都是可以自由定义功能的,没有特殊的PRG。就算是新建程序时自动添加的MAIN程序,用户也可以重命名甚至删除。
3.2. FB的对比
西门子PLC中的FB,每实例化一次,要创建一个Shadow DB。Shadow DB也占用一个DB号。
TwinCAT PLC中的FB,每建立一个实例,要指定一个唯一的名字。一个实例的名就相当于西门子PLC中的Shadow DB。但是FB实例不用指定编号,也无须指定地址。PLC启动时会为一个FB实例分配一块独立的内存区,里面包括了对应于FB的所有接口变量和中间变量。 只要不掉电,这块内存能“记忆”中间变量的值。掉电重启后,中间变量的值就清零了。
TwinCAT PLC中的FB可以嵌套FB,多个小的FB可以封装到一个大的FB中,多层嵌套的FB使模块化编程成为可能。而TC3中的FB还可以继承和扩展,程序的复用性更强。
3.3. FC的对比
西门子FC经常用作子程序或者调用其它FC,还可以操作全局变量、DB数据等。此时基本不关心FC的返回值。
TwinCAT PLC中,因为有无限可以自定义的PRG,所以通常FC仅用作立即运算出结果的函数。同一个项目中, FC可以重复运行无限多次。FC不“记忆”中间变量的值。
4. Public DB和Structure
西门子的Public DB是掉电保持的,可以自定义它的内容。定义好一个Public DB后,它的编号、名字、内部的元素类型和顺序都确定了。DB里面的值是掉电保持的。有没有相同变量元素的多个Public DB呢?Public DB内部元素,即可以用名字访问,也可以用地址偏移访问。
TwinCAT PLC中与Public DB对应的是自定义DataType中的Structure及其实例。 但定义好一个Structure,只确定了它的名字和内部元素的类型和顺序。Structure要实例化之后,PLC才会为每个实例分配一块内存区。结构本身并没有地址,结构型变量才有地址,这个地址实际上只是它的第一个元素的地址,即整个结构型变量的首地址,相当于一个指针。只要不掉电,这块内存能的值就一值保留。掉电重启后,结构型变量的值也清零了。结构型变量的内部元素,完全通过名字访问。通常不再关心每个内部元素的内存地址。如果需要考虑内部元素的地址时,就需要注意不同平台的对齐模式。
TwinCAT PLC中的Structure变量要实现Public DB的功能,还要进行一些设置,才能掉电保持。Structure也可以嵌套。
5. Timer和Counter
在西门子PLC中,提供若干个定时器和计数器,比如99个或者999个或者9999个。定时器定时器之间,以ID号区分。也可以给定时器命名,但仅仅是为了便于开发人员记忆。计数器也是同样道理。定时器和计数器的数量有限,但中间值可以掉电保持。
TwinCAT PLC中,定时器和计数器,都是Standard.lib中的一个功能块。每次引用只需要命名,名字可以是任意字符,且没有数量限制。PLC重启后,如果没有特殊处理,定时器和计数器的中间值都会清零。另外,不能直接用定时器或者计数器功能块的实例名字代替它的输出点。换言之,实例名字代表的一块内存区,类似于一个Shadow DB,而不是一个BOOL型输出点。
6. 上升沿和下降沿
在西门子PLC中,上升沿和下降沿类似一个函数,置于一行Ladder之中,输出立即可用。
TwinCAT PLC中,上升沿和下降沿都是Standard.lib中的一个功能块。每次引用只需要命名,名字可以是任意字符,且没有数量限制。不能直接用上升沿和下降沿功能块的实例名字代替它的输出点。换言之,实例名字代表的一块内存区,类似于一个Shadow DB,而不是一个BOOL型输出点。
7. First Cycle
在西门子PLC中,有一些特殊的标记位,比如首周期标记、1s脉冲标记等。
TwinCAT PLC中, 如果需要FirstCycle标记,有两个办法,一种办法是自己建一个初始值为True的变量,在程序末尾将它置为False。另一种办法是引用TcSystem.lib库,然后就可以使用全局变量TcTaskInfoArray数组中的FirstCycle变量了。
8. 1s脉冲
在西门子PLC中,有一些特殊的标记位,比如首周期标记、1s脉冲标记等。
TwinCAT PLC中, 没有现成的1s脉冲标记,用户需要自己用定时器做一个。通常在项目中,可以做好常用的标记位:1s脉冲,1s方波,作为全局变量,可以在所有程序中使用。
9. Symbol和Address
在西门子PLC中,变量的关键信息是地址,所有运算的依据都是地址。特别是IO模块中各处通道的变量地址与硬件模块的安装位置严格对应。
TwinCAT PLC中,变量的关键信息是名字,在PLC启动时一个变量名就对应了一个内存地址。所有运算的依据实际上是这个内存地址。对于IO变量,哪怕它不对应对硬件模块的某个通道,也可以直接在内存中运行运算。所以TwinCAT PLC可以脱离硬件仿真运行,只有需要连接硬件的时候,才需要把PLC变量和硬件通道对应起来。
10.掉电保持Persistent
在西门子PLC中,有专门的地址区是掉电保持的。只要是定义到这个地址区的变量,都自动地掉电保持。
而在TwinCAT PLC中,所有地址区都是PC机的内存。掉电保持有多个方法实现,其中一个最简单的方法,就是直接声明某个变量为Persistent类型,这种类型的变量,在PLC关机时会自动存储到一个特殊的文件里,下次启动时又会自动从该文件恢复变量值。
11.结构和数组
TwinCAT PLC支持自定义结构。结构与西门子PLC中的DB块类似。
TwinCAT PLC支持多维数组,可以通过数组下标操作不同的元素。
12.枚举
TwinCAT PLC支持自定义枚举。
13.指针
TwinCAT PLC支持指针操作,通常用ADR()函数获取变量地址来为指针型变量赋值。然后通过指针操作变量,或者进行内存复制、内存清零或者内存拷贝。
14.自定义FB、FC和库文件
用户可以自定义STRUCTURE、Global Variable、PRG、FB和FC,可以直接导出给其它工程师使用,或者封装到Lib库文件中加密和共享。
15.面向对象编程
TwinCAT 3中的PLC支持面向对象编程,即支持FB的属性、方法,还支持对象的继承。还可以抽象出Interface的概念。
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册哦
本版积分规则
发表回复
回帖后跳转到最后一页
dove123
回复楼主
返回列表
『国外:三菱/西门子/欧姆龙/松下』
『国产:台达/汇川/信捷产品交流区』