[ag-automation] configuration concept for fieldbus stack

Robert Schwebel r.schwebel at pengutronix.de
Tue Jul 17 09:47:41 CEST 2007


Moin,

Some questions:

>    <FddiDevice>
>       <Id>1</Id>
>       <Name>ModbusSlave1</Name>
>       <FddiParam Id="1" Name="ParamAddress" Type="int">14</FddiParam>
>       <FddiParam Id="2" Name="ParamValue" Type="int">0</FddiParam>
>       <FddiParam Id="11" Name="ParamAddress" Type="int">22</FddiParam>
>       <FddiParam Id="12" Name="ParamValue" Type="int">17</FddiParam>

Is it somehow possible to address digital I/Os via register access? As
far as I understand the modbus spec there is a modicon extension, but
the standard itself says to access the digi I/Os via read/write_single_coil.

>       <FddiParam Id="1001" Name="TpuAdress" Type="int">64</FddiParam>
>       <FddiParam Id="1002" Name="TpuSize" Type="int">8</FddiParam>
>       <FddiParam Id="1003" Name="TpuGranularity" Type="int">1</FddiParam>
>       <FddiParam Id="1004" Name="TpuUpdateRate" Type="int">100</FddiParam>
>       <FddiParam Id="1004" Name="TpuDirectionWrite" Type="bool">false</FddiParam>

What is the "TpuGranulatiry"?

How would a standard bus startup look like? At the moment it's like this
in my example code (error handling is missing for better overview):

----------8<----------8<----------8<----------8<----------8<----------

fddi_id_init(&modbus0_id, "modbus", 0, NULL);

fddi_iface_attr_init(&modbus0_attr);
fddi_iface_attr_setclass(&modbus0_attr, "libmodbus");
fddi_iface_attr_setid(&modbus0_attr, "demosystem.controller", modbus0_id);

fddi_iface_init(&modbus0_iface, &modbus0_attr);

fddi_iface_configure(&modbus0_iface, "test_fddi_libmodbus1.xml", NULL);

/* attach callbacks to TPUs */
fddi_iface_gettpulist(&modbus0_iface, &tpu);
while (tpu) {
	fddi_tpu_setcallback(tpu, tpu_callback, NULL);
	fddi_tpu_getnext(&tpu);
}

/* everything is configured, now we can start */
fddi_iface_cmd(&modbus0_iface, CMD_START);

while (!endme) {

	/* main control loop */

}

fddi_iface_destroy(&modbus0_iface);

----------8<----------8<----------8<----------8<----------8<----------

Is it the intended way to issue a CMD_START here? Do we have to check if the
bus driver goes into "operational" state here? Blocking/nonblocking? Are other
steps necessary?

Regards,
Robert
-- 
 Dipl.-Ing. Robert Schwebel | http://www.pengutronix.de
 Pengutronix - Linux Solutions for Science and Industry
   Handelsregister:  Amtsgericht Hildesheim, HRA 2686
     Hannoversche Str. 2, 31134 Hildesheim, Germany
   Phone: +49-5121-206917-0 |  Fax: +49-5121-206917-9



More information about the ag-automation mailing list