PLC Communication Examples

These examples are provided to demonstrate certain functions using FACTS BASIC Modules. If you download and use any of these example programs, It is your responsibility to test and modify the program to meet your application requirements.

 

  • (1) Read Setpoint data from PLC V-Mem SP High Integer = V1401 (0-9999) SP High Fractional = V1400 (0-999) SP Low Integer = V1403 (0-9999) SP Low Fractional = V1402 (0-999) NOTE: Setpoint Data Must be in BCD format

(2) Read Serial Data from Ohaus Lab Scale Connected to Port 2 Scale Data Format is:

1 2-7 8 9-11 12 13 14

+/- ##.### sp units ? CR LF

Scale is configured to send data once per second

 

(3) Compare Scale Data with Setpoint Data

If >High Set V1410=1

If >Low and <High Set V1410=2

If <Low Set V1410=3

 

(4) Repeat from Step 2

 rdscl_f2.abm (F2-CP128)

 

  • Read 24 Analog Input Values starting at V1400 and 8 Analog Output Values starting at V1430 every 10 minutes and log them into BASIC Memory.

There will be a dedicated portion of memory for each 10 minute period containing an Hour/Minute Label and all Analog Input/Output values for that ten minute period.

 abmlog.abm (F4-CP128-1)

 

  • Read IEEE Floating Point value from a double word in a 450 CPU, assign to a numeric variable in the BASIC module, and display.

ieeeread.abm (F4-CP128-1)

ieeerdf2.abm (F2-CP128)

 

  • Convert a numeric variable in the BASIC module to the IEEE Floating Point bit pattern and write to a double word in the CPU.

ieeewrit.abm (F4-CP128-1)

ieeewrf2.abm (F2-CP128)

 

  • Read Slot Number that the CoPro is Installed In

F0-CP128 CoProcessor

10 slot=PICK(DPORT~(022H),L)

Returns 1 to 4

 

F2-CP128 CoProcessor

10 slot=shared~(024H,L)

Returns 0 to 8

 

F4-CP128 CoProcessors

10 slot=DPORT~(0AH,L)

Returns 0 to 7

 

  • Write a double BCD word with a 405 CoPro

10 X=99999999

20 XHI=INT(X/10000)

25 XLO=X-XHI

30 S405_VB(2001)=XHI : S405_VB(2000)=XLO

 _or _

10 X=99999999

20 XHI=INT(X/10000)

25 XLO=X-XHI

30 DPORT(0,B)=XLO : DPORT(2,B)=XHI

35 BMOVE W,VH(2000),K(4)

 

  • Read a double BCD word with a 405 CoPro

10 BMOVE R,VH(2000),K(4)

20 XHI=DPORT(0,B)

30 XLO=DPORT(2,B)

40 X=(XHI*10000)+XLO

 _or_

10 XLO=S405_VB(2000) : XHI=S405_VB(2001)

20 X=(XHI*10000)+XLO

 

  • Write a double BCD word with a 205 CoPro

10 X=99999999

20 XHI=INT(X/10000)

25 XLO=X-(XHI*10000)

30 S205_VB(2001)=XHI : S205_VB(2000)=XLO

 _or _

 10 X=99999999

20 XHI=INT(X/10000)

25 XLO=X-(XHI*10000)

30 SHARED(128,B)=XLO : SHARED(130,B)=XHI

35 BMOVE W,VH(2000),K(4)

 

  • Read a double BCD word with a 205 CoPro

 10 BMOVE R,VH(2000),K(4)

20 XHI=SHARED(0,B)

30 XLO=SHARED(2,B)

40 X=(XHI*10000)+XLO

_or_

10 XLO=S205_VB(2000) : XHI=S205_VB(2001)

20 X=(XHI*10000)+XLO

 

  • Wait for an input with a 405 CoPro

10 DO : UNTIL S405_X(0)

 

  • Print status of an input with a 405 CoPro

10 IF S405_X(0) THEN PRINT1 “ON” ELSE PRINT1 “OFF”

 

  • Wait for an input with a 205 CoPro

10 DO : UNTIL S205_X(0)

 

  • Print status of an input with a 205 CoPro

10 IF S205_X(0) THEN PRINT1 “ON” ELSE PRINT1 “OFF”

 

  • Write a string to a block of V-memory in the PLC

F0-CP128 Example

1 REM Read a string and write the ASCII codes for the string

2 REM into a contiguous block of V-memory in a 05 or 06 CPU

10 STRING 2551,254 : REM Allocate String Space

20 $(0)=”This is a Test”

30 FOR X=1 TO LEN($(0)) STEP 2

32 DPORT((X-1),H)=ASC($(0),X)

34 DPORT((X-1),L)=ASC($(0),X+1)

36 NEXT X

40 BMOVE W,VH(2000),K(LEN($(0)))

 

F2-CP128 Example

1 REM Read a string and write the ASCII codes for the string into a

2 REM contiguous block of V-memory in a 240, 250, 250-1, or 260 CPU

10 STRING 2551,254 : REM Allocate String Space

20 $(0)=”This is a Test”

30 FOR X=1 TO LEN($(0)) STEP 2

32 SHARED(128+(X-1),H)=ASC($(0),X)

34 SHARED(128+(X-1),L)=ASC($(0),X+1)

36 NEXT X

40 BMOVE W,VH(2000),K(LEN($(0)))

 

F4-CP128-1 Example

1 REM Read a string and write the ASCII codes for the string

2 REM into a contiguous block of V-memory in a 430, 440, or 450 CPU

10 STRING 2551,254 : REM Allocate String Space

20 $(0)=”This is a Test”

30 FOR X=1 TO LEN($(0)) STEP 2

32 DPORT((X-1),H)=ASC($(0),X)

34 DPORT((X-1),L)=ASC($(0),X+1)

36 NEXT X

40 BMOVE W,VH(2000),K(LEN($(0)))

 

  • Read a Block of V-memory from a PLC that contains ASCII codes for a string

 F0-CP128 and F4-CP128-1 Example

10 STRING 2551,254 : REM Allocate String Space

20 BMOVE R,VH(2100),K(16) : REM Read 16 bytes starting @ V2100

30 FOR X=0 TO 15 STEP 2 : REM Step thru DPORT

32 ASC($(0),X+1)=DPORT(X,H) : REM High Byte

34 ASC($(0),X+2)=DPORT(X,L) : REM Low Byte

36 NEXT X

40 PRINT1 $(0)

 

F2-CP128 Example

10 STRING 2551,254 : REM Allocate String Space

20 BMOVE R,VH(2100),K(16) : REM Read 16 bytes starting @ V2100

30 FOR X=0 TO 15 STEP 2 : REM Step thru SHARED

32 ASC($(0),X+1)=SHARED(X,H) : REM High Byte

34 ASC($(0),X+2)=SHARED(X,L) : REM Low Byte

36 NEXT X

40 PRINT1 $(0)

 

 

×