[Ovmsdev] Coding help
Michael Balzer
dexter at expeedo.de
Tue Mar 30 05:20:33 HKT 2021
Shane,
Am 29.03.21 um 20:17 schrieb Shane @ Kilve Engineering:
> can any one tell me what the "v.e.c.login" is and is it need for
> something to work?
v.e.c.config yes = ECU/controller in configuration state
It's not used by the framework currently.
> also any one with any ideas how to deal with cell voltages in a string
> this long? took me blumim ages to find the bms when the tx and rx are
> 128 address apart!!
>
> 748[7c8]:e113 10 90 10 92 10 93 10 93 10 8e 10 92 10 8f 10 90 10 92 10
> 6c 10 93 10 93 10 8f 10 91 10 92 10 92 10 92 10 92 10 92 10 92 10 90
> 10 8e 10 90 10 92 10 8d 10 90 10 91 10 8f 10 8e 10 8f 10 91 10 90 10
> 90 10 91 10 8e 10 91 10 8e 10 91 10 90 10 8e 10 90 10 92 10 90 10 94
> 10 91 10 91 10 93 10 90 10 91 10 90 10 8f 10 93 10 92 10 8e 10 90 10
> 91 10 8b 10 92 10 90 10 91 10 8e 10 90 10 90 10 90 10 91 10 90 10 8f
> 10 90 10 90 10 8e 10 92 10 8e 10 91 10 89 10 91 10 91 10 91 10 8d 10
> 8f 10 8d 10 86 10 8a 10 8e 10 8f 10 91 10 90 10 92 10 94 10 88 10 8f
> 10 94 10 91 10 91 10 91 10 93 10 91 00 00 00 00 00 00 00 00 00 00 00
> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Simply loop over the cells contained. Have a look at the buffer macro
utils, e.g.:
https://github.com/openvehicles/Open-Vehicle-Monitoring-System-3/blob/master/vehicle/OVMS.V3/components/vehicle_hyundai_ioniqvfl/src/vehicle_hyundai_ioniqvfl.cpp#L44
Regards,
Michael
> Shane
>
>
>
>> On 5 Mar 2021, at 20:45, Michael Balzer <dexter at expeedo.de
>> <mailto:dexter at expeedo.de>> wrote:
>>
>> Shane,
>>
>> OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
>> OvmsVehicle::PollSetState(0);
>>
>> needs to be done in your vehicle init, i.e. the constructor after
>> RegisterCanBus().
>>
>> Please read the vehicle_obdii module source for a complete polling
>> example.
>>
>> Regards,
>> Michael
>>
>>
>> Am 05.03.21 um 17:59 schrieb Shane @ Kilve Engineering:
>>> Thanks Michael,
>>>
>>> Had a try and ended up with this bit added but return anything
>>>
>>> Where am I going wrong?
>>>
>>> Shane
>>>
>>> *******
>>>
>>> #include "ovms_log.h"
>>> *static**const**char**TAG= "v-edeliver3";
>>>
>>> #include "vehicle_edeliver3.h"
>>> #include "metrics_standard.h"
>>>
>>> *namespace* {
>>>
>>> *const*OvmsVehicle::poll_pid_tobdii_polls[] =
>>> {
>>> { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xf194, { 10, 10,
>>> 10, 10 }, 0, ISOTP_STD }, //VIN
>>> { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xe003, { 10, 10,
>>> 10, 10 }, 0, ISOTP_STD }, //SOH
>>> POLL_LIST_END
>>> };
>>> };
>>>
>>> OvmsVehicleEdeliver3::OvmsVehicleEdeliver3()
>>> {
>>> ESP_LOGI(TAG, "Start eDeliver3 vehicle module");
>>>
>>> RegisterCanBus(1,CAN_MODE_ACTIVE,CAN_SPEED_500KBPS);
>>> }
>>>
>>> OvmsVehicleEdeliver3::~OvmsVehicleEdeliver3()
>>> {
>>> ESP_LOGI(TAG, "Stop eDeliver3 vehicle module");
>>>
>>> memset(m_vin, 0, *sizeof*(m_vin));
>>> }
>>>
>>>
>>> //testing polls
>>>
>>> *void*OvmsVehicleEdeliver3::IncomingPollReply(
>>> canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t
>>> length, uint16_t mlremain)
>>> {
>>> string& rxbuf = med_obd_rxbuf;
>>>
>>> OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
>>> OvmsVehicle::PollSetState(0);
>>>
>>>
>>> // init / fill rx buffer:
>>> *if* (m_poll_ml_frame == 0) {
>>> rxbuf.clear();
>>> rxbuf.reserve(length + mlremain);
>>> }
>>> rxbuf.append((*char**)data, length);
>>> *if* (mlremain)
>>> *return*;
>>>
>>> // complete:
>>> *switch* (pid) {
>>> *case* 0xe003: {
>>> *unsigned* *int* soh_raw = ((*unsigned* *int*)rxbuf[0] << 8) |
>>> (*unsigned* *int*)rxbuf[1];
>>> *float* soh = soh_raw / 10;
>>> StdMetrics.ms_v_bat_soh->SetValue(soh);
>>> *break*;
>>> }
>>> }
>>> }
>>>
>>>
>>> // end testing polls
>>>
>>>
>>>
>>>> On 5 Mar 2021, at 12:37, Michael Balzer <dexter at expeedo.de
>>>> <mailto:dexter at expeedo.de>> wrote:
>>>>
>>>> Shane,
>>>>
>>>> on OBD polling basics:
>>>> http://lists.openvehicles.com/pipermail/ovmsdev/2020-December/014758.html
>>>>
>>>> Regards,
>>>> Michael
>>>>
>>>>
>>>> Am 04.03.21 um 19:45 schrieb Shane @ Kilve Engineering:
>>>>> Good evening Michael,
>>>>>
>>>>> Or any one that has the time to help,
>>>>>
>>>>> Ive now successfully retrieved as much info as I can without
>>>>> polling any info for the maxus, but I have have now found an ecu
>>>>> that responds to pid requests.
>>>>>
>>>>> For example if I use the obdii pid scanner I get the loads of data
>>>>> back and I’ve decoded some of it, just need a bit of guidance how
>>>>> to write the code to get the same info
>>>>>
>>>>> A part of a scan is as follows
>>>>>
>>>>> Scan complete (7e3 e000-e100)
>>>>> Scan started : 2021-03-04 18:32:36 GMT
>>>>> Last response: 2021-03-04 18:32:39 GMT
>>>>> 7e3[7eb]:e000 00
>>>>> 7e3[7eb]:e001 64
>>>>> 7e3[7eb]:e002 4b
>>>>> 7e3[7eb]:e003 26 bc
>>>>> 7e3[7eb]:e004 00 07
>>>>> 7e3[7eb]:e005 2f
>>>>> 7e3[7eb]:e006 2e
>>>>> 7e3[7eb]:e007 02 00
>>>>> 7e3[7eb]:e008 01 ff
>>>>> 7e3[7eb]:e009 02 00
>>>>> 7e3[7eb]:e010 02 00
>>>>>
>>>>> I know that e003 is SOH = 26bc = 9916 /100 = 99.16% SOH
>>>>> And e002 is a temp 4b = 75 / 10 = 7.5 degrees
>>>>>
>>>>> So if some one can help me with an example of how to correctly
>>>>> code this one I can work out the rest,
>>>>>
>>>>> Ive looked through various vehicles but everyone uses different
>>>>> methods and I can’t seem to get one to work for me.
>>>>>
>>>>> Any help much appreciated
>>>>>
>>>>> Shane
>>>>>
>>>>>> On 15 Feb 2021, at 08:05, Michael Balzer <dexter at expeedo.de
>>>>>> <mailto:dexter at expeedo.de>> wrote:
>>>>>>
>>>>>> Shane,
>>>>>>
>>>>>> I forgot to mention: if you're working on a new vehicle module,
>>>>>> you'll also need to start the bus somewhere in your
>>>>>> initialization code. Example:
>>>>>>
>>>>>> RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
>>>>>>
>>>>>> Regards,
>>>>>> Michael
>>>>>>
>>>>>>
>>>>>> Am 15.02.21 um 08:36 schrieb Michael Balzer:
>>>>>>> Shane,
>>>>>>>
>>>>>>> Am 14.02.21 um 16:42 schrieb Shane @ Kilve Engineering:
>>>>>>>> can any one help me with a bit of code to retrieve ve some data
>>>>>>>> from ecu can1/6f2 00 4c 00 00 01 97 bc 00 as i cant poll this
>>>>>>>> ecu it just broadcasts when its active, ive tried polling it
>>>>>>>> but does not respond, i need to choose one byte and allocate it
>>>>>>>> to a PID.
>>>>>>>
>>>>>>> I don't know what you mean by "allocating a byte to a PID", but
>>>>>>> if you want to process frames received directly, simply override
>>>>>>> IncomingFrameCan1() (or …2/3/4 depending on your bus).
>>>>>>>
>>>>>>> Reduced example:
>>>>>>>
>>>>>>> void OvmsVehicleXYZ::IncomingFrameCan1(CAN_frame_t *p_frame)
>>>>>>> {
>>>>>>> uint8_t *d = p_frame->data.u8;
>>>>>>>
>>>>>>> switch (p_frame->MsgID)
>>>>>>> {
>>>>>>> case 0x6f2:
>>>>>>> // for example, assuming the SOC is in byte 1:
>>>>>>> StdMetrics.ms_v_bat_soc->SetValue(d[1]);
>>>>>>> break;
>>>>>>> }
>>>>>>> }
>>>>>>>
>>>>>>> If you're outside a vehicle context, you can register your own
>>>>>>> CAN receiver by creating a queue and calling
>>>>>>> MyCan.RegisterListener(). See the vehicle module for an example.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Michael
>>>>>>>
>>>>>>
>>>>
>>>> --
>>>> Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
>>>> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
>>>> _______________________________________________
>>>> OvmsDev mailing list
>>>> OvmsDev at lists.openvehicles.com <mailto:OvmsDev at lists.openvehicles.com>
>>>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>>
>>>
>>> _______________________________________________
>>> OvmsDev mailing list
>>> OvmsDev at lists.openvehicles.com
>>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>>
>> --
>> Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
>> Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
>> _______________________________________________
>> OvmsDev mailing list
>> OvmsDev at lists.openvehicles.com <mailto:OvmsDev at lists.openvehicles.com>
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210329/dbfd4fd5/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210329/dbfd4fd5/attachment-0001.sig>
More information about the OvmsDev
mailing list