Win32:三菱FX3U/FX5U读写软元件方法和注意事项 |
您所在的位置:网站首页 › 三菱PLC怎么设置寄存器无符号 › Win32:三菱FX3U/FX5U读写软元件方法和注意事项 |
目录 一、常见编址类型 二、不同编址类型的读写形式 三、需要特别避开的坑 一、常见编址类型也就是地址编号的单位了,主要有以下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 |