91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-19
  • 語言: 其他
  • 標簽: modbus協議??

資源簡介

可靈活配置為主機或者從機,做為從機時,上電復位后長時間未接收到命令會有一次機會自動轉換為主機,與帶有modbus協議的外設通信

資源截圖

代碼片段和文件信息

/********************************************
MCU:?STC12C5A60S2
AUTHOR:
VERSION:
TIME:
*********************************************/

#define?_MODBUS_GLOBALS_
#include?“common.h“

void?ModbusInit(void)
{
unsigned?char?cnt;
RX_485_EN() ;
R_485 = 1;
D_485 = 1;

//參數配置
ModbusPara.sRUN?=??MB_IDEL;
ModbusPara.sERR?=?ERR_NOT;
ModbusPara.times?=?0;
ModbusPara.ms_50?=?0;
ModbusPara.rCnt?=?0;
ModbusPara.HostRept?=?0;
ModbusPara.mAddrs?=?MB_ConceDevice_ADDR;
for(cnt?=?0?;cnt? {
ModbusPara.rBuf[cnt]?=?0;
ModbusPara.tBuf[cnt]?=?0;
}

for(cnt?=?0?;cnt? {
CoilBitPara[cnt]?=?0;
}

for(cnt?=?0?;cnt? {
DiscreteBitPara[cnt]?=?0;
}

for(cnt?=?0?;cnt? {
HoldingREGPara[cnt]?=?0;
}

for(cnt?=?0?;cnt? {
InputREGPara[cnt]?=?0;
}
}

void?ModbusTimesProcess(void)
{
ModbusPara.times++;
if(ModbusPara.times?==?200)?
{
ModbusPara.ms_50++;
}

cnt1ms?++; //260us
if(cnt1ms%200?==?199)?
{//?50ms
cnt1ms?=?0;
bTime100ms?++;
bTsave100ms?++;
bTime1s?++;
bTime50ms?++;
}

if((ModbusPara.sRUN&MB_BUSY)?==??MB_BUSY)?
{//?總線檢測
if(ModbusPara.times?>=?BUS_IDLE_TIME)?
{//總線進入空閑,幀結束或開始
if(ModbusPara.sRUN?==?MB_RECIVE_ERR)
{//?接收過程中?有出現數據存儲空間溢出或間隔時間超過T1.5
ModbusPara.sERR?=ERR_MB_DEVICE;
}

if(ModbusPara.sRUN?==?MB_SEND)?
{
ModbusPara.sRUN?=?MB_WAIT_HOST;
ModbusPara.ms_50?=?0;
}
else?
{
ModbusPara.sRUN?=??MB_IDEL;
}
ModbusPara.times?=?0;
}
}
else?if(ModbusPara.sRUN?==??MB_WAIT_HOST)
{//等待合法設備響應
if(ModbusPara.ms_50?>=?NO_RESPONSE_TIME?||??
(ModbusPara.ms_50?>=NO_RESPONSE_TIME_BC?&&?ModbusPara.mAddrs?==?MB_Broadcast_ADDR))
{//從設備響應超時
if(ModbusPara.mAddrs?==?MB_Broadcast_ADDR)
{
ModbusPara.sRUN?=??MB_IDEL;
ModbusPara.sERR?=?ERR_NOT;
}
else
{
ModbusPara.sRUN?=?MB_NO_RESPONSE;
ModbusPara.sERR?=?ERR_MB_DEVICE;
}
ModbusPara.ms_50?=?0;
}
}
}

void?ModbusSend(unsigned?char?length)?
{
unsigned?char?cnt;

TX_485_EN() ;
for(cnt=0;?cnt? {//?test和延時作用
// TxOneData(ModbusPara.tBuf[cnt]);
}

if(length)
{
ModbusPara.sRUN?=?MB_SEND;
ModbusPara.times?=?0;
for(cnt=0;?cnt? {
usart2_sendb(ModbusPara.tBuf[cnt]);
ModbusPara.times?=?0;??//重新計時
}
}
RX_485_EN() ;
}

void?Modbus_ERROR(void)?
{
unsigned?short? temp16;

if(bHost_protocol)
{
if(ModbusPara.sERR)
{
if(ModbusPara.sERR?!=?ERR_MB_DATA?&&??ModbusPara.sERR?!=??ERR_MB_DEVICE)
{//??不需要重復發送
ModbusPara.HostRept?=?0;
}
if(ModbusPara.HostRept?==?0)?ModbusPara.sERR=?ERR_NOT;
}

if(ModbusPara.HostRept)
{//?重復送
ModbusPara.HostRept?--;
if(ModbusPara.tBuf[1]?==?CHECK_COIL_bSTATUS?||?ModbusPara.tBuf[1]?==?GET_INPUT_bSTATUS?
||?ModbusPara.tBuf[

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????28417??2015-03-11?11:19??modbus.c

?????文件???????6065??2015-03-11?11:19??ModBus.h

?????文件???????3902??2015-02-12?09:30??ModBusCrc16.c

?????文件????????239??2015-02-12?09:30??ModBusCrc16.h

-----------?---------??----------?-----??----

????????????????38623????????????????????4


評論

共有 條評論