On 3 Apr 2021, at 12:02, Michael Balzer <dexter@expeedo.de> wrote:OVMS# obd can1 request device -t1000 7e4 7ec 2102_______________________________________________
7e4[7ec] 2102: Response:
ff ff ff ff c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c5 | ................
c5 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 | ................
c4 c4 c4 c4 | ....
OVMS# obd can1 request device -t1000 7e4 7ec 2103
7e4[7ec] 2103: Response:
ff ff ff ff c4 c4 c4 c4 c4 c4 c4 c5 c5 c4 c4 c4 | ................
c4 c4 c4 c4 c4 c5 c5 c5 c4 c5 c5 c5 c4 c5 c4 c4 | ................
c5 c4 c4 c4 | ....
OVMS# obd can1 request device -t1000 7e4 7ec 2104
7e4[7ec] 2104: Response:
ff ff ff ff c4 c4 c5 c4 c4 c4 c4 c4 c4 c4 c4 c4 | ................
c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 c4 | ................
c4 c5 c4 c4 | ....
Your voltages obviously are 16 bit values, so you'll need to use RXB_UINT16() and multiply your loop index by 2.
Regards,
Michael
Am 03.04.21 um 12:04 schrieb Shane @ Kilve Engineering:
Hi has anyone got a sample of the data for the cell voltages on the ioniq vfl just so I can see how the macro is handling it? Or is it played out the same as below?
Regards
Shane
On 29 Mar 2021, at 22:20, Michael Balzer <dexter@expeedo.de> wrote:
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?
It's not used by the framework currently.
v.e.c.config yes = ECU/controller in configuration state
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@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_t obdii_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 }, //SOHPOLL_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@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 GMTLast response: 2021-03-04 18:32:39 GMT7e3[7eb]:e000 007e3[7eb]:e001 647e3[7eb]:e002 4b7e3[7eb]:e003 26 bc7e3[7eb]:e004 00 077e3[7eb]:e005 2f7e3[7eb]:e006 2e7e3[7eb]:e007 02 007e3[7eb]:e008 01 ff7e3[7eb]:e009 02 007e3[7eb]:e010 02 00
I know that e003 is SOH = 26bc = 9916 /100 = 99.16% SOHAnd 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@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@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev
_______________________________________________ OvmsDev mailing list OvmsDev@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@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev
_______________________________________________ OvmsDev mailing list OvmsDev@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@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev
_______________________________________________ OvmsDev mailing list OvmsDev@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@lists.openvehicles.com
http://lists.openvehicles.com/mailman/listinfo/ovmsdev