cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Did you get called away in the middle of writing a post? Don't worry you can find your unfinished post later in the Drafts section of your profile page. X

Is there a way to convert decimal data coming from a Siemens PLC to ASCII in Kepware/Thingworx

SN_10670890
5-Regular Member

Is there a way to convert decimal data coming from a Siemens PLC to ASCII in Kepware/Thingworx

Hello, I am pretty new to Kepware and was hoping for some guidance.  Using advanced tags or Thingworx, is there a way to convert decimal data coming from a Siemens PLC to ASCII and feed it into Thingworx?  The result I need to get should read like +99.9

I was able to find a chart that shows decimal to ASCII, but I am not sure how I can make that conversion using Kepware/Thingworx.

3 REPLIES 3

Some additional information - "Descriptions of the ASCII, ASCII Hex, and Binary Data Protocols": https://www.ptc.com/en/support/article/CS333058

SN_10670890
5-Regular Member
(To:VladimirN)

Thank you for this information.  I appreciate your response.  Using the chart I have, I can see that a byte sending a 43 from the PLC should be a '+' and a 26 should be a '.'  I am just not sure how to get those numbers to translate to those characters for the Thing I have created in Composer.  Nothing obvious is jumping out to me using advanced tags.  But I am very new to this software, so maybe the solution is very obvious?  Maybe I would have to create something in Thingworx using coding?  I'm not sure if it's possible or what approach to use.  Thank you for your patience with me!

SN_10670890
5-Regular Member
(To:VladimirN)

Hello, 

I was able to get this to work by creating a service on a Thing in Thingworx and then putting the following code.  I have changed some of my tags and inputs slightly to make them more generic, but I hope it will still translate

 

var params = {
infoTableName: "asciiResults" /* STRING */
};

// result: INFOTABLE
var result = Resources["InfoTableFunctions"].CreateInfoTable(params);

 

//Add a new field to the InfoTable:

result.AddField({name: "ADDYOUROWN", baseType: "STRING"});
result.AddField({name: "ASCIICharacterTgmFromPLC_0000", baseType: "STRING"});

 

// Input decimal value from PLC

var TgmFromPLC_0000FromPLC = me.TgmFromPLC_0000;  // Replace this with your actual decimal value

// Convert decimal to ASCII character
var TgmFromPLC_0000asciiCharacter = String.fromCharCode(TgmFromPLC_0000FromPLC);

// Print or use the ASCII character as needed
logger.info("ASCIICharacterTgmFromPLC_0000: " + TgmFromPLC_0000asciiCharacter);

// Now 'asciiCharacter' contains the ASCII character corresponding to the decimal value from the PLC

 

// add data row
result.AddRow({ADDYOUROWN : me.ADDYOUROWN,
ASCIICharacterTgmFromPLC_0000 : TgmFromPLC_0000asciiCharacter,
});

Top Tags