資源簡(jiǎn)介
modbus主機(jī)源碼.rar。

代碼片段和文件信息
/*
????此為MODBUS主機(jī)ASC協(xié)議
MODBUS測(cè)試時(shí)的兩組數(shù)據(jù)(已測(cè)試能正常接收該數(shù)據(jù)包)
主機(jī)發(fā) :010300110001EA+回車(chē)換行
??????????:0103020001F9+回車(chē)換行????????
*/
#include?“function_config.h“
#if?_MODBUSEN_
#include?“modbus_app.h“
#include?“timer.h“
MODBUS?modbus;
PLCREG?modreg;//MODBUS寄存器
void?Modbus_Init()??//
{
?Rs485RT_Init();??//RS485收發(fā)控制腳
?RS485RT_0;//接收
???Rs485UART_Init();
???Rs485_GetAdd();??//讀取本板子地址--因?yàn)槭侵鳈C(jī)程序,所以在該函數(shù)中將MODBUS地址直接設(shè)置為2
}
void?SetPLC_Reg(u16?regu16?datu16?waitms)??//將PLC的reg寄存器設(shè)置為dat
{
???u8?ich;
???i=0;
?modbus.ModRecount=0;
?modbus.ModSenbuf[i++]=‘:‘;//asc起始字符
?//Treg=reg;
?HextoAsc(PLCMODBUSADD&modbus.ModSenbuf[i]);??//地址
?i+=2;
?HextoAsc(0x06&modbus.ModSenbuf[i]);??//功能碼??0x03
?i+=2; ?
???HextoAsc(reg/256&modbus.ModSenbuf[i]);??//要讀的寄存器起始地址
?i+=2;
???HextoAsc(reg%256&modbus.ModSenbuf[i]);??//
?i+=2;
???HextoAsc(dat/256&modbus.ModSenbuf[i]);??//要寫(xiě)入的數(shù)據(jù)
?i+=2;
???HextoAsc(dat%256&modbus.ModSenbuf[i]);??//
?i+=2;
?ch=Calc_LRC(&modbus.ModSenbuf[1]i-1);?//減去冒號(hào)進(jìn)行校驗(yàn)碼計(jì)算
?HextoAsc(ch&modbus.ModSenbuf[i]);??//校驗(yàn)碼
?i+=2;
?modbus.ModSenbuf[i++]=‘\r‘;
?modbus.ModSenbuf[i++]=‘\n‘;
?modbus.ModSenbuf[i++]=0;
?modbus.ModRecount=0;
???Modbus_sendstring(?(char*)modbus.ModSenbuf);
???time10ms.plcwaitms=0;
?
?while(time10ms.plcwaitms ?{
????
?}
Mosbus_Event();??//處理?PLC返回的數(shù)據(jù)包?
}
void?GetPLC_Reg(u16?regu8?rcountu16?waitms)??//讀取PLC某寄存器的值
{
???u8?ich;
???i=0;
?modbus.ModRecount=0;
?modbus.CurrReg=reg;
?modbus.ModSenbuf[i++]=‘:‘;//asc起始字符
?HextoAsc(PLCMODBUSADD&modbus.ModSenbuf[i]);??//地址
?i+=2;
?HextoAsc(0x03&modbus.ModSenbuf[i]);??//功能碼??0x03
?i+=2; ?
???HextoAsc(reg/256&modbus.ModSenbuf[i]);??//要讀的寄存器起始地址
?i+=2;
???HextoAsc(reg%256&modbus.ModSenbuf[i]);??//
?i+=2;
???HextoAsc(rcount/256&modbus.ModSenbuf[i]);??//???要讀的寄存器個(gè)數(shù)
?i+=2;
???HextoAsc(rcount%256&modbus.ModSenbuf[i]);??//???要讀的寄存器個(gè)數(shù)
?i+=2;
?ch=Calc_LRC(&modbus.ModSenbuf[1]i-1);?//減去冒號(hào)進(jìn)行校驗(yàn)碼計(jì)算
?HextoAsc(ch&modbus.ModSenbuf[i]);??//校驗(yàn)碼
?i+=2;
?modbus.ModSenbuf[i++]=‘\r‘;
?modbus.ModSenbuf[i++]=‘\n‘;
?modbus.ModSenbuf[i++]=0;
???Modbus_sendstring(?(char*)modbus.ModSenbuf);
?time10ms.plcwaitms=0;
?while(time10ms.plcwaitms ?{
????
?}
???Mosbus_Event();?//處理PLC返回的數(shù)據(jù)包
}
//
void?Mosbus_Event()??//處理?PLC返回的數(shù)據(jù)包
{
u8??TempFun;
volatile?u16?Tregtxcount;
??if(modbus.ModReflag==0)??return?;???//收到了MODBUS?ASC數(shù)據(jù)包
???
//?Modbus_sendstring((char?*)modbus.ModRecbuf);??//發(fā)回MODBUS收到的數(shù)據(jù)幀
?modbus.ModAdd=?Get_hex((u8?*)(&modbus.ModRecbuf[1]));//返回?cái)?shù)據(jù)包的從機(jī)地址
?if(PLCMODBUSADD==modbus.ModAdd)???//PLC地址吻合
?{
????TempFun?=?Get_hex((u8?*)(&modbus.ModRecbuf[3]));//得到功能碼
?????if(TempFun>=0x80)???//返回的功能碼大于128
?{
????????
?}
?????else
?{
???modbus.ModFun=TempFun;
?if(modbus.ModFun==0x06)??//對(duì)PLC寫(xiě)入操作后返回的數(shù)據(jù)包
?{
? tx=?Get_hex((u8?*)(&modbus.ModRecbuf[7]));??????//得到寄存器號(hào)
tx<<=8;
tx|=Get_hex((u8?*)(&modbus.Mod
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????文件??????11895??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\modbus_app.c
?????文件???????2790??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\modbus_app.h
?????文件????????892??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODBUS_ASC.C
?????文件????????208??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODBUS_ASC.H
?????文件?????????70??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODBUS_reg(1).h
?????文件?????????87??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\Modbus_reg.c
?????文件???????4691??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODBUS_UART.C
?????文件????????474??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODBUS_UART.H
?????文件???????1923??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\MODREG.TXT
?????文件???????3720??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\Plc_cmd.c
?????文件???????1259??2018-07-08?22:43??主機(jī)源碼\MODBUS_ASC?主機(jī)\plc_cmd.h
?????文件??????17273??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\CORE\core_cm3.c
?????文件??????85714??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\CORE\core_cm3.h
?????文件??????15503??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\CORE\startup_stm32f10x_hd.s
?????文件???????2901??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUS\modbus.c
?????文件????????594??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUS\modbus.h
?????文件???????2529??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUS\modbus_uart.c
?????文件????????156??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUS\modbus_uart.h
?????文件???????4149??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUSCRC\ModbusCRC.c
?????文件????????645??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\MODBUSCRC\ModbusCRC.h
?????文件????????460??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\TIME\timer.c
?????文件????????100??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\HARWARE\TIME\timer.h
?????文件????????399??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\keilkilll.bat
?????文件???????3942??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\core_cm3.crf
?????文件????????104??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\core_cm3.d
?????文件??????11224??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\core_cm3.o
?????文件?????349955??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\delay.crf
?????文件???????1669??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\delay.d
?????文件?????383216??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\delay.o
?????文件?????????19??2018-07-08?22:43??主機(jī)源碼\MODBUS從機(jī)成功\modbus從機(jī)1.0自動(dòng)流控制收發(fā)\OBJ\ExtDll.iex
............此處省略401個(gè)文件信息
評(píng)論
共有 條評(píng)論