三菱PLC通信:MX Component与寄存器读写实战

📅 2026/8/22 3:38:05
三菱PLC通信:MX Component与寄存器读写实战
三菱PLC通信MX Component与寄存器读写实战一、引言在工业自动化系统中PLC可编程逻辑控制器是控制运动平台、执行机构的核心设备。上位机需要与PLC通信读取状态、下发指令。本项目使用三菱PLC通过MX ComponentActiveX控件进行通信。本文从第一性原理出发讲解PLC通信的本质并结合项目中的MainView.cs代码深入剖析MX Component的使用、寄存器读写、握手协议、运动控制指令等关键技术。二、第一性原理PLC通信的本质2.1 什么是PLCPLC是一种专门为工业环境设计的数字运算控制器。它通过寄存器存储数据通过输入输出点连接传感器和执行器。PLC运行用户编写的梯形图或结构化文本程序实现逻辑控制。2.2 上位机与PLC的通信上位机与PLC通信的本质是读写寄存器读寄存器获取PLC中的状态数据如传感器状态、运动位置。写寄存器向PLC下发指令如启动运动、停止运动。寄存器是PLC的内存单元每个寄存器有地址和类型。上位机通过通信协议访问这些寄存器。2.3 通信方式三菱PLC支持多种通信方式串口通信通过RS-232/RS-485连接。以太网通信通过TCP/IP连接MC协议。MX Component三菱官方提供的ActiveX控件封装了底层通信协议提供简单的读写接口。本项目使用MX Component因为它封装了复杂的MC协议提供了GetDevice/SetDevice等简单接口。三、MX Component的使用3.1 引用与实例化在MainView.cs中通过ActUtlType64Lib命名空间使用MX ComponentusingActUtlType64Lib;privateActUtlType64Lib.ActUtlType64ClassaxActUtlType1;3.2 连接PLCConnectPlc方法连接PLCprivateboolConnectPlc(){axActUtlType1newActUtlType64Lib.ActUtlType64Class();axActUtlType1.ActLogicalStationNumber3;// 逻辑站号axActUtlType1.ActPassword;intiReturnCodeaxActUtlType1.Open();// 连接PLC成功返回0if(iReturnCode0){rettrue;returntrue;}returnfalse;}关键点ActLogicalStationNumber逻辑站号在MX Component配置软件中设置用于标识PLC。ActPassword访问密码通常为空。Open()建立连接返回0表示成功。3.3 读取寄存器ReadPlc方法读取寄存器privateintReadPlc(stringaddress){intrelust;intiReturnCodeaxActUtlType1.GetDevice(address,outrelust);returnrelust;}GetDevice(address, out value)读取指定地址的寄存器值。地址格式如M100位寄存器、“D50”字寄存器。3.4 写入寄存器WritePlc方法写入寄存器privatevoidWritePlc(stringaddress,intvalue){intiReturnCodeaxActUtlType1.SetDevice(address,value);}SetDevice(address, value)向指定地址写入值。3.5 关闭连接ClosePlc方法关闭连接privateintClosePlc(){axActUtlType1.Close();return0;}四、寄存器地址详解4.1 三菱PLC寄存器类型三菱PLC的寄存器类型M寄存器位寄存器布尔值用于开关量控制。如M0、M100。D寄存器字寄存器16位整数用于数值数据。如D50、D100。X/Y寄存器输入/输出点。W寄存器字寄存器32位。4.2 项目中的寄存器使用项目中使用了多个寄存器各有用途寄存器用途M0急停/清零M2X轴正向运动M3X轴反向运动M4Y轴正向运动M5Y轴反向运动M6启动M12Z轴正向运动M13Z轴反向运动M14对焦M99停止M100采集控制1停止/0开始M101打标完成M102Y轴方向M103X轴方向M199回原点/拼图完成D40X轴次数D50X轴行程D70Y轴行程D100Y轴脉冲D108X轴脉冲五、运动控制指令5.1 轴运动控制项目通过按钮控制各轴运动使用按下/松开事件privatevoidXFor_MouseDown_Click(objectsender,MouseEventArgse){WritePlc(M2,1);// 按下X轴正向运动}privatevoidXFor_MouseUp_Click(objectsender,MouseEventArgse){WritePlc(M2,0);// 松开停止}这种按下置1、松开置0的模式实现了点动控制按住按钮轴运动松开停止。5.2 启动运动StartBtn_Click方法启动整体运动privatevoidStartBtn_Click(objectsender,EventArgse){intxDisint.Parse(xDisTB.Text);// X轴总行程intyDisint.Parse(yDisTB.Text);// Y轴行程WritePlc(D70,yDis);// 写入Y轴行程WritePlc(D50,100);// 写入X轴单次行程intnumxDis/100;// 计算X轴次数WritePlc(D40,num);// 写入X轴次数WritePlc(M6,1);// 启动}这里把运动参数行程、次数写入D寄存器然后置位M6启动。PLC根据这些参数执行运动。5.3 停止与急停privatevoidStopBtn_Click(objectsender,EventArgse){WritePlc(M99,1);// 停止}privatevoidUrgentBtn_Click(objectsender,EventArgse){// 停止采集if(startGrabFlag){...}WritePlc(M0,1);// 急停}5.4 回原点privatevoidBackOrginBtn_Click(objectsender,EventArgse){WritePlc(M199,1);// 回原点WritePlc(M199,0);// 复位}六、PLC与采集的协同6.1 采集控制PLC通过M100寄存器控制上位机的采集privatevoidreadStop(){CancellationTokencancellationTokentokensource.Token;stopTasknewTask((){while(!cancellationToken.IsCancellationRequested){intxReadPlc(M100);// 读取采集控制信号if(x1){if(closeGrabFlagfalse){closeGrab();// 停止采集closeGrabFlagtrue;startGrabFlagfalse;}}else{if(startGrabFlagfalse){openGrab();// 开始采集startGrabFlagtrue;closeGrabFlagfalse;}}}},cancellationToken);stopTask.Start();}这里实现了PLC主导、上位机从动的协同模式PLC置位M1001上位机停止采集。PLC复位M1000上位机开始采集。这样PLC可以根据运动位置精确控制采集时机保证每帧图像与运动同步。6.2 打标位置下发定位算法找到打标区域后把坐标换算成脉冲并写入PLC// 拿box中x_dis,y_dis乘以像素精度再转换为plc脉冲intx_pulse(int)((box.x_dis*CConfig.AccuracystartPoint*CConfig.Accuracy-345.65*1000)/10);inty_pulse(int)((box.y_dis*CConfig.Accuracy-56.12*1000)/10);if(x_pulse0){WritePlc(M103,1);// X轴正方向WritePlc(D108,Math.Abs(x_pulse));// X轴脉冲数}else{WritePlc(M103,0);// X轴负方向WritePlc(D108,Math.Abs(x_pulse));}if(y_pulse0){WritePlc(M102,1);// Y轴正方向WritePlc(D100,Math.Abs(y_pulse));// Y轴脉冲数}else{WritePlc(M102,0);// Y轴负方向WritePlc(D100,Math.Abs(y_pulse));}WritePlc(M100,1);// 通知PLC到位WritePlc(M101,1);// 打标完成这里通过M102/M103控制方向D100/D108控制脉冲数实现精确的二维定位。七、PLC通信的工程要点7.1 通信可靠性连接检查连接前检查返回值失败时提示用户。超时处理通信可能超时需要设置合理的超时时间。异常处理用try/catch捕获通信异常。7.2 寄存器规划良好的寄存器规划是PLC通信的基础地址唯一每个寄存器用途唯一避免冲突。命名规范用注释说明每个寄存器的用途。文档化维护寄存器地址表方便协作。7.3 与PLC程序的配合上位机与PLC程序需要约定协议握手信号如M100控制采集M199通知完成。数据格式如D寄存器存储脉冲数M寄存器控制方向。时序要求如置位后等待PLC响应。八、总结本文从第一性原理出发讲解了三菱PLC通信技术PLC通信的本质读写寄存器。MX Component封装MC协议提供简单接口。寄存器类型M位寄存器、D字寄存器。运动控制点动、启动、停止、回原点。协同模式PLC主导、上位机从动。PLC通信是工业上位机连接大脑与手脚的关键。下一篇文章将深入讲解激光打标机TCP Socket通信协议。