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

news/2025/2/3 20:53:50/

目录

一、常见编址类型

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

三、需要特别避开的坑


一、常见编址类型

也就是地址编号的单位了,主要有以下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->GetDevice
  • p_IProgType->SetDevice

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

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

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

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

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


http://www.ppmy.cn/news/172061.html

相关文章

三菱FX2N系列PLC如何进行远程上下载和调试

三菱FX2N是一款高性能的可编程控制器,支持单元模块的扩展,支持程序的远程调试,操作简单,功能实用强大,在工业领域应用广泛,为工厂自动化应用提供最大的灵活性和控制能力。因此,熟悉三菱FX系列PL…

三菱FX3U——SFC并行的使用

在梯形图块中编写梯形图; PLC运行时ON一个扫描周期,置位S0; 此处必须用SET置位,OUT的话无效; 初始化步0得电; 步0中可以不写动作; 转移0条件满足后;向下执行; 转移0中…

xilinx FPGA FX2 usb通信模块之上位机发送的数据格式

当rom向fpga传输数据时,可以发送coe文件,规定数据进制,以及用逗号可以分开不同的数据,但是通过上位机经过usb向fpga传输数据时,就不能是简单的txt文件,要转换成纯二进制文件,才可以保证数据的准…

File does not exist or is not accessible:‘c:/Users/Administrator/Desktop/FX2_Stream_IN/FX2_Str

当使用vivado编译时,如果是从其他地方拷贝过来,并且是更换了器件类型的,那么可能ip核会出现错误,编译不成功。错误提示如下: File does not exist or is not accessible:c:/Users/Administrator/Desktop/FX2_Stream_IN…

xilinx FPGA usb模块的使用(VHDL)

此次实例中,使用的是小梅哥的xilinx a7系列200t的开发板,其中自带一个usb2.0模块,然后根据他的基于slave fifo的fpga数据回环实验改编,主要是小梅哥的例程是基于verilog的,以及是自己编写的一个fifo模块,然…

基于EZ-USB FX2 CY7C68013A模块的应用(一)——FX2 芯片片上回环测试

在 Cypress Suite USB 3.4.7\Firmware 目录下,提供了一个基于 FX2 芯片的片上回环固件,名为 Bulkloop。 官方说明中写道: this bulk loopback firmware based on the firmware frameworks. Loops back EP2OUT to EP6IN and EP4OUT to EP8IN. …

利用FPGA实现外设通信接口之:利用FPGA实现USB 2.0通信接口

10.3 利用FPGA实现USB 2.0通信接口 10.3.1 USB 2.0接口的实现方式 利用FPGA来实现USB 2.0接口的方式一般有两种,一是借助外围的USB接口芯片,二是FPGA内部实现USB协议控制器,外部通过USB的PHY芯片来实现接口。 对于第一种方式,…

Java002——JDK的安装以及配置环境变量

为什么要安装jdk 1、JDK 全称 Java Development Kit,意为 Java 开发工具。,要想开发java程序就必须安装JDK。没有JDK的话,无法编译运行Java程序。 2、JDK包含的基本组件包括以下文件:   javac.exe,用于编译java文件&#xff0c…