Twincat2转Twincat3过程中遇到的部分问题1

本文记录了在将倍福的Twincat2系统升级到Twincat3过程中遇到的问题,包括解决方案资源管理器的变化、系统兼容性、数据地址差异、新增数据类型以及数据对齐方式的调整。Twincat3支持32位和64位系统,数据地址由32bit变为64bit,新增了如LINT、ULINT等数据类型,并且数据对齐方式改为8字节对齐,这些变化可能引发兼容性和通讯问题。
摘要由CSDN通过智能技术生成

目前倍福大量的老用户还在使用Twincat2,由于需要现在转Twincat3,对于目前两者之间的差别做一个记录:

Twincat2大家都比较熟悉,先来看Twincat3的资源管理器部分
1 Twincat3的【解决方案资源管理器】
资源管理器
Untitled1:PLC工程名
External Type:除掉标准类型之外的特殊类型的定义,此部分位系统自动生成;
References:此部分对应Twincat2当中是对应的外部库文件;
DUTs(Data Unit Type):这里对应Twincat2当中是定义枚举,结构体等数据;
GVLs(Global variable List):这里对应Twincat2当中的全局变量,在这里定义全局变量;
POUs(Program organization unit):这里和Twincat2是一样的;
Visus:这里和Twincat2也是一致的,是上位机部分;
Untitled1 Instance:PLC工程实例,里边包含程序当中的Input和OutPut部分的变量,同时可以和硬件IO建立映射关系;
2 系统兼容问题
Twincat2只能运行在32位的系统当中,Twincat3可以运行在32和64位系统当中;

3 关于数据地址问题
Twincat2 当中的变量地址为32bit,Twincat3当中的数据地址为64bit。在Twincat2当中用ADR取数据地址可以返回一个UDINT的数据地址,在Twincat3当中如果用UDINT的数据来接受ADR取出的地址则会报错;

4 Twincat新增数据类型
LINT : 64 位有符号整数
ULINT : 64 位无符号整数
LWORD : 8 字节 WORD
LTIME:64位时间
WSTRING:Unicode 格式的字符
UNION:多种数据类型共享内存区。类似于Structure,但 UNION 里面的各元素首地址是对齐的,而Structure 里的各元素首地址是顺序排列。
注意:
TwinCAT 3 支持 32 位和 64 位操作系统。为了让 PLC 代码尽量独立于 OS, TwinCAT 提供了几个自动适应的数据类型(XINT、 UXINT、 XWORD 和 PVOID),编译器会自动检查控制器是什么操作系统,然后自动转换成相应的数据类型:
XINT:64 位系统下转成 LINT, 32 位系统下转成 DINT
UXINT: 64 位系统下转成 ULINT, 32 位系统下转成 UDINT
XWORD:64 位系统下转成 LWORD, 32 位系统下转成 DWORD
PVOID:64 位系统下转成 ULINT, 32 位系统下转成 UDINT
最典型就是指针,或者变量地址。因为很多功能块都要求提供变量地址和长度,而在 32位系统下变量地址是 4 字节,在 64 位系统下变量地址是 8 字节,所以指针变量的类型要设置为 PVOID。

5 数据对其方式
数据对其方式在Twincat3 的InfoSys当中有描述
Twincat2(ARM):4字节对齐;
Twincat2(X86):1字节对齐;
Twincat3:8字节对齐;
也就是说Twincat3的数据地址不能像Twincat2那样对齐,在升级Twincat2到Twincat3的时候要特别注意这个问题;还包括HMI通讯问题,HMI上的数据格式和TC3中的数据格式对齐方式不同。将会在进行ADS通讯过程中导致部分结构中数据错位和丢失。

先更新到这里…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值