標(biāo)題:
STM32單片機(jī)PLC FX3U源碼以及關(guān)聯(lián)資料
[打印本頁(yè)]
作者:
yyhyyhyyh
時(shí)間:
2022-12-11 17:06
標(biāo)題:
STM32單片機(jī)PLC FX3U源碼以及關(guān)聯(lián)資料
//crc校驗(yàn)碼 從02后面一個(gè)字節(jié)開(kāi)始累加到03,和的低8位再分成高4位和低4位,即03后面的兩個(gè)字節(jié)
//三菱格式碼 0 --30 1--31 2--32 3--33 4--34 5--35 6--36 7--37 8--38
// 9--39 A--41 B--42 C--43 D--44 E--45 F--46
三、寄存器說(shuō)明
M0-M383 384點(diǎn) 一般用
M384-M511 128點(diǎn) EEPROM 保持用
M512-M1535 1024點(diǎn) 電容保持用
M8000-M8255 256點(diǎn) 特殊用
S0-S9 10點(diǎn) 初始狀態(tài) EEPROM保持性
S10-S127 118點(diǎn) EEPROM保持性
S128-S999 872點(diǎn) 電容保持性
D0-D127 128點(diǎn)
D128-D255 128點(diǎn) EEPROM保持性、
D256-D7999 7744點(diǎn) 電容保持性
D1000-D7999 文件寄存器
D8000-D8255 256點(diǎn) 16位特殊用 本程序?qū)?yīng)D6000-D6255
四、模擬量采集
D7899到 D7999存放的是 模擬量采集 數(shù)字量---高溫度值----低溫度值-----電流值
單片機(jī)源程序如下:
/********************************************************************************
* 文件名 :main.c
* 描述 :PLC應(yīng)用平臺(tái)固件程序
* DI DO AI AO RTC 固件 監(jiān)控
* 實(shí)驗(yàn)平臺(tái):螺桿機(jī)通用平臺(tái)
* 硬件連接: 1、停電處理 停電時(shí)不做主循環(huán) 梯形圖停止運(yùn)轉(zhuǎn) IO停止輸出
2、正常運(yùn)轉(zhuǎn)模式
* 作者 : 王璽聯(lián)
**********************************************************************************/
#include "PLC_Config.h"
#include "bsp.h"
#include "port.h"
AppManageFlag MainAppManageFlag;
//**************************************************************************************************
// [名稱(chēng)] u8 ExtendBoardHaveOrNot(void)
// [功能] 擴(kuò)展板有無(wú)檢測(cè)
// [作者]
// [日期] 2015年08月11號(hào)
// [版本]
//**************************************************************************************************
u8 ExtendBoardHaveOrNot(void)
{
if (GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5) == 1)
{
//為高說(shuō)明擴(kuò)展板存在
d[ SYS_EXTEND_BORD_HAVE_ADR ]= EXTEND_BORD_HAVE;
return EXTEND_BORD_HAVE ;
}
else
{
//為低電平 說(shuō)明擴(kuò)展板不存在
d[ SYS_EXTEND_BORD_HAVE_ADR ]=EXTEND_BORD_HAVE_NO;
return EXTEND_BORD_HAVE_NO;
}
}
//**************************************************************************************************
// [名稱(chēng)] void AppMain(void)
// [功能] 正常運(yùn)行處理 電源正常 梯形圖運(yùn)轉(zhuǎn) 非修正模式
// [作者]
// [日期]
// [版本]
//**************************************************************************************************
void AppMain(void)
{
RegisterXInRefresh();
if(MainAppManageFlag.AdConvert ==TRUE)
{
MainAppManageFlag.AdConvert = FALSE;
AdConvertManage();
}
if(MainAppManageFlag.RtcEeprom ==TRUE)
{
MainAppManageFlag.RtcEeprom = FALSE;
RtcTimeEepromWrtReadManage();
}
if(MainAppManageFlag.DaOut ==TRUE)
{
MainAppManageFlag.DaOut = FALSE;
DaOutManage();
}
if(MainAppManageFlag.Modbus ==TRUE)
{
MainAppManageFlag.Modbus =FALSE;
if (RS485_SLAVE_MODE ==d[RS_485_MASTER_SLAVE_SWICH])
{
ModbusManage();
}
else if(RS485_MASTER_MODE ==d[RS_485_MASTER_SLAVE_SWICH])
{
TopUnitContrlManage();
}
else
{
;//去執(zhí)行三菱通信協(xié)議
}
}
if(MainAppManageFlag.TopOsWrdBit == TRUE)
{
MainAppManageFlag.TopOsWrdBit =FALSE;
TopWrdBitConvertManage();
}
if(MainAppManageFlag.TopOsPhyPropBit == TRUE)
{
MainAppManageFlag.TopOsPhyPropBit =FALSE;
TopPhysiPropManage();
}
if(LadRun()==LAD_DOWN_LOAD_OVER)
{
SetLedSts(PLC_LAD_RUN );
}
else
{
SetLedSts(PLC_IDLE );
}
RegisterYOutRefresh();
}
//**************************************************************************************************
// [名稱(chēng)] int main(void)
// [功能] 主程序處理
// [作者]
// [日期] 2014年10月9號(hào)
// [版本]
//**************************************************************************************************
unsigned char MainLoop =100;
extern unsigned char volatile PlcManageSts;
int main(void)
{
//禁止所有中斷
DisableInterrupts();
CompileLocatToDataSectionClr();
CompileDataClr();
//NVIC configuration
NVIC_Configuration();
TIM2_Initial();
//GPIO 輸入輸出設(shè)置
GPIO_Configuration();
SysTickConfig();
I2C_EE_Init() ;
Usart1Init();
Usart2MultiComInit();
Usart3Init();
FuncInit();
PowerOnManage();
SetSubCircutStartOn();
ExtendBoardHaveOrNot();
E2PromFirstUseInitManage();
ReadCorectParamDataFromE2prom();
PowerOnReadRtcCopyToLocalClock();
IWDGInit();
//開(kāi)啟所有中斷
EnableInterrupts();
while (1)
{
IWDG_ReloadCounter();
switch(MainLoop)
{
case 100:
//在進(jìn)入真正的梯形圖循環(huán)之前將 DI AI 數(shù)據(jù)采集到內(nèi)存
RegXReset();
RegisterXInRefresh();
if(AD_MANAGE_FINSH ==AdConvertManage( ))
{
MainLoop =0;
}
else
{
MainLoop =100;
}
break;
//掉電檢測(cè)
case 0:
if(PowerOffManage() ==TRUE)
{
MainLoop =4;
}
else
{
MainLoop =1;
}
break;
//編程PROG SW檢測(cè)
case 1:
PlcProgRunCheck();
if(LAD_RUN == PlcManageSts)
{
MainLoop =6;
}
else if(LAD_PROG == PlcManageSts)
{
MainLoop =5;
}
else if(LAD_RUN_TO_PROG == PlcManageSts)
{
MainLoop =50;
}
else if(LAD_PROG_TO_RUN == PlcManageSts)
{
MainLoop =60;
}
break;
//掉電 模式
//檢測(cè)是否來(lái)電,來(lái)電后進(jìn)行主程序循環(huán)
case 4:
if(TRUE ==PowerOnCheckManage())
{
MainLoop =0;
}
else
{
MainLoop =4;
}
break;
case 50:
PlcStopInit();
MainLoop =5;
break;
//編程模式
case 5:
LadProgManage();
SetLedSts(PLC_LAD_PORG );
CorectParamDataPrintManage( );
MainLoop =0;
break;
case 60:
//等待復(fù)位
DisableInterrupts();
PlcRunInit();
PlcProgToRunReadCrctParamInit();
GenerateSystemReset();
EnableInterrupts();
break;
//運(yùn)行模式
case 6:
AppMain();
MainLoop =0;
break;
default:
break;
}
}
}
復(fù)制代碼
51hei.png
(9.3 KB, 下載次數(shù): 56)
下載附件
2022-12-12 03:01 上傳
所有資料51hei附件下載:
FX3U源碼以及關(guān)聯(lián)資料20180827.7z
(1.95 MB, 下載次數(shù): 136)
2022-12-12 03:04 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
jokefjg
時(shí)間:
2022-12-17 12:31
有沒(méi)有F407的
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1