[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