三菱PLC FX3U-48MRT 源码,原理图,PCBFX3U PLC控制器资料 尺寸: 主控芯片
三菱PLC FX3U-48MRT 源码,原理图,PCBFX3U PLC控制器资料 尺寸: 主控芯片:STM32F103VET6 电源:DC24V 功能: 1、1路RS232、1路RS485。 2、24路独立输出,PC817光耦隔离,继电器输出;24路独立输入,PC817光耦隔离,独立TTL输入。 预留端口。 3、4个指示灯:电源、模式、运行、故障 4、2路模拟量输入ADC、2路模拟量输出ADC 资料包含:原理图(AD版本)、PCB(AD版本)、BOM表,程序源码

最近在折腾三菱PLC FX3U-48MRT的控制器硬件方案,发现这货主控用的居然是STM32F103VET6。玩过PLC的都知道,用32位ARM核做控制现在挺常见,但原厂方案直接上STM32还是有点意思。拆开资料包看到原理图,整个架构确实比传统PLC清爽不少。

电源部分24V转5V/3.3V的方案挺经典,用的是MP2359这颗DC-DC芯片。重点看下输入输出隔离电路,24路输入输出全都用PC817光耦做了隔离。这里有个细节处理得不错——数字量输入端口加了TVS管阵列,实测抗干扰能力确实比裸奔方案强不少。看程序里GPIO初始化这段:
void GPIO_Init(void) {
// 输入端口配置
GPIOB->CRL = 0x88888888; // PB0-PB7 浮空输入
GPIOC->CRH = 0x88888888; // PC8-PC15 浮空输入
// 输出端口配置
GPIOD->CRL = 0x33333333; // PD0-PD7 推挽输出
GPIOE->CRL = 0x33333333; // PE0-PE7 推挽输出
}
这个配置把STM32的端口模式玩得很透,输入端口全设成浮空省功耗,输出用推挽增强驱动能力。不过要注意PD和PE端口对应的继电器驱动电路,原理图上每个输出通道都配了ULN2003达林顿管,这样IO口直接就能驱动继电器线圈。

通信模块的设计有点意思,RS485用了SP3485芯片,RS232则是MAX3232。看源码里串口中断处理函数:
void USART1_IRQHandler(void) {
if(USART1->SR & USART_SR_RXNE) {
uint8_t ch = USART1->DR;
if(rs485_rx_cnt < BUF_SIZE) {
rs485_buf[rs485_rx_cnt++] = ch;
}
}
}
典型的轮询式接收,不过建议加上超时机制会更稳。实测波特率跑到115200没问题,但要注意485总线的终端电阻配置,原理图上是跳线选择的设计,现场调试时记得根据实际情况调整。

三菱PLC FX3U-48MRT 源码,原理图,PCBFX3U PLC控制器资料 尺寸: 主控芯片:STM32F103VET6 电源:DC24V 功能: 1、1路RS232、1路RS485。 2、24路独立输出,PC817光耦隔离,继电器输出;24路独立输入,PC817光耦隔离,独立TTL输入。 预留端口。 3、4个指示灯:电源、模式、运行、故障 4、2路模拟量输入ADC、2路模拟量输出ADC 资料包含:原理图(AD版本)、PCB(AD版本)、BOM表,程序源码

模拟量部分用了STM32自带的ADC,2路输入通过LM324做了信号调理。看ADC初始化代码:
void ADC_Config(void) {
ADC1->CR2 = ADC_CR2_ADON; // 开启ADC
ADC1->SMPR2 = 0x07; // 通道0采样时间239.5周期
while(!(ADC1->SR & ADC_SR_ADONS));
}
这里有个小坑——源码默认用的12位精度,但实际电路前端运放是单电源供电,负电压信号需要做偏移处理。建议修改运放电路或代码里做软件校准。
PCB布局方面,四层板设计把电源层单独分开,数字地和模拟地通过磁珠连接这点做得讲究。IO端口区域留了测试点,调试时用示波器抓信号方便很多。BOM表里器件基本都是常用型号,备料没啥难度。
总体来说这个方案适合中低端设备控制,想要魔改的话建议:1. 给ADC加基准电压芯片 2. 通信部分增加隔离电源 3. 输出端继电器换成固态继电器会更耐用。源码结构清晰,拿来做二次开发比从零撸代码省心多了。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)