Appendix D.CRBasic Programming

D.1Sample CR1000 Program

The following sample program reads one 6180 sensor string with three biaxial sensors. The string in this example communicates with the CR1000 through the control ports C1 and C2, which are setup as COM1. A RS-485 to TTL converter required.

Public ErrorCode

'Error Code sent back from ModBus Command

Public A_Axis_Degrees(3)

'A Axis Degree Output

Public B_Axis_Degrees(3)

'B Axis Degree Output

Public Celsius(3)

'Temperature Celsius

Public Count

'Counter to increment through sensors

'Define Data Tables

DataTable(Test,1,-1)

 

 

Sample (3,A_Axis_Degrees(),IEEE4)

'Store    Degree    Reading for A Axis

 

Sample (3,B_Axis_Degrees(),IEEE4)

'Store    Degree    Reading for B Axis

 

Sample (3,Celsius(),IEEE4)

'Store    Thermistor    C    Reading

EndTable

 

'Main Program

BeginProg

 

'Open COMport with TTL communications at 115200 baud rate

 

SerialOpen (Com1,115200,16,0,50)

 

 

'Read 3 sensors in MEMS String every 10 seconds

 

 

Scan (10,Sec,0,0)

 

 

 

'Loop through addresses of connected String

For Count = 1 To 3

 

 

 

 

 

 

 

'Reset temporary storage for both Degrees and Temp so not to retain

 

 

 

 

'previous reading

 

 

 

 

A_Axis_Degrees(Count) = 0

 

 

 

 

B_Axis_Degrees(Count) = 0

 

 

 

 

Celsius(Count) = 0

 

 

 

 

 

 

 

 

 

 

'Flush Serial between readings

 

 

 

 

SerialFlush (Com1)

 

 

 

 

 

'Write to register to begin reading MEMS String

 

 

 

 

NOTE: ModbusMaster won't send 0x118 unless "&H119" is 'entered

 

 

 

 

 

 

 

 

 

 

ModbusMaster (ErrorCode,Com1,115200,Count,6,1,&H119,1,1,50,0)

 

 

 

 

'Delay after write register

 

 

 

 

Delay (1,1,Sec)

 

 

 

 

 

 

 

 

 

 

'Use Modbus command to retrieve A Axis and B Axis Degree Readings

 

 

 

 

ModbusMaster (ErrorCode,Com1,115200,Count,3,A_Axis_Degrees(Count),&H101,1,1,50,0)

 

 

 

 

ModbusMaster (ErrorCode,Com1,115200,Count,3,B_Axis_Degrees(Count),&H103,1,1,50,0)

 

 

 

 

 

 

 

 

 

 

'Use Modbus command to retrieve Thermistor Celsius from string

 

 

 

 

ModbusMaster (ErrorCode,Com1,115200,Count,3,Celsius(Count),&H107,1,1,550,0)

 

 

 

 

 

 

 

 

 

 

'Delay before proceeding to next reading

 

 

 

 

Delay (1,1,Sec)

 

 

 

Next

 

 

'Call Table to store Data

 

 

CallTable Test

 

NextScan

EndProg

D.2Sample CR6 Program

The following sample program reads one 6180 sensor string with three addressable sensors. The string in this example communicates with the CR6 through the control ports C1 and C2, which are setup as ComC1. The CR6 has built in RS 485 capability, so no RS-485 to TTL converter is required.

Public ErrorCode

'Error Code sent back from ModBus Command

Public A_Axis_Degrees(3)

'A Axis Degree Output

Public B_Axis_Degrees(3)

'B Axis Degree Output

Public Celsius(3)

'Temperature Celsius

Public Count

'Counter to increment through sensors

 

'Define Data Tables

DataTable(Test,1,-1)

 

 

Sample (3,A_Axis_Degrees(),IEEE4)

'Store    Degree    Reading for A Axis

 

Sample (3,B_Axis_Degrees(),IEEE4)

'Store    Degree    Reading for B Axis

 

Sample (3,Celsius(),IEEE4)

'Store    Thermistor    C    Reading

EndTable

 

 

'Main Program

BeginProg

 

'Open COMport with RS-485 communications at 115200 baud rate

SerialOpen (ComC1,115200,16,0,50,3)

 

 

 

'Read 3 sensors in MEMS String every 10 seconds

Scan (10,Sec,0,0)

 

 

 

 

 

'Loop through addresses of connected String

For Count = 1 To 3

 

 

 

 

 

 

 

'Reset temporary storage for both Degrees and Temp so not to retain

 

 

 

 

'previous reading

 

 

 

 

A_Axis_Degrees(Count) = 0

 

 

 

 

B_Axis_Degrees(Count) = 0

 

 

 

 

Celsius(Count) = 0

 

 

 

 

 

 

 

 

 

 

'Flush Serial between readings

 

 

 

 

SerialFlush (ComC1)

 

 

 

 

 

'Write to register 0x118 to trigger string

 

 

 

 

'NOTE: ModbusMaster won't send 0x118 unless "&H119" is entered

 

 

 

 

 

 

 

 

 

 

ModbusMaster (ErrorCode,ComC1,115200,Count,6,1,&H119,1,1,10,0)

 

 

 

 

'Delay after write register

 

 

 

 

Delay (1,1,Sec)

 

 

 

 

 

 

 

 

 

 

'Use Modbus command to retrieve A Axis and B Axis Degree Readings

 

 

 

 

ModbusMaster (ErrorCode,ComC1,115200,Count,3,A_Axis_Degrees(Count),&H101,1,1,10,0)

 

 

 

 

ModbusMaster (ErrorCode,ComC1,115200,Count,3,B_Axis_Degrees(Count),&H103,1,1,10,0)

 

 

 

 

 

 

 

 

 

 

'Use Modbus command to retrieve Thermistor Celsius from string

 

 

 

 

ModbusMaster (ErrorCode,ComC1,115200,Count,3,Celsius(Count),&H107,1,1,10,0)

 

 

 

 

 

 

 

 

 

 

'Delay before proceeding to next reading

 

 

 

 

Delay (1,1,Sec)

 

 

 

Next

 

 

'Call Table to store Data

 

 

CallTable Test

 

NextScan

EndProg