﻿<?xml version="1.0" encoding="utf-8"?>
<DeviceDescription xmlns="http://www.3s-software.com/schemas/DeviceDescription-1.0.xsd" xmlns:ts="http://www.3s-software.com/schemas/TargetSettings-0.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Types namespace="localTypes">
	<EnumType basetype="std:DWORD" name="BaudrateType">
      <Enum identifier="B4800">
        <Value>4800</Value>
        <VisibleName name="local:B4800">4800</VisibleName>
      </Enum>
	  <Enum identifier="B9600">
        <Value>9600</Value>
        <VisibleName name="local:B9600">9600</VisibleName>
      </Enum>
	  <Enum identifier="B19200">
        <Value>19200</Value>
        <VisibleName name="local:B19200">19200</VisibleName>
      </Enum>
	  <Enum identifier="B57600">
        <Value>57600</Value>
        <VisibleName name="local:B57600">57600</VisibleName>
      </Enum>
	  <Enum identifier="B115200">
        <Value>115200</Value>
        <VisibleName name="local:B115200">115200</VisibleName>
      </Enum>
    </EnumType>
	<EnumType basetype="std:STRING" name="ParityType">
      <Enum identifier="EVEN">
        <Value>'E'</Value>
        <VisibleName name="local:EVEN">EVEN</VisibleName>
      </Enum>
      <Enum identifier="ODD">
        <Value>'O'</Value>
        <VisibleName name="local:ODD">ODD</VisibleName>
      </Enum>
      <Enum identifier="NONE">
        <Value>'N'</Value>
        <VisibleName name="local:NONE">NONE</VisibleName>
      </Enum>
    </EnumType>
	<EnumType basetype="std:BYTE" name="DatabitType">
      <Enum identifier="D7">
        <Value>7</Value>
        <VisibleName name="local:D7">7</VisibleName>
      </Enum>
      <Enum identifier="D8">
        <Value>8</Value>
        <VisibleName name="local:D7">8</VisibleName>
      </Enum>
    </EnumType> 
	<EnumType basetype="std:BYTE" name="StopbitType">
      <Enum identifier="S1">
        <Value>1</Value>
        <VisibleName name="local:S1">1</VisibleName>
      </Enum>
      <Enum identifier="S2">
        <Value>2</Value>
        <VisibleName name="local:S2">2</VisibleName>
      </Enum>
    </EnumType>
	<EnumType basetype="std:BYTE" name="ComIDType">
      <Enum identifier="COM1">
        <Value>1</Value>
        <VisibleName name="local:COM1">1</VisibleName>
      </Enum>
      <Enum identifier="COM2">
        <Value>2</Value>
        <VisibleName name="local:COM2">2</VisibleName>
      </Enum>
    </EnumType>
	<EnumType basetype="std:BYTE" name="FunctionCodeType">
	<!--
      <Enum identifier="Func01">
        <Value>1</Value>
        <VisibleName name="local:Func01">Read Coils(1)</VisibleName>
      </Enum>
	  <Enum identifier="Func02">
        <Value>2</Value>
        <VisibleName name="local:Func02">Read Discrete Inputs(2)</VisibleName>
      </Enum>
	  <Enum identifier="Func03">
        <Value>3</Value>
        <VisibleName name="local:Func03">Read Holding Registers(3)</VisibleName>
      </Enum>
	  <Enum identifier="Func04">
        <Value>4</Value>
        <VisibleName name="local:Func04">Read Input Registers(4)</VisibleName>
      </Enum>
	  -->
	  <Enum identifier="Func05">
        <Value>5</Value>
        <VisibleName name="local:Func05">Write Single Coil(5)</VisibleName>
      </Enum>
	  <Enum identifier="Func06">
        <Value>6</Value>
        <VisibleName name="local:Func06">Write Single Register(6)</VisibleName>
      </Enum>
	  <Enum identifier="Func15">
        <Value>15</Value>
        <VisibleName name="local:Func15">Write Multiple Coils(15)</VisibleName>
      </Enum>
	  <Enum identifier="Func16">
        <Value>16</Value>
        <VisibleName name="local:Func16">Write Multiple Registers(16)</VisibleName>
      </Enum>
    </EnumType>
  </Types> 

  <Strings namespace="local">
    <Language lang="en">
      <String identifier="ModelName">ModbusRtuMaster</String>  
      <String identifier="DeviceDescription"></String>
      <String identifier="VendorName">HCFA</String>
      <String identifier="typedescription">HCFA modbus RTU master</String>
    </Language>
  </Strings>
  
  <Device hideInCatalogue="false">  
    <DeviceIdentification>
      <Type>32803</Type>
      <Id>16c7 0001</Id>  
      <Version>1.0.0.1</Version>   
    </DeviceIdentification>
    <DeviceInfo>
      <Name name="local:ModelName">ModbusRtuMaster</Name>  
      <Description name="local:DeviceDescription">HCFA modbus RTU master</Description>
      <Vendor name="local:VendorName">HCFA</Vendor>
      <OrderNumber>-</OrderNumber>  	 
    </DeviceInfo>
	
    <!--Child Connector Description,child connectors should always be defined as slot and the slot count must be 1--> 	  
    <Connector connectorId="1" moduleType="32803" interface="Common.PCI" role="child" explicit="false" hostpath="-1">
      <InterfaceName name="local:PCI">PCI-Bus</InterfaceName>
      <Slot count="1" allowEmpty="false"></Slot>  
    </Connector> 
	 
    <!-- modbus RTU slave added for modbus RTU master --> 		 
    <Connector connectorId="2" moduleType="32820" interface="Local.MBRTUMaster" role="parent" explicit="false" hostpath="1">
	  <InterfaceName name="local:MBRTUMaster">ModbusRtuMaster</InterfaceName>
	  <Var max="50" />
	  <HostParameterSet> 
	    <!--Modbus serial port config-->
	    <ParameterSection>
		  <Name name="local:SerialConfig">SerialConfig</Name>
		  <Description name="local:SerialConfig">Modbus master serial port config</Description>
		  
		  <Parameter ParameterId="41000" type="localTypes:ComIDType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>1</Default>
            <Name name="local:Parameter.COMID">COMID</Name>
            <Description name="local:Parameter.COMID">Number of communication com port</Description>
          </Parameter>
		  
          <Parameter ParameterId="41001" type="localTypes:BaudrateType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>9600</Default>
            <Name name="local:Parameter.Baudrate">Baudrate</Name>
            <Description name="local:Parameter.Baudrate">Baudrate of the serial port</Description>
          </Parameter>
		  
		  <Parameter ParameterId="41002" type="localTypes:DatabitType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>8</Default>
            <Name name="local:Parameter.Databit">Databit</Name>
            <Description name="local:Parameter.Databit">Databit of the serial port</Description>
          </Parameter>
		  
		  <Parameter ParameterId="41003" type="localTypes:StopbitType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>1</Default>
            <Name name="local:Parameter.Stopbit">Stopbit</Name>
            <Description name="local:Parameter.Stopbit">Stopbit of the serial port</Description>
          </Parameter>
		  
		  <Parameter ParameterId="41004" type="localTypes:ParityType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>'E'</Default>
            <Name name="local:Parameter.Parity">Parity</Name>
            <Description name="local:Parameter.Parity">Parity for messages on the serial port.</Description>
          </Parameter>
		  
		  <Parameter ParameterId="41005" type="std:WORD">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>0</Default>
            <Name name="local:Parameter.FrameSpace">FrameSpace</Name>
			<Unit name="local:Parameter.FrameSpace">ms</Unit>
            <Description name="local:Parameter.FrameSpace">time interval between frame transmissions</Description>
          </Parameter>
		  
	    </ParameterSection> 
		
		<!--Modbus RTU Master broadcast message-->
		<ParameterSection>
		  <Name name="local:broadcast">broadcast</Name>
		  <Description name="local:broadcast">Modbus RTU Master broadcast message.reserved function</Description>
		  <Parameter ParameterId="41006" type="localTypes:FunctionCodeType">
            <Attributes offlineaccess="readwrite" onlineaccess="read" download="true" functional="false" />
            <Default>5</Default>
            <Name name="local:Parameter.FunctionCode">FunctionCode</Name>
            <Description name="local:Parameter.FunctionCode">Function code of broadcast message</Description>
          </Parameter>
		</ParameterSection>
		
	  </HostParameterSet> 
	  <DriverInfo needsBusCycle="false">
	    <RequiredLib libname="HCFAModbusLib" placeholderlib="HCFAModbusLib" vendor="HCFA" version="1.0.0.0">
	      <FBInstance basename="$(DeviceName)" fbname="MODBUSRTU_MasterDiag"> 
			<Initialize methodName="Initialize"/> 
		    <!--methodname为空时则调用功能块实例本身-->
		    <CyclicCall methodname="" task="#buscycletask" whentocall="beforeWriteOutputs" /> 
		  </FBInstance>
	    </RequiredLib>
	  </DriverInfo>
	</Connector> 	
	
	
  </Device>
 
</DeviceDescription>
