资源简介
modbus主机源码.rar。
代码片段和文件信息
/*
此为MODBUS主机ASC协议
MODBUS测试时的两组数据(已测试能正常接收该数据包)
主机发 :010300110001EA+回车换行
:0103020001F9+回车换行
*/
#include “function_config.h“
#if _MODBUSEN_
#include “modbus_app.h“
#include “timer.h“
MODBUS modbus;
PLCREG modreg;//MODBUS寄存器
void Modbus_Init() //
{
Rs485RT_Init(); //RS485收发控制脚
RS485RT_0;//接收
Rs485UART_Init();
Rs485_GetAdd(); //读取本板子地址--因为是主机程序,所以在该函数中将MODBUS地址直接设置为2
}
void SetPLC_Reg(u16 regu16 datu16 waitms) //将PLC的reg寄存器设置为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]); //要写入的数据
i+=2;
HextoAsc(dat%256&modbus.ModSenbuf[i]); //
i+=2;
ch=Calc_LRC(&modbus.ModSenbuf[1]i-1); //减去冒号进行校验码计算
HextoAsc(ch&modbus.ModSenbuf[i]); //校验码
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< waitms)
{
}
Mosbus_Event(); //处理 PLC返回的数据包
}
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]); // 要读的寄存器个数
i+=2;
HextoAsc(rcount%256&modbus.ModSenbuf[i]); // 要读的寄存器个数
i+=2;
ch=Calc_LRC(&modbus.ModSenbuf[1]i-1); //减去冒号进行校验码计算
HextoAsc(ch&modbus.ModSenbuf[i]); //校验码
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< waitms)
{
}
Mosbus_Event(); //处理PLC返回的数据包
}
//
void Mosbus_Event() //处理 PLC返回的数据包
{
u8 TempFun;
volatile u16 Tregtxcount;
if(modbus.ModReflag==0) return ; //收到了MODBUS ASC数据包
// Modbus_sendstring((char *)modbus.ModRecbuf); //发回MODBUS收到的数据帧
modbus.ModAdd= Get_hex((u8 *)(&modbus.ModRecbuf[1]));//返回数据包的从机地址
if(PLCMODBUSADD==modbus.ModAdd) //PLC地址吻合
{
TempFun = Get_hex((u8 *)(&modbus.ModRecbuf[3]));//得到功能码
if(TempFun>=0x80) //返回的功能码大于128
{
}
else
{
modbus.ModFun=TempFun;
if(modbus.ModFun==0x06) //对PLC写入操作后返回的数据包
{
tx= Get_hex((u8 *)(&modbus.ModRecbuf[7])); //得到寄存器号
tx<<=8;
tx|=Get_hex((u8 *)(&modbus.Mod
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11895 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\modbus_app.c
文件 2790 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\modbus_app.h
文件 892 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODBUS_ASC.C
文件 208 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODBUS_ASC.H
文件 70 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODBUS_reg(1).h
文件 87 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\Modbus_reg.c
文件 4691 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODBUS_UART.C
文件 474 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODBUS_UART.H
文件 1923 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\MODREG.TXT
文件 3720 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\Plc_cmd.c
文件 1259 2018-07-08 22:43 主机源码\MODBUS_ASC 主机\plc_cmd.h
文件 17273 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\CORE\core_cm3.c
文件 85714 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\CORE\core_cm3.h
文件 15503 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\CORE\startup_stm32f10x_hd.s
文件 2901 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUS\modbus.c
文件 594 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUS\modbus.h
文件 2529 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUS\modbus_uart.c
文件 156 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUS\modbus_uart.h
文件 4149 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUSCRC\ModbusCRC.c
文件 645 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\MODBUSCRC\ModbusCRC.h
文件 460 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\TIME\timer.c
文件 100 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\HARWARE\TIME\timer.h
文件 399 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\keilkilll.bat
文件 3942 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\core_cm3.crf
文件 104 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\core_cm3.d
文件 11224 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\core_cm3.o
文件 349955 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\delay.crf
文件 1669 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\delay.d
文件 383216 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\delay.o
文件 19 2018-07-08 22:43 主机源码\MODBUS从机成功\modbus从机1.0自动流控制收发\OBJ\ExtDll.iex
............此处省略401个文件信息
相关资源
- 用VC2010编写的基于TCPIP的Modbus网络通讯
- Modbus 标准
- ModbusPoll最新版7.1.0
- 台达PLC与电脑 Modbus rtu通讯 上位机软
- ModbusPoll安装包32位
- 西门子S7-200Smart Modbus TCP协议通讯主站
- STEP 7 MicroWIN 指令库 包含Modbus指令库和
- 西门子PLC200系列Modbus从站库
- 西门子 CP341 modbus主站文件
- Modbus调试工具集合
- freemodbus v1.6最新版本
- NModbus开源库129838
- 51单片机和modbus中文资料软件源代码全
- 基于STM32F407ZGT6库函数写的Modbus协议
- FreeRTOS和FreeMODBUS移植到STM32F407傻瓜教
- 51单片机Modbus_RTU
- modbus-主机-stm32移植源码与调试工具
- 基于modbus的dht11温湿度采集
- Modbus Poll、Modbus Slave和Virtual Serial Po
- Intouch modbus驱动DASMBTCP1.1
- EN2T的ModbusTCP例程+说明文档
- stm32 modbus主机程序125364
- stm32F1++w5500+modbus TCP串口发送数据DMA
- Modbus协议的工业自动化网络规范
- STM32单片机实现Modbus协议主机2个源码
- 常用_Modbus-RTU测试工具_主从机都有
- modbus调试助手主站
- S7-1200ModbusTCP通讯程序
- zw_STM32-modbusmaster.zip
- modbus tcp 客户端和服务端
评论
共有 条评论