?? osfunfile.c
字號(hào):
/****************************************Copyright (c)**************************************************
** 廣州致遠(yuǎn)電子有限公司
**
** http://www.21cm.com.cn
**
**
**--------------File Info-------------------------------------------------------------------------------
** File name: OSFUNfile.c
** Last modified Date: 2005-01-11
** Last Version: 1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Created by: ZhouLishan
** Created date: 2005-01-11
** Version: 1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
//*********************************************************************************
// 函數(shù)名稱:OSReadCoils
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,線圈起始地址(0x0000~0xffff)
// Quantity,線圈數(shù)量(0x001~0x07d0)
// ReaValuePtr,保存線圈值的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:讀取線圈值。0x01
//*********************************************************************************
uint8 OSReadCoils(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint8 *ReaValuePtr)
{
READ_PARAMET Parameter;
Parameter.RStartAddr = StartAddress;
Parameter.RQuantity = Quantity;
Parameter.DataPtr = (uint16 *)ReaValuePtr;
return ModbusPoll(ID,0x01,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSReadDisInputs
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,離散量輸入起始地址(0x0000~0xffff)
// Quantity,離散量輸入數(shù)量(0x001~0x07d0)
// ReaValuePtr,保存離散量輸入值的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:讀取離散量輸入值。0x02
//*********************************************************************************
uint8 OSReadDisInputs(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint8 *ReaValuePtr)
{
READ_PARAMET Parameter;
Parameter.RStartAddr = StartAddress;
Parameter.RQuantity = Quantity;
Parameter.DataPtr = (uint16 *)ReaValuePtr;
return ModbusPoll(ID,0x02,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSReadHoldReg
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,寄存器起始地址(0x0000~0xffff)
// Quantity,寄存器數(shù)量(0x0001~0x007d)
// ReaValuePtr,保存讀出寄存器值的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:讀取保持寄存器值。0x03
//*********************************************************************************
uint8 OSReadHoldReg(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint16 *ReaValuePtr) // 讀保持寄存器
{
READ_PARAMET Parameter;
Parameter.RStartAddr = StartAddress;
Parameter.RQuantity = Quantity;
Parameter.DataPtr = ReaValuePtr;
return ModbusPoll(ID,0x03,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSReadInputReg
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,輸入寄存器起始地址(0x0000~0xffff)
// Quantity,輸入寄存器數(shù)量(0x0001~0x007d)
// ReaValuePtr,保存讀出輸入寄存器值的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:讀取輸入寄存器值。0x04
//*********************************************************************************
uint8 OSReadInputReg(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint16 *ReaValuePtr)
{
READ_PARAMET Parameter;
Parameter.RStartAddr = StartAddress;
Parameter.RQuantity = Quantity;
Parameter.DataPtr = ReaValuePtr;
return ModbusPoll(ID,0x04,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSWriteSingleCoil
// 輸入?yún)?shù):ID,從機(jī)地址
// OutAddress,寫(xiě)入的地址(0x0000~0xffff)
// OutValue,寫(xiě)入的值COIL_OFF(0x0000)、COIL_ON(0xff00)
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:寫(xiě)單線圈操作。0x05
//*********************************************************************************
uint8 OSWriteSingleCoil(uint8 ID,
uint16 OutAddress,
uint16 OutValue)
{
WRITE_PARAMET Parameter;
Parameter.WStartAddr = OutAddress;
Parameter.DataPtr = &OutValue;
return ModbusPoll(ID,0x05,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSWriteSingleReg
// 輸入?yún)?shù):ID,從機(jī)地址
// OutAddress,寫(xiě)入的地址(0x0000~0xffff)
// OutValue,寫(xiě)入的值(0x0000~0xffff)
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:寫(xiě)單寄存器操作。0x06
//*********************************************************************************
uint8 OSWriteSingleReg(uint8 ID,
uint16 OutAddress,
uint16 OutValue)
{
WRITE_PARAMET Parameter;
Parameter.WStartAddr = OutAddress;
Parameter.DataPtr = &OutValue;
return ModbusPoll(ID,0x06,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:OSWriteMultipleCoils
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,寫(xiě)入的地址(0x0001~0xffff)
// Quantity,寫(xiě)入的數(shù)量(0x0001~0x07b0)
// ValuePtr,寫(xiě)入數(shù)據(jù)的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:寫(xiě)多線圈操作。0x0f
//*********************************************************************************
uint8 OSWriteMultipleCoils(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint8 *ValuePtr)
{
WRITE_PARAMET Parameter;
Parameter.WStartAddr = StartAddress;
Parameter.WQuantity = Quantity;
Parameter.DataPtr = (uint16*)ValuePtr;
return ModbusPoll(ID,0x0f,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:WriteMultipleReg
// 輸入?yún)?shù):ID,從機(jī)地址
// StartAddress,寫(xiě)入的地址(0x0001~0xffff)
// Quantity,寫(xiě)入的數(shù)量(0x0001~0x0078)
// ValuePtr,寫(xiě)入數(shù)據(jù)的指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:寫(xiě)多寄存器操作。0x10
//*********************************************************************************
uint8 OSWriteMultipleReg(uint8 ID,
uint16 StartAddress,
uint16 Quantity,
uint16 *ValuePtr)
{
WRITE_PARAMET Parameter;
Parameter.WStartAddr = StartAddress;
Parameter.WQuantity = Quantity;
Parameter.DataPtr = ValuePtr;
return ModbusPoll(ID,0x10,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:MaskWriteReg
// 輸入?yún)?shù):ID,從機(jī)地址
// Addr,寫(xiě)入的地址(0x0001~0xffff)
// And_Mask,屏蔽寫(xiě)與數(shù)據(jù)
// Or_Mask,屏蔽寫(xiě)或數(shù)據(jù)
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:屏蔽寫(xiě)寄存器操作。如果Or_Mask值為零,那么結(jié)果是當(dāng)前內(nèi)容和And_Mask的簡(jiǎn)單邏輯AND(與);
// 如果And_Mask值為零,結(jié)果等于Or_Mask值。0x16
//*********************************************************************************
uint8 OSMaskWriteReg(uint8 ID,
uint16 Addr,
uint16 And_Mask,
uint16 Or_Mask)
{
MASK_WRITE_REG Parameter;
Parameter.RefAddress = Addr;
Parameter.And_Mask = And_Mask;
Parameter.OR_Mask = Or_Mask;
return ModbusPoll(ID,0x16,&Parameter);
}
//*********************************************************************************
// 函數(shù)名稱:ReadWriteMultipleReg2PDU
// 輸入?yún)?shù):ID,從機(jī)地址
// WStartAddr,寫(xiě)入寄存器的地址(0x0001~0xffff)
// WQuantity,寫(xiě)入寄存器的數(shù)量(1~121)
// RStartAddr,讀出寄存器的地址(0x0001~0xffff)
// RQuantity,讀出寄存器的數(shù)量(1~125)
// DataPtr,寫(xiě)入寄存器的指針和讀出數(shù)據(jù)存放指針
// 輸出參數(shù):完成代碼:(見(jiàn)異常代碼表)
// 功能描述:寫(xiě)多寄存器操作。0x17
//*********************************************************************************
uint8 OSReadWriteMultipleReg(uint8 ID,
uint16 WStartAddr,
uint16 WQuantity,
uint16 RStartAddr,
uint16 RQuantity,
uint16 *DataPtr)
{
WRITE_PARAMET Parameter;
if(RQuantity>125)
return MB_PARAMETER_ERR;
if(WQuantity>121)
return MB_PARAMETER_ERR;
Parameter.RStartAddr = RStartAddr;
Parameter.RQuantity = RQuantity;
Parameter.WStartAddr = WStartAddr;
Parameter.WQuantity = WQuantity;
Parameter.DataPtr = DataPtr;
return ModbusPoll(ID,0x17,&Parameter);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -