简介面向工业自动化与PLC调试场景这份资源系统讲解三菱Q系列串行通讯模块QJ71C24N与QJ71C24N-R2之间通过RS232实现数据交换的方法。内容从两款模块的通道差异入手对比单RS-232/RS-422/485与双RS-232配置重点说明基于无顺序协议的参数设置流程包括在Works2中添加智能功能模块、开关设置中的波特率、奇偶校验、数据位、停止位等关键项并给出接收与发送程序的设计思路。文档还补充了CRC校验、超时机制、参数一致性等提升通讯可靠性的注意事项。资源包共含1个docx文件大小约197KB文字清晰、图文结合方便随时查阅。目前已有3899人学习下载适合初次接触三菱Q系列串口通讯模块的工程师、PLC编程人员以及对工业现场总线配置感兴趣的读者参考使用通过阅读可快速掌握QJ71C24N与QJ71C24N-R2的RS232直连配置方法理解无顺序协议的应用边界并为后续编写稳定通讯程序提供可直接借鉴的框架。1. 三菱Q系列串行通讯模块QJ71C24N与QJ71C24N-R2的RS232通讯能解决什么在产线上碰到两台三菱Q系列PLC要近距离交换数据最省事的办法不是上以太网而是用串行通讯模块直接拉一根RS232线。三菱Q系列串行通讯模块里QJ71C24N和QJ71C24N-R2是经常被拿来配对的两块板子前者有一个RS-232口加一个RS-422/485口后者两个口都是RS-232。数据交换走无顺序协议参数在GX Works2里设好程序端就是一个发送一个接收。这篇文章把硬件接线、参数设置、收发程序按实际调试顺序拆开把我踩过的坑一并列出。它适合现场做设备间通讯的电气工程师也适合刚接手Q系列通讯项目、想照着配置的新手。读完你至少能知道无顺序协议怎么选、两块模块的通道怎么配对、开关设置每一项怎么填以及程序里那两个专用指令为什么不能省。2. 协议与通道差异为什么无顺序协议适合两台PLC直连2.1 三种通讯协议怎么选QJ71C24N和QJ71C24N-R2在固件层面支持三种通讯模式MC协议、无顺序协议、双向协议。很多人第一次配置时直接卡在这一步因为GX Works2的开关设置里那一排下拉框并没有写“推荐”而是把选择权交给了你。MC协议是三菱自定义的应用层协议帧格式固定带站号、命令、子命令、数据长度、校验码。这类协议适合上位机组态软件、触摸屏或者另一台同样支持MC协议的PLC双方按固定格式一问一答好处是省心坏处是帧结构固定在模块内部你想塞一段自定义数据进去反而别扭。双向协议则是为特定智能设备准备的比如温控器、变频器这类支持双向协议的仪表。它同样有固定帧格式模块会自动解析地址和数据区。但如果你面对的是两台PLC之间的裸数据搬运双向协议的灵活性也不够。无顺序协议恰恰是这一类场景里最实用的选项。它不关心你的数据里是什么内容模块只负责把串口上收到的字节原样存进缓冲区或者把PLC发来的数据原样从串口发出去不做任何组帧和解析。数据是否完整、是否有校验、如何界定一帧全部由用户程序来定义。协议帧格式适用场景模块端处理本项目是否选用MC协议固定命令帧含站号/命令/校验上位机组态、触摸屏、PLC间固定问答自动解析并应答否双向协议固定格式含站号/数据/校验温控器、变频器等智能仪表自动解析数据区否无顺序协议无固定格式原始字节透传两台PLC直连、扫码枪、串口设备只存取不解析是我一般会这样判断如果链路两端都是自己写程序且数据内容不固定就选无顺序协议。这样模块退化成一条透明管道通讯逻辑完全掌控在梯形图里调试时问题也好定位。2.2 两块模块的通道配置差异QJ71C24N和QJ71C24N-R2从正面看长得几乎一样但通道配置有本质区别。QJ71C24N的通道1是RS-232通道2是RS-422/485QJ71C24N-R2则两个通道都是RS-232。模块型号通道1通道2QJ71C24NRS-232RS-422/485QJ71C24N-R2RS-232RS-232这意味着两块模块配对时接线逻辑并不对称。要让QJ71C24N和QJ71C24N-R2通过RS232通讯只能从QJ71C24N的通道1出线因为它的通道2是RS-422/485电平和RS-232的电压范围完全不兼容。RS-232是单端±12V信号RS-422/485是差分信号直接对接不仅收不到数据长时间硬接还有可能损伤驱动芯片。QJ71C24N-R2的第二个RS-232通道是它的优势所在。主链路用通道1接QJ71C24N通道2还能再接一台带RS-232口的上位机或者触摸屏互不干扰。如果你手头已经有QJ71C24N接收侧再配一块QJ71C24N-R2是最划算的组合两个模块的通道1一对接就是一条干净的RS232点对点链路。RS232本身是点对点通讯距离一般控制在15米以内速率不宜太高9600到19200波特率在现场最稳。如果现场要求远距离或多点通讯那就不是这个方案能解决的问题了得换RS-422/485或者走以太网模块。2.3 直连线缆接线与引脚核对两块模块都是9针D型公头直连时不能用那种一头公一头母的延长线得做一条交叉线。项目中c图所示的做法实际就是标准的2-3交叉、5-5直连。功能QJ71C24N通道1引脚接至QJ71C24N-R2通道1引脚功能SD发送数据23RD接收数据RD接收数据32SD发送数据SG信号地55SG信号地三根线就能跑通基本的全双工通讯。发送侧的第2脚接到接收侧的第3脚发送侧的第3脚接到接收侧的第2脚两边的第5脚信号地直连。剩下的引脚不用接前提是开关设置里把硬件流控关掉。如果某些现场设备默认开了DTR/DSR或RTS/CTS握手那么对应引脚要么短接要么在参数里明确设为无效否则模块会一直等待握手信号而不发数据。线缆我一般选带屏蔽层的双绞线屏蔽层只在发送侧单端接地避免形成环形地线。RS232本来就是低电压信号和动力电缆同槽走线很容易被干扰现场布线尽可能分开。线缆长度控制在15米以内超过这个距离宁可改RS-422也别硬扛。接线完成的判断标准很简单万用表量两端2-3、3-2之间通断正常5脚之间电阻为零。量完再接设备通讯异常时第一反应不用怀疑线序省很多事。3. GX Works2开关设置通道1参数逐项配置3.1 添加模块槽号与智能功能模块的分配打开GX Works2进入工程后先在左侧导航树里找到“智能功能模块”。右键点击智能功能模块选择“添加新模块”弹出对话框里“模块类型”选择“串行通信”“模块型号”选择QJ71C24N然后点确定。这里有一个容易被忽略的地方模块型号选错会导致后面的开关设置界面完全不同QJ71C24N-R2必须单独选不能拿QJ71C24N代替。添加成功后展开“智能功能模块”节点下面会出现QJ71C24N。双击“开关设置”进入通道配置界面。在动手改参数之前先确认模块所在的槽号与实际硬件安装位置一致。槽号错了GX Works2虽然能保存参数但下装到PLC时模块地址和参数对不上通讯自然起不来。I/O分配也要避开CPU自带的输入输出和已占用的智能模块地址重复分配时软件会提示冲突。这一步骤的本质是让软件认识硬件把模块的通道、中断、缓冲存储器映射到CPU的地址空间里。后面的收发指令里用的通道号、X/Y信号编号都依赖这一步正确分配所以不要跳过。3.2 开关设置逐项解读协议、波特率、校验双击“开关设置”后界面左侧选择“通道1”右侧就是一串配置项。无顺序协议场景下我通常按下面这张表逐项填写配置项推荐值说明通讯协议无顺序协议透明传输不做帧解析波特率9600 或 19200两站必须一致数据位8常见ASCII/二进制数据都用8位奇偶校验无也可选偶校验两站必须一致停止位1标准配置和校验无无顺序协议下模块不做校验DTR/DSR控制无效关闭硬件流控三线通讯DC代码接收无效避免XON/XOFF被模块拦截通道1是QJ71C24N的RS-232口所以在“通道”下拉里确认选中的是通道1而不是通道2。通道2在无顺序协议里虽然也能配置但RS-422/485电平与RS-232不兼容本例根本不会用。设置完后点击“结束”或“设置结束”保存再继续配置下一个模块。波特率的选择不是越高越好。9600和19200在现场表现最稳定38400以上对线缆质量和接地要求明显提高。两站之间距离超过10米时我一般直接定9600宁可传输慢一点也要保证不丢字节。无顺序协议下模块是纯管道不会自动加校验码也不关心数据里是不是有错误的字节。通讯的完整性完全靠用户程序自己检查。这一点必须提前想明白否则接收侧收到错数据时会误以为是自己程序写错了。3.3 QJ71C24N-R2的设置与两站一致性核对QJ71C24N-R2的参数设置路径和QJ71C24N完全一样唯一的区别是添加模块时“模块型号”选择QJ71C24N-R2而不是QJ71C24N。展开智能功能模块双击开关设置同样选择通道1逐项填写与发送侧相同的参数。两个模块的参数一致性是通讯成功的前提每一个字节位都必须对得上。波特率、数据位、奇偶校验、停止位四项中任何一项不一致接收侧要么收不到数据要么收到的字节全部是乱码。参数项发送侧QJ71C24N通道1接收侧QJ71C24N-R2通道1一致性通讯协议无顺序协议无顺序协议一致波特率96009600一致数据位88一致奇偶校验无无一致停止位11一致DTR/DSR控制无效无效一致参数设置完成后参数并不会立刻生效。需要执行“在线→PLC写入→智能功能模块参数”把配置下装到PLC和模块中然后对PLC做一次复位或者断电重启模块才会按新参数运行。这是最容易漏的一步很多人在软件里设完参数直接上电调试发现通讯不通其实不是参数错而是参数根本没进模块。4. 无顺序协议收发程序OUTPUT发送与INPUT接收4.1 发送侧程序发送启动、数据区、发送完成处理发送侧以QJ71C24N的通道1为出口。程序思路是收到启动信号后把D区里组织好的数据通过OUTPUT指令一次性交给模块模块按无顺序协议逐字节从RS-232口发出。发送完成标志复位之前不允许发起下一次发送。// 发送侧梯形图指令表QJ71C24N 通道1 LD X0 // 发送启动信号按钮或上位机置位 OR M101 // 自保持确保发送过程中信号不丢失 ANI X0F // 通道1发送完成标志发送过程中断开 OUT M101 // 发送请求保持 LD M101 OUTPUT CH1 D10 D200 K10 // 通道1发送控制数据首址D10数据首址D200发送10个字 LD M101 AND X0F // 通道1发送完成 OUT M102 // 发送完成通知复位启动信号或通知上位机OUTPUT是串行通讯模块的专用发送指令指令里四个关键参数依次是通道号、控制数据起始软元件、发送数据起始软元件、发送点数。通道号必须与开关设置里配置的通道一致这里固定是CH1。控制数据D10用来存放发送相关的扩展参数比如结束方式、错误状态具体偏移地址按模块手册对照表确认。发送数据D200起连续10个字的内容就是实际发送的帧内容。X0F是通道1的发送完成信号只有当模块把最后一位数据真正写进RS-232发送寄存器后才会置位。程序里把X0F串在发送请求自保持回路中意味着上一帧没发完M101就被断开新的OUTPUT不会执行。这个互锁习惯很重要能防止连续发送时后一帧覆盖前一帧的缓冲。发送点数K10不是随意定的要和接收侧约定的帧长度严格一致。无顺序协议下接收侧通常按固定长度接收发送10个字接收侧就必须按10个字的长度去读否则数据会错位。4.2 接收侧程序接收完成标志、缓冲转存接收侧用QJ71C24N-R2的通道1。模块收到完整数据后会把数据存进自身接收缓冲区同时把接收完成信号X0E置位。用户程序的职责是及时用INPUT指令把这批数据读进PLC的D区读完之后清掉接收完成信号准备接收下一帧。// 接收侧梯形图指令表QJ71C24N-R2 通道1 LD X0E // 通道1接收完成标志模块置位 OUT M200 // 读取触发信号 LD M200 INPUT CH1 D10 D100 K10 // 通道1接收控制数据首址D10数据存入D100起10个字 LD M200 ANI X0E // 等待模块复位接收完成信号 OUT M201 // 整帧读取完成通知主程序处理 LD M201 RST M200 // 清除读取触发信号准备下一帧INPUT是串行通讯模块的专用接收指令参数含义与OUTPUT对称通道号、控制数据起始软元件、接收数据存放起始软元件、读取点数。D100到D109就是模块缓冲区内数据的落地点读取完成后这10个字可以交给后续的逻辑去解析、搬运或存入数据块。X0E置位后程序必须尽快执行INPUT。模块接收缓冲区的大小有限如果这一帧还没读走下一帧数据到了就会把旧数据覆盖掉造成丢帧。梯形图里用M200把X0E的置位状态锁存住再通过M200触发INPUT读取完成后用ANI X0E判断模块已经复位信号最后用M201通知主程序。整个流程保证了一帧一读、读后即清的基本逻辑。如果接收侧程序里没有及时读取而且缓冲区被覆盖那么表现就是通讯中断但模块本身没有任何报警。这是无顺序协议最容易翻车的地方后面避坑章节会重点讲。4.3 数据帧设计固定帧头、长度与软元件分配无顺序协议不提供任何帧边界识别两台PLC之间必须自己约定帧格式。最简单的做法是固定长度帧发送侧每次发固定数量的字接收侧按同样的字数读取。固定长度帧的好处是程序简单、逻辑清晰坏处是数据内容变化时也要按最大长度发送浪费一点带宽。为了能识别一帧数据的起始和有效性我习惯在有效数据前后加帧头和校验字字序号内容说明第1字0xAA55帧头固定值用于起始识别第2字0x0008数据长度表示有效数据为8个字第3~10字有效数据实际要交换的内容第11字累加和第1字到第10字的累加取低16位发送侧在组帧时先把帧头、长度、有效数据和校验字写入D200到D210再执行OUTPUT发送11个字。接收侧读取这11个字后先判断第一个字是不是0xAA55再计算第1到第10字的累加和与第11字比对。校验通过才认为这一帧数据有效不通过则丢弃并计数。D寄存器分配固定下来后发给梯形图里做符号注释避免地址漂移。发送侧的D200到D210、接收侧的D100到D110两者内容格式完全一致只是存放位置不同。这样设计的好处是后期要增加数据类型只需要改长度字段和有效数据区间的个数帧头校验逻辑不用动。5. 通讯避坑记录乱码、卡死、旧数据与电平错配5.1 现象数据乱码现象链路能通但接收侧收到的数据偶尔全是乱码十六进制监视里看到的是错位的字节和发送内容对不上。原因最常见的是两侧波特率、数据位、校验不一致。比如发送侧设了偶校验接收侧没设校验每个字节的高位就多了一位所有数据整体向右错一位。其次才是线缆过长或屏蔽层接地不良导致的电平抖动。解决先把开关设置里四项参数逐项截图对比波特率、数据位、奇偶校验、停止位必须完全一致。然后降波特率到9600做验证排除高速传输下的信号质量问题。如果9600下稳了说明是线缆或干扰不要急着提速率先处理接地和布线。5.2 现象接收程序停住等不到完成标志现象接收侧X0E一直不置位程序停在等待状态严重时CPU扫描周期被拉长甚至触发看门狗超时。原因发送侧根本没有把数据发出来发送条件没满足。另一个常见原因是开关设置里把DTR/DSR控制设成了有效但接线没接握手脚模块一直在等DTR信号数据根本出不去。解决先用万用表量发送侧2脚对地有没有电平变化确认模块确实在发。再看开关设置里DTR/DSR控制是不是“无效”如果不是要么改设置要么把收发两侧的4、6脚短接。我一般直接把硬件流控全部关掉裸三线跑通最省心。5.3 现象偶发通讯失败同一条产线时好时坏现象传输批量数据时偶尔缺几个字重连后又恢复故障没有固定规律时好时坏排查起来很玄学。原因两台设备的信号地没有真正共地。RS232的信号参考点是GND如果两台设备的5脚没有接通或者机壳地之间存在电位差接收侧判电平就会出问题。另一种情况是RS232线缆和动力电缆同槽走线干扰偶发。解决确认两台设备5脚GND已可靠连接屏蔽层只在发送侧单端接地。RS232线缆单独走线和变频器、电机电缆保持至少20厘米距离。如果现场布线改不了就换屏蔽双绞线或者降波特率提高抗干扰余量。5.4 现象读到的还是上一次的旧数据现象第二次发送后接收侧D区里的数据还是第一帧的旧内容程序好像没收到新帧。原因接收侧读取不及时或者读取完成后没有复位接收完成信号。模块缓冲区被新帧覆盖前INPUT读到的是旧缓冲区内容X0E一直保持程序误以为数据没变。解决X0E置位后立即执行INPUT读取读取完成后清掉触发标志做到一帧一读。接收程序里加一个帧序号或者帧头判断每次读到数据先验证帧头再判断是否是新帧。这样即使缓冲区状态异常旧数据也不会被当成有效数据用。5.5 现象改用R2的CH2后完全不通现象QJ71C24N通道1接QJ71C24N-R2通道1跑通了把线缆换到R2的通道2后立刻完全没有数据。原因R2的两个通道虽然都是RS232但它们的I/O首地址、X/Y信号编号、开关设置项完全独立。程序里的OUTPUT/INPUT指令仍然写的是CH1模块的通道2自然没有反应。两个通道物理上一样逻辑上是两块独立设备。解决换通道时开关设置里选“通道2”重新配置参数程序里OUTPUT/INPUT的通道号改成2接收完成信号X/Y地址也要按通道2的分配重新填写。不要以为“两个口都是RS232”就只换线不换程序这个坑我踩过换完通道还要做一次完整的参数核对和下装。6. 回环测试与在线监视十分钟验证RS232链路可靠性6.1 回环测试先确认板卡再连设备如果通讯不上第一步不是查程序而是做回环测试。找一只9针公头把2脚和3脚短接5脚自连插到QJ71C24N的通道1上。然后用发送侧程序触发一次OUTPUT如果程序能收到自己发出来的数据说明模块的发送链路、接收链路、缓冲区都是好的。回环通则问题在外部线缆回环不通则问题在模块或配置。6.2 在线监视与串口助手交叉验证GX Works2切换到在线监视模式把X0E、X0F、M200、M201、D100这些关键软元件全部丢进监视窗口。触发一次发送后看X0E是否置位、D100区域是否出现新数据。如果X0E不置位怀疑重点放在硬件如果X0E置位但数据不对怀疑重点放在参数一致性和帧校验。更直接的办法是用一只USB转RS232线一头插电脑另一头接到QJ71C24N-R2的通道1先用串口调试助手手动发送一帧固定内容观察PLC有没有收到。这一招能绕过PLC发送侧的程序逻辑单独验证接收侧程序是否正确。等接收侧确认没问题再切回两台PLC直连问题定位就缩小到发送侧了。从那以后我每次搭这样的串口链路都强制自己先做一遍回环测试再上真机宁可多花十分钟也不愿意到现场以后发现两块模块之间的问题还是先怀疑模块后怀疑线这么绕一大圈。这个习惯帮我省掉了不少来回试错的功夫希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?