Win32:三菱FX3U/FX5U读写软元件方法和注意事项

您所在的位置:网站首页 三菱PLC怎么设置寄存器无符号 Win32:三菱FX3U/FX5U读写软元件方法和注意事项

Win32:三菱FX3U/FX5U读写软元件方法和注意事项

2024-07-15 21:21| 来源: 网络整理| 查看: 265

目录

一、常见编址类型

二、不同编址类型的读写形式

三、需要特别避开的坑

一、常见编址类型

也就是地址编号的单位了,主要有以下8种形式

按位编址(1-bit编址),三菱FXnU系列PLC软元件支持这种;按字节编址(8-bit编址),一般PC机的存储都是这种;按字编址(16-bit编址),三菱FXnU系列PLC软元件支持这种;按三字节编址(24-bit编址),PMAC的存储支持这种;按双字编址(32-bit编址),少见;按6字节编址(48-bit编址),较少见;按8字节编址(64-bit编址),极少见;按16字节编址(128-bit编址),没见过;

当然将来或许更大的编址单位,时间问题也或者是有没有必要的问题了。

就目前而言,99%的情况集中在前四种了

二、不同编址类型的读写形式

这就以上面的类型有密切关系了。

最关键的就两句话总结:

用什么样的接口去读什么类型的地址;数据项是几位、一次地址读/写多少位,需要读/写多少次;

把这两句话想明白了,一般就没有什么问题了。

对于按位编址的,给定地址读取和写入,始终就是0/1, 很难出现问题,比如三菱PLC的M/X/Y/L/F/V/B/S等类型软元件。

但是对于多字节编址(比如:FD/SD/D/W等),而要读取的数据项的字节数又不一样大,就需要拆分几次了。

举例说明:

比如三菱PLC的 D类型软元件,它是双字类型(4字节),读取地址是按字编址,2个字节的。

那就意味着:要读D地址数据(4字节),需要读2个字地址(addr,addr+1),组合成4字节.

写入D类型地址的时候也需要写入两次。

以写入D类型地址D398为例:

long v = 你要设置的数值; long low = v & 0xffff; long high = (v & 0xffff0000) >> 16; SetAddrValue(_T("D398"), low); SetAddrValue(_T("D399"), high);

在读出来的时候也应如此高低字组合,读者自行完成,不再赘述。

三、需要特别避开的坑

针对带自动化的机器,如果上位机用的三菱的MX插件,创建的ActProgType/ActUtlType的COM接口形式进行PLC软元件读/写,直接调用的是:

p_IProgType->GetDevicep_IProgType->SetDevice

就需要特别注意了,一不小心就会导致你的软件概率性出现闪退了,抓异常call stack可以一路回溯到:IProgType->GetDevice/SetDevice->EasySocketW.dll(MELSOFT目录)->ECCommunicationW.dll(MELSOFT/EasySocket/CommunicationW目录)里面去了。

所以这两个函数不是线程安全的,需要我们自己保证它安全。

两个接口不允许同时调用,必须用同一把锁进行同步。

注意不是在百里外挂一把锁,是在原子操作的共享段挂一把锁。

如果遇到有什么疑问,可留言或站内私信消息。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3