[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