首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

三菱mc plc qt 通信协议测试程序 包含模拟工具

后端 85.7KB 6 需要积分: 1
立即下载

资源介绍:

三菱mc plc qt 通信协议测试程序 包含模拟工具
#include "mcbinaryprotocol.h" #include #include const QString C = "C"; const QString D = "D"; const QString L = "L"; const QString M = "M"; const QString T = "T"; const QString S = "S"; const QString X = "X"; const QString Y = "Y"; const QString B = "B"; const QString F = "F"; const QString Z = "Z"; const QString R = "R"; const QString TN = "TN"; const QString CN = "CN"; QByteArray intToQByteArray(qint32 number, qint32 size) { QByteArray data(size, 0); for (int i = 0; i < size; ++i) { data[i] = static_cast((number >> (8 * i)) & 0xFF); } return data; } qint32 QByteArrayToInt(const QByteArray& data) { qint32 result = 0; int size = data.size(); for (int i = 0; i < size; ++i) { result |= (static_cast(static_cast(data[i])) << (8 * i)); } return result; } namespace McBinaryProtocol { enum PlcDataUnit { Bit, // 表示位 Word // 表示字 }; PlcDataUnit dataUnit; QMap softCodeMap; QByteArray read_word(char areaTag,int startAddress,int length,bool isBit); QByteArray write_word(char areaTag, int startAddress, qint32 value); QByteArray write_bit(char areaTag, int startAddress, bool value); } void McBinaryProtocol::initSoftCode() { //区域代码《MELSEC通信协议参考手册》第68页 softCodeMap[D] = 0xA8; //数据寄存器 softCodeMap[M] = 0x90; //内部继电器 softCodeMap[X] = 0x9c; //输入 softCodeMap[Y] = 0x9d; //输出 softCodeMap[L] = 0x92; //锁存继电器 softCodeMap[B] = 0xA0; //链接继电器 softCodeMap[F] = 0x93; //报警器 softCodeMap[Z] = 0xCC; //变址寄存器 softCodeMap[R] = 0xAF; //文件寄存器 softCodeMap[TN] = 0xC2; //定时器 softCodeMap[CN] = 0xC5; //计数器 } QByteArray McBinaryProtocol::read_word(char areaTag, int startAddress, int length, bool isBit) { dataUnit = isBit ? Bit : Word; QByteArray data; //发起指令,固定 50 00 data.append(0x50); data.append(static_cast(0x00)); data.append(static_cast(0x00));//网路编号,上位访问下位,固定00 data.append(static_cast(0xFF));//PLC编号,上位访问下位,固定FF //请求目标模块IO编号,表示03FF,十进制是1023。也是固定的 data.append(static_cast(0xFF)); data.append(static_cast(0x03)); data.append(static_cast(0x00));//请求目标模块站编号,上位访问下位,固定00 //请求数据长度,之后的数据长度 int datalength{0}; { //先占位,后面计算 data.append(static_cast(0x00)); data.append(static_cast(0x00)); } //cpu监视定时器,表示等待PLC响应的超时时间,这里是0010,十进制是16,相当与最大等待时间250ms*16=4秒;实际上PLC一般2,3个毫秒内就响应了; data.append(static_cast(0x10)); data.append(static_cast(0x00)); datalength += 2; //命令码,可查阅《MELSEC通信协议参考手册》第59页 //值是0401表示批量读取 data.append(static_cast(0x01)); data.append(static_cast(0x04)); datalength += 2; //子命令,0表示按字读取(1个字=16位),1就按位读取 《MELSEC通信协议参考手册》搜索:子指令 data.append(static_cast(isBit ? 0x01 : 0x00));// data.append(static_cast(0x00)); datalength += 2; //首地址 { data.append(intToQByteArray(startAddress,3)); datalength += 3; } //软元件,表示读取PLC寄存器的类型。A8表示D点;其他常见的有: 90-M点;9C-X点;9D-Y点;B0-ZR外部存储卡 data.append(areaTag); datalength += 1; //读取长度 { data.append(intToQByteArray(length,2)); datalength += 2; } { auto temp = intToQByteArray(datalength,2); data[7] = temp[0]; data[8] = temp[1]; } qDebug()<<"读取发送:"<(0x00)); data.append(static_cast(0x00));//网路编号,上位访问下位,固定00 data.append(static_cast(0xFF));//PLC编号,上位访问下位,固定FF //请求目标模块IO编号,表示03FF,十进制是1023。也是固定的 data.append(static_cast(0xFF)); data.append(static_cast(0x03)); data.append(static_cast(0x00));//请求目标模块站编号,上位访问下位,固定00 //请求数据长度,之后的数据长度 int datalength{0}; { //先占位,后面计算 data.append(static_cast(0x00)); data.append(static_cast(0x00)); } //cpu监视定时器,表示等待PLC响应的超时时间,这里是0010,十进制是16,相当与最大等待时间250ms*16=4秒;实际上PLC一般2,3个毫秒内就响应了; data.append(static_cast(0x10)); data.append(static_cast(0x00)); datalength += 2; //命令码,可查阅《MELSEC通信协议参考手册》第59页 //值是1401表示批量写入 data.append(static_cast(0x01)); data.append(static_cast(0x14)); datalength += 2; //子命令,0表示按字读取(1个字=16位),1就按位读取 《MELSEC通信协议参考手册》搜索:子指令 data.append(static_cast(0x00));// data.append(static_cast(0x00)); datalength += 2; //首地址 { data.append(intToQByteArray(startAddress,3)); datalength += 3; } //软元件,表示读取PLC寄存器的类型。A8表示D点;其他常见的有: 90-M点;9C-X点;9D-Y点;B0-ZR外部存储卡 data.append(areaTag); datalength += 1; //每次固定写入一个 //注意,这里和位的不一样,位是0x01在前面 data.append(static_cast(0x00)); data.append(static_cast(0x01)); datalength += 2; data.append(intToQByteArray(value,2)); datalength += 2; { auto temp = intToQByteArray(datalength,2); data[7] = temp[0]; data[8] = temp[1]; } return data; } QByteArray McBinaryProtocol::write_bit(char areaTag, int startAddress, bool value) { QByteArray data; //发起指令,固定 50 00 data.append(0x50); data.append(static_cast(0x00)); data.append(static_cast(0x00));//网路编号,上位访问下位,固定00 data.append(static_cast(0xFF));//PLC编号,上位访问下位,固定FF //请求目标模块IO编号,表示03FF,十进制是1023。也是固定的 data.append(static_cast(0xFF)); data.append(static_cast(0x03)); data.append(static_cast(0x00));//请求目标模块站编号,上位访问下位,固定00 //请求数据长度,之后的数据长度 int datalength{0}; { //先占位,后面计算 data.append(static_cast(0x00)); data.append(static_cast(0x00)); } //cpu监视定时器,表示等待PLC响应的超时时间,这里是0010,十进制是16,相当与最大等待时间250ms*16=4秒;实际上PLC一般2,3个毫秒内就响应了; data.append(static_cast(0x10)); data.append(static_cast(0x00)); datalength += 2; //命令码,可查阅《MELSEC通信协议参考手册》第59页 //值是1401表示批量写入 data.append(static_cast(0x01)); data.append(static_cast(0x14));

资源文件列表:

三菱mc plc qt 通信协议测试程序 包含模拟工具.zip 大约有9个文件
  1. 模拟三菱PLC.zip 108.65KB
  2. mcTest/
  3. mcTest/main.cpp 185B
  4. mcTest/mcTest.pro 682B
  5. mcTest/mcbinaryprotocol.cpp 10.79KB
  6. mcTest/mcbinaryprotocol.h 1012B
  7. mcTest/mctestwidget.cpp 6.09KB
  8. mcTest/mctestwidget.h 1.58KB
  9. mcTest/mctestwidget.ui 24.57KB
0评论
提交 加载更多评论
其他资源 springboot高校学生考勤系统(附源码+数据库)31406
学生:登录,注册,查看个人信息,查看班级信息,查看课程信息,课程签到,发起请假,我的考勤记录,我的签到记录,我的请假记录,我的考勤统计等。 教师:登录,注册,查看个人信息,学生管理,班级管理,课程信息管理,发起签到,审批请假,签到信息管理,考勤信息管理,考勤统计管理等。 管理员:登录,修改个人信息,学生信息管理,教师信息管理,班级信息管理,课程信息管理,签到信息管理,考勤信息管理,请假信息管理,考勤统计管理等。
springboot高校学生考勤系统(附源码+数据库)31406 springboot高校学生考勤系统(附源码+数据库)31406 springboot高校学生考勤系统(附源码+数据库)31406
springboot天文科普网站(附源码+数据库)31654
①、普通用户功能:主要包括注册登录、浏览天文知识、天文新闻与发现、天文活动与讲座、提问与讨论、个人设置与管理这六大功能模块。 ② 管理员功能:主要包括网站管理、文章发布与编辑、新闻和动态管理、活动管理、用户管理、问题回答与讨论、数据分析与报表生成这七大功能模块。
springboot天文科普网站(附源码+数据库)31654 springboot天文科普网站(附源码+数据库)31654 springboot天文科普网站(附源码+数据库)31654
springboot红色旅游城市风貌展示平台(附源码+数据库)31956
1、设计和开发一个基于SpringBoot的红色旅游城市风貌展示平台。 2、实现用户注册、登录、搜索景点、查看景点详情、购买旅游产品、对景点信息、商品信息进行修改等基本功能以及实现红色旅游文化或茶文化模块的特色功能。 3、掌握SpringBoot框架的核心技术,如SpringMVC、MyBatis等,并能够灵活运用到实际项目中。 4、掌握前端Vue框架的核心技术,包括Vue.js、ElementUI等,并能够根据实际需求进行定制化开发。 5、通过测试和优化,提高平台的性能和稳定性,并保证平台的安全性和易用性.
springboot红色旅游城市风貌展示平台(附源码+数据库)31956 springboot红色旅游城市风貌展示平台(附源码+数据库)31956 springboot红色旅游城市风貌展示平台(附源码+数据库)31956
HP150系列打印机定影器单元清零
HP150系列打印机定影器单元清零
vue.js-devtools-7.6.5 chrome插件
vue.js-devtools-7.6.5 chrome插件 在扩展程序页面点击左上角的【加载已解压的扩展程序】,选择解压之后文件中的7.6.5_0文件夹
silvaco仿PIN型InGaAs光电探测器
可以自行选择模块输出(响应度、暗电流、瞬态响应、LDR、量子效率等)
px4无人机走圆形和正方形控制,需要安装px4仿真环境,然后直接编译运行即可
px4无人机走圆形和正方形控制,需要安装px4仿真环境,然后直接编译运行即可
DBeaver agent 文件
DBeaver agent 文件,dbeaver-ee-24.3.0 测试可用,仅技术分享,学习使用 详细说明:https://mp.csdn.net/mp-blog/creation/editor/1443