Escolar Documentos
Profissional Documentos
Cultura Documentos
0
Serial e Ethernet
Guia do usurio Verso 1.3
ndice
1
2
3
4
5
Introduo................................................................................................................................................... 5
HardKey ..................................................................................................................................................... 6
Hardkey servidor ........................................................................................................................................ 7
Escrevendo programas................................................................................................................................ 8
Comunicao via porta serial (COM) do computador................................................................................ 8
5.1
Comunicao via ethernet ................................................................................................................ 10
5.1.1
Pinagem dos canais seriais........................................................................................................ 11
5.1.2
Sinais de controle CTS / RTS................................................................................................... 11
5.1.3
Loop de corrente Ativo / Passivo.............................................................................................. 11
5.1.4
Pinagem das entradas e sadas digitais ..................................................................................... 12
6 Declaraes para PCLink6.Dll ................................................................................................................. 13
6.1
Display_Erro .................................................................................................................................... 13
6.2
Seta_Ip.............................................................................................................................................. 13
6.3
W9091 .............................................................................................................................................. 13
6.4
W9091Serial ..................................................................................................................................... 14
6.5
Consideraes sobre 9091 contador ................................................................................................. 14
6.6
W9091C............................................................................................................................................ 15
6.7
W9091SerialC .................................................................................................................................. 16
6.8
WOhaus ............................................................................................................................................ 16
6.9
WOhausSerial................................................................................................................................... 16
6.10 Indicador Challenger MSI3360 ........................................................................................................ 17
6.11 WMSI3360 ....................................................................................................................................... 18
6.12 WMSI3360Serial.............................................................................................................................. 18
6.13 Programando MSI 6260.................................................................................................................... 19
6.14 WMSI6260 ....................................................................................................................................... 19
6.15 WMSI6260Serial.............................................................................................................................. 19
6.16 ProgSerial ......................................................................................................................................... 20
6.17 Select_Canal ..................................................................................................................................... 20
6.18 Close_Canal...................................................................................................................................... 20
6.19 Deleta_Canal .................................................................................................................................... 21
6.20 Update_Canal ................................................................................................................................... 21
6.21 Update_NoMotion ............................................................................................................................ 22
6.22 Gross_canal ...................................................................................................................................... 22
6.23 Net_canal.......................................................................................................................................... 23
6.24 Tare_canal ........................................................................................................................................ 23
6.25 Estado_Canal.................................................................................................................................... 23
6.26 Estado_EmMovimento ..................................................................................................................... 24
6.27 ClrBufRx .......................................................................................................................................... 24
6.28 ClrBufTx .......................................................................................................................................... 24
6.29 CloseLicense .................................................................................................................................... 25
6.30 Consideraes sobre Entradas/Sadas digitais da FIREX................................................................. 25
6.31 DIO_InPort....................................................................................................................................... 25
6.32 DIO_InPortStr .................................................................................................................................. 26
6.33 DIO_InBit......................................................................................................................................... 26
6.34 DIO_InBitStr .................................................................................................................................... 26
6.35 DIO_OutPort .................................................................................................................................... 27
6.36 DIO_OutPortStr................................................................................................................................ 27
6.37 DIO_OutBit ...................................................................................................................................... 27
6.38 DIO_OutBitStr ................................................................................................................................. 28
7 Exemplos de programao ....................................................................................................................... 29
7.1
Delphi 6 ............................................................................................................................................ 29
7.1.1
Cdigo fonte Delphi6 ............................................................................................................... 30
7.2
Exemplo VB 6 .................................................................................................................................. 44
7.2.1
Cdigo fonte VB 6.................................................................................................................... 44
PCLink 6.0
Toledo do Brasil - Indstria de balanas
1 Introduo
O PCLink 6.0 vem substituir as verses anteriores do produto, porm, introduzindo a
comunicao via ethernet para leitura de balanas seriais (RS232 ou Loop de corrente)
atravs de uma placa FIREX.
A FIREX se aplica quando a aplicao do cliente requer ambiente de monitoramento
remoto, (sistemas de segurana, automao de fbrica, SCADA, transporte de dados, etc.).
Ou seja, de um micro qualquer da fbrica, ou de todos os micros, o cliente precisa:
-
As vantagens da FIREX so :
-
Limitaes da FIREX :
- S possvel uma conexo, por canal serial da FIREX, ou seja, dois computadores
no conseguem ler a mesma balana ao mesmo tempo. Para isso, um computador
deve fazer sua leitura e fechar a conexo, permitindo que outro computador na rede
possa efetuar uma leitura de balana.
- permitido at 7(sete) conexes para fazer a leitura de entradas, acionamento das
sadas e programao dos canais seriais.
- O trfego na rede ethernet est diretamente ligado ao desempenho da comunicao.
Para casos crticos, vale fazer a segmentao da rede para deixar a leitura das
balanas independente de qualquer outra informao.
Esta nova verso da PCLink 6, permite a leitura das balanas tanto serialmente quanto via
ethernet, atravs de funes que so disponibilizadas em uma DLL chamada
PCLink6.DLL.
Observao importante :
Esta nova verso incompatvel com as verses anteriores da PCLink.
PCLink 6.0
Toledo do Brasil - Indstria de balanas
2 HardKey
Para utilizar a DLL PCLink6 ser necessrio utilizar uma Hardkey. A mesma hardkey pode
ser utilizada local (uma por computador) ou em rede. A escolha se deve conforme a rea e
necessidade de cada cliente. Para citar alguns exemplos, podemos ter as seguintes
configuraes :
Leitura de balanas, utilizando porta serial, tendo uma hardkey local por
computador. Modo ideal de trabalho, para no depender de sua rede ethernet.
Bal 1
Bal 2
Bal 3
Bal n
Bal 1
Computador 1
com hardkey e
multiserial
Bal 2
Bal 3
Bal n
Computador 2
com hardkey e
multiserial
Leitura de balanas, utilizando porta serial, tendo apenas uma hardkey em algum
computador da rede ethernet.
Bal 1
Bal 2
Bal 3
Computador 1
com multiserial
Bal n
Bal 1
Rede Ethernet
Bal 2
Bal 3
Bal n
Computador 2
com multiserial
Computador 3
PCLink 6.0
Toledo do Brasil - Indstria de balanas
3 Hardkey servidor
Para ser utilizada em rede, deve ser escolhido um computador onde ser instalada a hardkey
fornecida pela Toledo e coloca-la na porta paralela. Executando o programa SetupPCLink6
do CDRom de instalao ir instalar alguns programas no menu Iniciar\PCLink6 :
FirexTool
Programa para configurao das placas Firex. A placa vem com IP 10.0.0.1 de
fbrica.
SerialIP
Programa teste para leitura de balanas em porta serial ou de canais de Firex,
contm inclusive os fontes em Delphi.
SetupHardkey
Programa instalador da hardkey em rede. Este programa verifica o sistema
operacional do computador e disponibiliza os tipos de instalao que podem ser
feitas, servio para NT/Windows 2000(SrvProteq) ou programa gerenciador para
qualquer sistema operacional(GerHardkey). Este programa tambm deve ser
utilizado para desinstalar a hardkey, quando necessitar trocar a hardkey para outro
computador. Caso esta instalao no seja realizada, a hardkey ser apenas para o
computador onde est conectada. Nos computadores que precisarem acessar a
hardkey remotamente, basta executar este programa, e seguir os passos para
instalao remota, onde a principal exigncia o nome do computador onde a
hardkey est instalada.
SrvProteq
Servio NT/Win 2000 para gerenciar o controle de licenas da hardkey. Este
servio instalado automaticamente quando se utiliza o programa SetupHardkey.
Caso necessite instal-lo manualmente , basta entrar na tela de prompt , ir no
diretrio onde est o programa SrvProteq e digitar SrvProteq /install se precisar
desinstalar digite SrvProteq /Uninstall . Para iniciar e parar o servio deve ser
feito manualmente.
GerHardkey
Programa para qualquer sistema operacional para gerenciar o controle de licenas da
hardkey. Este programa instalado automaticamente quando se utiliza o programa
SetupHardkey.
ToledoMonitor
Este programa s dever funcionar nos computadores onde est instalado a hardkey
com o programa SetupHardkey. Este apenas um programa de monitorao
relacionado a hardkey. Pode ser utilizado para determinar se o servio/programa
gerenciador da hardkey est funcionando, se o programa executvel desenvolvido
pelo cliente est conseguindo uma conexo com a hardkey, e exibe algumas
mensagens de erro , se acontecerem.
PCLink 6.0
Toledo do Brasil - Indstria de balanas
4 Escrevendo programas
Daremos a seguir algumas explicaes sobre como efetuar uma leitura via um canal serial
ou via ethernet, j mostrando algumas funes que pertencem a DLL. Como exemplo,
utilizaremos o indicador Toledo 9091. Para exemplificar para qualquer tipo de linguagem
de programao, colocarei uma exclamao(!) como comentrio e tratarei como uma
linguagem genrica. Utilizarei algumas variveis do tipo String para obtermos pesos de
tara, bruto, liquido e estado da balana. Essas variveis so terminadas com nulo.
B3 := W9091Serial(3) ;
!
!
!
!
PCLink 6.0
Toledo do Brasil - Indstria de balanas
! SE SELECT_CANAL(B3) DIFERENTE DE 0
if Select_Canal(B3) <> 0 then
! Faremos uma leitura de balana com ou sem
! movimento sobre a balana
! poderia ser utilizado a funo update_nomotion
! se fosse necessrio ler um peso estvel.
ret := Update_Canal(B3);
! Aps a leitura, testamos o retorno
if ret = 0 then
! obtemos o peso bruto
bruto := Gross_canal(B3);
! obtemos o peso de tara
tara := Tare_canal(B3);
! obtemos o peso liquido
liq
:= Net_canal(B3);
! obtemos o estado da leitura. Estvel ou instvel
smov := Estado_EmMovimento(B3);
! obtemos outros estados da balana
sEst := Estado_Canal(B3);
end if;
end if;
Como pde se ver, a leitura relativamente simples. Verifique a descrio detalhada de
todas as funes utilizadas no exemplo. Na instalao do programa se encontra um diretrio
onde tem um programa exemplo em Delphi.
10
5.1
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Como foi descrito anteriormente, leremos uma balana atravs da placa FIREX. A placa
FIREX possui 4(quatro) canais de comunicao (A,B,C,D) e 8(oito)entradas digitais(0 a 7)
e 8(oito) sadas digitais(0 a 7). Verifique a fig.1 :
PCLink 6.0
Toledo do Brasil - Indstria de balanas
11
Pinos 20mA
RS232
TxIN
TxD
TxOUT
RTS
RxIN
RxD
RxOUT
CTS
Gnd
12
PCLink 6.0
Toledo do Brasil - Indstria de balanas
E/S 0 a 3 E/S 4 a 7
GND
GND
+10V
+10V
IN0
IN4
IN1
IN5
IN2
IN6
IN3
IN7
In
In
OUT0
OUT4
OUT1
OUT5
10
OUT2
OUT6
11
OUT3
OUT7
12
OUT+
OUT+
OUT+
+
-
Ri
3K3
IN0
+
-
OUT0
OUTn
Sadas
Caractersticas:
Sadas
= 24VDC, 100mA;
Entradas = 7mA @ 24VDC.
IN
Entradas
PCLink 6.0
Toledo do Brasil - Indstria de balanas
13
Display_Erro
Utilizada para exibir mensagens que a DLL carrega quando ocorre algum erro na operao
que o usurio quer executar.
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Retorno :
Retorna um pointer de caracter, com uma mensagem para melhor
identificao do problema.
Sintaxe em C :
char * Display_Erro( int IP_SETADO);
Sintaxe em Delphi :
function Display_Erro(IP_SETADO : Integer) : PChar; stdcall;
6.2
Seta_Ip
Utilizada para informar DLL o IP da placa FIREX que ser utilizada para comunicao.
Esta funo retorna um valor inteiro que ser muito utilizado nas demais operaes da
DLL.
Parmetros :
IPStr IP para comunicao com mximo de 15 bytes, no formato
XXX.XXX.XXX.XXX (o valor default da placa 10.0.0.1).
Retorno :
Retorna um valor inteiro de 0 a n, para identificar cada IP utilizado na
comunicao.
Sintaxe em C :
int Display_Erro( char * IPStr);
Sintaxe em Delphi :
function Seta_Ip(IPStr : PChar): Integer; stdcall;
6.3
W9091
Utilizada para informar DLL que um determinado canal de uma placa FIREX, ser
alocado para leitura de um indicador 9091 com protocolo P03, checksum habilitado, 4800
baud, 7 bit, paridade par e 1 stop bit.
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Canal Canal de comunicao da placa FIREX (A,B,C ou D).
14
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int W9091( int IP_SETADO, char * Canal);
Sintaxe em Delphi :
function W9091(IP_SETADO : Integer; Canal : PChar): Integer; stdcall;
6.4
W9091Serial
Utilizada para informar DLL que uma determinada porta serial, ser alocada para leitura
de um indicador 9091 com protocolo P03, checksum habilitado, 4800 baud, 7 bit, paridade
par e 1 stop bit.
Parmetros :
COM Valor inteiro correspondente a uma porta serial para comunicao.
COM1 = 1, COM2 = 2 e assim por diante.
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int W9091Serial( int COM);
Sintaxe em Delphi :
function W9091Serial(COM : Integer): Integer; stdcall;
6.5
O 9091 contador, envia pacotes de dados sobre demanda, ou seja, quando a tecla print for
pressionada e a balana completamente estabilizada. Para fazer essa comunicao deve
haver um sincronismo entre o momento que ser enviado os dados e o programa que
receber essas informaes. Para iniciar, programe seu 9091 com a seguinte configurao
das chaves de software :
-------chave de
SOFTWARE
-------C00
C02
C03
C05
C10
C11
C12
C14
C15
C25
C28
C31
C32
-------------------------------------------------valor
-------------------------------------------------(L) modo contador ativo
(d) impresso automtica desabilitada
(d) sensor de movimento desativado
(d) modo rede desativado
(d) imprime pesos BRUTO, TARA e LQUIDO
(L) envia os dados em uma nica linha
(L) envia o CHECKSUM no pacote de dados
(P04) seleciona o tipo de pacote a enviar
(d) transmisso contnua desativada - modo demanda
(L) ativa o uso da tecla F2
(L) ativa o envio da data e hora da pesagem
(L) envia o cdigo digitado pelo operador
(L) identifica a tara manual
PCLink 6.0
Toledo do Brasil - Indstria de balanas
15
Aps essa configurao, utilizar as funes W9091C para Firex ou W9091SerialC para
porta serial. Para fazer a leitura utilizar a funo Contadora_Canal.
Exemplos :
Para iniciar a conexo via ethernet Firex :
Sip := Seta_IP('192.168.211.17');
if Sip >= 0 then
begin
// a conexo ser no canal B da Firex
Canal := W9091C(Sip,'B');
end;
Fazendo a conexo via porta serial COM 1 :
Canal := W9091SerialC(1);
Aps a conexo ser realizada, utilizar a leitura quantas vezes for necessrio com as funes:
ret := Update_Canal(Canal);
que aguardar um tempo default do pacote de dados
ou
ret := Update_NoMotion(Canal,Tempo);
que determinar um tempo de espera.
A funo Contadora_canal(Canal) retorna o pacote de dados obtido, similar ao seguinte :
30/01/94 16:30 000000 402,2kg 00,133kg PMP 03035 PCS
As funes de lquido, bruto e tara no tem funcionalidade para este driver.
Verifique o programa exemplo que acompanha o disco de instalao e realize alguns testes
para entender o funcionamento.
6.6
W9091C
Utilizada para informar DLL que um determinado canal de uma placa FIREX, ser
alocado para leitura de um indicador 9091 contador com checksum habilitado, 4800 baud,
7 bit, paridade par e 1 stop bit. Verificar sobre configurao do indicador.
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Canal Canal de comunicao da placa FIREX (A,B,C ou D).
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int W9091C( int IP_SETADO, char * Canal);
16
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Sintaxe em Delphi :
function W9091C(IP_SETADO : Integer; Canal : PChar): Integer; stdcall;
6.7
W9091SerialC
Utilizada para informar DLL que uma determinada porta serial, ser alocada para leitura
de um indicador 9091 contador com checksum habilitado, 4800 baud, 7 bit, paridade par e
1 stop bit. Verificar sobre configurao do indicador.
Parmetros :
COM Valor inteiro correspondente a uma porta serial para comunicao.
COM1 = 1, COM2 = 2 e assim por diante.
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int W9091SerialC( int COM);
Sintaxe em Delphi :
function W9091SerialC(COM : Integer): Integer; stdcall;
6.8
WOhaus
Utilizada para informar DLL que um determinado canal de uma placa FIREX, ser
alocado para leitura de uma balana Ohaus programada para 9600 baud, 7 bit, paridade par
e 1 stop bit. A balana no precisa ser programada para transmitir continuamente.
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Canal Canal de comunicao da placa FIREX (A,B,C ou D).
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int WOhaus( int IP_SETADO, char * Canal);
Sintaxe em Delphi :
function WOhaus(IP_SETADO : Integer; Canal : PChar): Integer; stdcall;
6.9 WOhausSerial
Utilizada para informar DLL que uma determinada porta serial, ser alocada para leitura
de de uma balana Ohaus programada para 9600 baud, 7 bit, paridade par e 1 stop bit. A
balana no precisa ser programada para transmitir continuamente.
PCLink 6.0
Toledo do Brasil - Indstria de balanas
17
Parmetros :
COM Valor inteiro correspondente a uma porta serial para comunicao.
COM1 = 1, COM2 = 2 e assim por diante.
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int WOhausSerial(int COM);
Sintaxe em Delphi :
function WOhausSerial(COM : Integer): Integer; stdcall;
6.10 Indicador Challenger MSI3360
Para utilizar o indicador MSI3360 com o PCLink 6, necessrio que seja feito uma
programao no indicador conforme descrito abaixo.
Menu RS232
FOr
dAtA
01 40 (@)
02 53 (S)
03 40 (@)
04 56 (V)
05 32 (2)
06 40 (@)
07 56 (V)
08 33 (3)
09 40 (@)
10 56 (V)
11 34 (4)
12 40 (@)
13 55 (U)
14 40 (@)
15 45 (E)
16 00
StLin
01 02 (Stx)
02 00
Endln
01 03 (Etx)
02 00
StrnG
Str U
odE
OutPt
Cntr
Conti
Caracter de incio
Bruto
Lquido
Tara
Unidade
Caracter de fim
Fim de data
Caracter de incio, usado por @S
Fim de StLin
Caracter de fim, usado por @E
Fim de EndLin
User-defined string
Modo contnuo
18
PCLink 6.0
Toledo do Brasil - Indstria de balanas
otion
OFF
intEr
OnCE
SEt
bAud
9600
StoP
1 bit
dbitS
8 bit
PAr
nonE
HAnd
nonE
Motion desabilitado
Intervalo desabilitado
Baud rate
Stop bit
Bits de dados
Paridade
Sem handshake
Aps toda essa programao ser realizada, o indicador estar apto a ser lido serialmente ou
via ethernet.
6.11 WMSI3360
Utilizada para informar DLL que um determinado canal de uma placa FIREX, ser
alocado para leitura de um indicador Challenger MSI3360 programado conforme o tem 6.7
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Canal Canal de comunicao da placa FIREX (A,B,C ou D).
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int WMSI3360( int IP_SETADO, char * Canal);
Sintaxe em Delphi :
function WMSI3360(IP_SETADO : Integer; Canal : PChar): Integer; stdcall;
6.12 WMSI3360Serial
Utilizada para informar DLL que uma determinada porta serial, ser alocada para leitura
de um indicador MSI3360, programado conforme o tem 6.7.
Parmetros :
COM Valor inteiro correspondente a uma porta serial para comunicao.
COM1 = 1, COM2 = 2 e assim por diante.
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
PCLink 6.0
Toledo do Brasil - Indstria de balanas
19
Sintaxe em C :
int WMSI3360Serial(int COM);
Sintaxe em Delphi :
function WMSI3360Serial(COM : Integer): Integer; stdcall;
6.13 Programando MSI 6260
Programar para 1200 baud e continuo em RS232.
Fechar os seguintes switches S2-1, S2-2, S2-7, S3-1, S3-2, S3-6, S3-7 .
Abrir ose seguintes jumpers J14-3, J14-6, J14-7, J14-8 .
6.14 WMSI6260
Utilizada para informar DLL que um determinado canal de uma placa FIREX, ser
alocado para leitura de um indicador Challenger MSI6260 programado conforme o tem 6.7
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
Canal Canal de comunicao da placa FIREX (A,B,C ou D).
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int WMSI6260( int IP_SETADO, char * Canal);
Sintaxe em Delphi :
function WMSI6260(IP_SETADO : Integer; Canal : PChar): Integer; stdcall;
6.15 WMSI6260Serial
Utilizada para informar DLL que uma determinada porta serial, ser alocada para leitura
de um indicador MSI6260, programado conforme o manual do fabricante
Parmetros :
COM Valor inteiro correspondente a uma porta serial para comunicao.
COM1 = 1, COM2 = 2 e assim por diante.
Retorno :
Retorna um valor inteiro de 0 a n, para identificar o canal utilizado na
comunicao.
Sintaxe em C :
int WMSI6260Serial(int COM);
Sintaxe em Delphi :
function WMSI6260Serial(COM : Integer): Integer; stdcall;
20
PCLink 6.0
Toledo do Brasil - Indstria de balanas
6.16 ProgSerial
Utilizada para alterar algum parmetro de configurao da porta serial de algum dos drivers
de balana. Utilizar aps obter um nmero de um dos drivers de porta serial. Esta alterao
s deve ser realizada se desejar trabalhar fora dos padres estabelecidos por fbrica.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091Serial, por exemplo) para realizar a
leitura do indicador ou balana.
Baud Baudrate que deseja utilizar
Dados Databits da porta serial (5,6,7 ou 8)
Paridade Paridade da porta serial (0-Sem, 1-Impar ou 2-Par)
Stop Stop Bits da porta serial (1 ou 2)
Retorno :
Sem retorno
Sintaxe em C :
void ProgSerial( int canal,baud,dados,paridade,stop);
Sintaxe em Delphi :
procedure ProgSerial(Canal,Baud,Dados,Paridade,Stop : integer); stdcall;
6.17 Select_Canal
Utilizada para abrir a conexo TCP/IP quando a comunicao realizada atravs de uma
FIREX.
Parmetros :
Canal_Setado Valor inteiro correspondente ao nmero do canal fornecido
por alguma das funes de balana(W9091, por exemplo) para realizar a
leitura do indicador ou balana.
Retorno :
0 - Indica que a conexo j havia sido realizada.
1 Indica que a conexo foi realizada.
Sintaxe em C :
int Select_Canal( int CANAL_SETADO);
Sintaxe em Delphi :
function Select_Canal(CANAL_SETADO : Integer) : integer; stdcall;
6.18 Close_Canal
Fecha a conexo com o canal serial ou TCP/IP.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno : Sem retorno
PCLink 6.0
Toledo do Brasil - Indstria de balanas
21
Sintaxe em C :
void Close_Canal( int Canal);
Sintaxe em Delphi :
procedure Close_Canal(Canal : integer); stdcall;
6.19 Deleta_Canal
Deleta a conexo com o canal serial ou TCP/IP.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana. Este comando livra a memria alocada pela
conexo.
Retorno : Sem retorno
Sintaxe em C :
void Deleta_Canal( int Canal);
Sintaxe em Delphi :
procedure Deleta_Canal(Canal : integer); stdcall;
6.20 Update_Canal
Faz a leitura da balana ou indicador, correspondente ao canal passado como parmetro. O
peso sobre a balana pode estar estvel ou instvel.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno :
0 - Indica que a leitura foi vlida
1 - Indica que no foi possvel efetuar a leitura da balana.
3 Indica que h sobrecarga sobre a balana. Exemplo : na plataforma de
um indicador 9091, colocado 26 kg , que tem uma carga mxima de 25kg.
O display apaga , mas o indicador continua transmitindo. Isto deve ser
considerado como erro.
999 Indica que no conseguiu detectar a hardkey local ou de rede.
Sintaxe em C :
int Update_Canal( int Canal);
Sintaxe em Delphi :
function Update_Canal(Canal : integer) : Integer; stdcall;
22
PCLink 6.0
Toledo do Brasil - Indstria de balanas
6.21 Update_NoMotion
Faz a leitura da balana ou indicador, correspondente ao canal passado como parmetro. O
peso sobre a balana deve estar estvel. Esta funo no tem validade para o indicador
Challenger MSI3360.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Tempo - Contado em milisegundos ( 1000ms = 1 segundo)
Valor 0(Zero) - Aguardar at a estabilizao da balana
Valores acima de zero, aguardar o tempo passado
Valor 1 ser utilizado o tempo default da DLL
Retorno :
0 - Indica que a leitura foi vlida
1 - Indica que no foi possvel efetuar a leitura da balana.
2 Indica que expirou timeout para efetuar a leitura sem movimento.
3 Indica que h sobrecarga sobre a balana. Exemplo : na plataforma de
um indicador 9091, colocado 26 kg , que tem uma carga mxima de 25kg.
O display apaga , mas o indicador continua transmitindo. Isto deve ser
considerado como erro.
999 Indica que no conseguiu detectar a hardkey local ou de rede.
Sintaxe em C :
int Update_NoMotion( int Canal, int Tempo);
Sintaxe em Delphi :
function Update_NoMotion(Canal : integer;Tempo : integer) : Integer;
stdcall;
6.22 Gross_canal
Obtm o peso bruto, aps utilizar a funo Update_Canal ou Update_NoMotion, se no
utilizar nenhuma das funes obter o ltimo peso lido.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno :
Peso bruto
Sintaxe em C :
char * Gross_canal( int Canal);
Sintaxe em Delphi :
function Gross_Canal(Canal : integer) : PChar; stdcall;
PCLink 6.0
Toledo do Brasil - Indstria de balanas
23
6.23 Net_canal
Obtm o peso lquido, aps utilizar a funo Update_Canal ou Update_NoMotion, se no
utilizar nenhuma das funes obter o ltimo peso lido.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno :
Peso lquido
Sintaxe em C :
char * Net_canal( int Canal);
Sintaxe em Delphi :
function Net_Canal(Canal : integer) : PChar; stdcall;
6.24 Tare_canal
Obtm o peso tara, aps utilizar a funo Update_Canal ou Update_NoMotion, se no
utilizar nenhuma das funes obter o ltimo peso lido.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno :
Peso tara
Sintaxe em C :
char * Tare_canal( int Canal);
Sintaxe em Delphi :
function Tare_Canal(Canal : integer) : PChar; stdcall;
6.25 Estado_Canal
Obtm alguns estados da balana, aps utilizar a funo Update_Canal ou
Update_NoMotion, se no utilizar nenhuma das funes obter o ltimo estado.
Parmetros :
Canal Valor inteiro correspondente ao nmero do canal fornecido por
alguma das funes de balana(W9091, por exemplo) para realizar a leitura
do indicador ou balana.
Retorno:
Para W9091 ser recebido uma string com o seguinte pacote:
Incremento da balana
: 1,2 ou 5
NetMode
: S = Sim; N = No ; E = Erro
Peso negativo
: S = Sim; N = No ; E = Erro
Sobrecarga
: S = Sim; N = No ; E = Erro
Peso em movimento
: S = Sim; N = No ; E = Erro
Unidade da balana
: kg ou lb; EE = Erro
24
PCLink 6.0
Toledo do Brasil - Indstria de balanas
6.28 ClrBufTx
Limpa buffer de transmisso apenas para placas Firex.
Parmetros :
IP_SETADO Valor inteiro retornado da funo Seta_Ip correspondente a
um IP para comunicao.
PCLink 6.0
Toledo do Brasil - Indstria de balanas
25
a
6
5
4
6.31 DIO_InPort
Utilizada para ler todas as entradas e obter seu retorno em um valor inteiro.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Retorno :
-1 indica que no foi possvel ler as entradas ou retorna um valor inteiro de
0 a 255, setando os bits de 0 a 7 cuja entrada correspondente estiver ligada.
Sintaxe em C :
int DIO_InPort( int Nip);
Sintaxe em Delphi :
function DIO_InPort(Nip : integer): Integer; stdcall;
26
PCLink 6.0
Toledo do Brasil - Indstria de balanas
6.32 DIO_InPortStr
Utilizada para ler todas as entradas e obter seu retorno em uma String.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Retorno :
Retorna EEEEEEEE indicando que no foi possvel ler as entradas ou
retorna uma string conforme a tabela abaixo.
Ligado
Desligado
Ent 0
S
N
Ent 1
S
N
Ent 2
S
N
Ent 3
S
N
Ent 4
S
N
Ent 5
S
N
Ent 6
S
N
Ent 7
S
N
Sintaxe em C :
Char * DIO_InPort( int Nip);
Sintaxe em Delphi :
function DIO_InPortStr(Nip : integer): PChar; stdcall;
6.33 DIO_InBit
Utilizada para ler uma determinada entrada e obter seu retorno em um valor inteiro.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Retorno :
-1
- indica que no foi possvel ler a entrada.
0
- entrada desligada.
1
- entrada ligada.
Sintaxe em C :
int DIO_InBit( int Nip, int Entrada);
Sintaxe em Delphi :
function DIO_InBit(Nip : integer;Entrada : integer): Integer; stdcall;
6.34 DIO_InBitStr
Utilizada para ler uma determinada entrada e obter seu retorno em uma String.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Retorno :
E
- indica que no foi possvel ler a entrada.
N
- entrada desligada.
S
- entrada ligada.
Sintaxe em C :
char DIO_InBitStr( int Nip, int Entrada);
PCLink 6.0
Toledo do Brasil - Indstria de balanas
27
Sintaxe em Delphi :
function DIO_InBitStr(Nip : integer; Entrada : integer): PChar; stdcall;
6.35 DIO_OutPort
Utilizada para escrever em todas as sadas simultaneamente atravs de um parmetro
inteiro.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Palavra Valor inteiro a ser escrito nas sadas.
Retorno :
-1
- indica que no foi possvel escrever nas sadas
0
- placa recebeu o comando de alterao das sadas.
Sintaxe em C :
int DIO_OutPort( int Nip, int Palavra);
Sintaxe em Delphi :
function DIO_OutPort(Nip : integer;Palavra : integer): Integer; stdcall;
6.36 DIO_OutPortStr
Utilizada para escrever em todas as sadas simultaneamente atravs de um parmetro string.
Parmetros :
Nip Valor inteiro retornado da funo Seta_Ip correspondente a um IP para
comunicao.
Palavra Valor string a ser escrito nas sadas, conforme tabela abaixo.
Ligar
Desligar
Ent 0
S
N
Ent 1
S
N
Ent 2
S
N
Ent 3
S
N
Ent 4
S
N
Ent 5
S
N
Ent 6
S
N
Ent 7
S
N
28
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Sintaxe em C :
int DIO_InBitStr( int Nip,int Saida, char * Estado);
Sintaxe em Delphi :
function DIO_OutBitStr(Nip : integer;Saida : Integer; Estado : PChar):
integer; stdcall;
PCLink 6.0
Toledo do Brasil - Indstria de balanas
29
7 Exemplos de programao
7.1
Delphi 6
Este programa se destina para testes e para desenvolvimento de aplicaes para linguagem
de programao Delphi.
Na parte superior da tela, se encontram dados relativos a hardkey PCLink6 . Se esses dados
no estiverem aparecendo, significa que no foi possvel ler a hardkey, seja ela remota ou
local.
30
PCLink 6.0
Toledo do Brasil - Indstria de balanas
PCLink 6.0
Toledo do Brasil - Indstria de balanas
end;
TFormTeste = class(TForm)
Panel4: TPanel;
Panel1: TPanel;
Label11: TLabel;
edtIP1: TEdit;
Panel2: TPanel;
Label2: TLabel;
Label5: TLabel;
Label1: TLabel;
Label6: TLabel;
Label3: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label12: TLabel;
b1Bal1: TButton;
b1Bal2: TButton;
Panel3: TPanel;
Label4: TLabel;
Label10: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Ent10: TPanel;
Ent11: TPanel;
Ent12: TPanel;
Ent13: TPanel;
Ent14: TPanel;
Ent15: TPanel;
Ent16: TPanel;
Ent17: TPanel;
p1Bit0: TBitBtn;
p1Bit7: TBitBtn;
p1Bit1: TBitBtn;
p1Bit2: TBitBtn;
p1Bit3: TBitBtn;
p1Bit4: TBitBtn;
p1Bit5: TBitBtn;
p1Bit6: TBitBtn;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Panel5: TPanel;
ckSemMov2: TCheckBox;
ckSemMov1: TCheckBox;
Label31: TLabel;
31
32
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Label32: TLabel;
rgSerial: TRadioGroup;
b1bal3: TButton;
b1bal4: TButton;
Label16: TLabel;
Label25: TLabel;
Label26: TLabel;
Label27: TLabel;
Label29: TLabel;
cbSerial: TComboBox;
Label28: TLabel;
cbATcp: TComboBox;
Label30: TLabel;
cbBTcp: TComboBox;
Label33: TLabel;
cbCTcp: TComboBox;
Label34: TLabel;
cbDTcp: TComboBox;
bInicializa1: TButton;
Panel9: TPanel;
bInicializa2: TButton;
Panel10: TPanel;
Label35: TLabel;
Label36: TLabel;
Label37: TLabel;
lblver: TLabel;
lblProg: TLabel;
Label38: TLabel;
lblConex: TLabel;
Timer1: TTimer;
Label39: TLabel;
lblSerial: TLabel;
procedure bInicializa1Click(Sender: TObject);
procedure b1Bal1Click(Sender: TObject);
procedure b1Bal2Click(Sender: TObject);
//
procedure ApplicationEvents1Idle(Sender: TObject; var Done:
Boolean);
procedure ApagarCampos1;
procedure ApagarCampos2;
procedure Panelbit(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure bInicializa2Click(Sender: TObject);
procedure b1bal3Click(Sender: TObject);
procedure b1bal4Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ThreadLerIo1,
ThreadLerIo2
: TThreadLer;
ThreadPesar1
ThreadPesar2
end;
: TThreadPesar1;
: TThreadPesar2;
PCLink 6.0
Toledo do Brasil - Indstria de balanas
var
FormTeste
: TFormTeste;
NumPlacaFirex1,
NumPlacaFirex2,
CanalSelecionado1,
CanalSelecionado2,
CanalB1,
CanalB2,
CanalB3,
CanalB4,
CanalB5
: integer;
ftr
: boolean;
RecSca,
Ips
: string;
rtt
: integer;
//
//
SetaIO,
PortaIO
// Time1,
// Time2
implementation
: integer;
: TTimeStamp;
33
34
PCLink 6.0
Toledo do Brasil - Indstria de balanas
//
:=
:=
:=
:=
False;
False;
False;
False;
Panel2.Enabled := False;
Panel3.Enabled := False;
PCLink 6.0
Toledo do Brasil - Indstria de balanas
if CanalB1 >= 0 then
Close_Canal(CanalB1);
if CanalB2 >= 0 then
Close_Canal(CanalB2);
if CanalB3 >= 0 then
Close_Canal(CanalB3);
if CanalB4 >= 0 then
Close_Canal(CanalB4);
ApagarCampos1;
end
else
begin
CanalSelecionado1 := -1;
ThreadPesar1 := TThreadPesar1.Create(True);
ThreadPesar1.FreeOnTerminate := True;
ThreadPesar1.Resume;
for i := 0 to 7 do
begin
with TPanel(FindComponent('Ent1'+IntToStr(i))) do
begin
Color := clRed;
end;
end;
bInicializa1.Tag := 1;
bInicializa1.Caption := 'Finaliza comunicao';
IPs := edtIP1.text;
NumPlacaFirex1 := Seta_IP(PChar(IPs));
ThreadLerIO1 := TThreadLer.Create(True);
ThreadLerIO1.FreeOnTerminate := True;
ThreadLerIO1.Tela := 1;
ThreadLerIO1.Resume;
case cbATcp.ItemIndex of
0 : CanalB1 := W9091(NumPlacaFirex1,'A');
1 : CanalB1 := WOhaus(NumPlacaFirex1,'A');
end;
if CanalB1 < 0 then
begin
ShowMessage('Balana A :'#10#13+'No foi possvel realizar
conexo');
end
else b1Bal1.Enabled := True;
case cbBTcp.ItemIndex of
0 : CanalB2 := W9091(NumPlacaFirex1,'B');
1 : CanalB2 := WOhaus(NumPlacaFirex1,'B');
end;
if CanalB2 < 0 then
begin
35
36
PCLink 6.0
Toledo do Brasil - Indstria de balanas
PCLink 6.0
Toledo do Brasil - Indstria de balanas
//
'+
37
:=
:=
:=
:=
False;
True;
True;
True;
FormTeste.ActiveControl := b1Bal2;
end;
procedure TFormTeste.b1Bal2Click(Sender: TObject);
begin
ApagarCampos1;
CanalSelecionado1 := CanalB2;
b1Bal1.Enabled
b1Bal2.Enabled
b1Bal3.Enabled
b1Bal4.Enabled
:=
:=
:=
:=
True;
False;
True;
True;
FormTeste.ActiveControl := b1Bal1;
end;
procedure TFormTeste.b1bal3Click(Sender: TObject);
begin
ApagarCampos1;
CanalSelecionado1 := CanalB3;
b1Bal1.Enabled := True;
b1Bal2.Enabled := True;
38
PCLink 6.0
Toledo do Brasil - Indstria de balanas
b1Bal3.Enabled := False;
b1Bal4.Enabled := True;
FormTeste.ActiveControl := b1Bal4;
end;
procedure TFormTeste.b1bal4Click(Sender: TObject);
begin
ApagarCampos1;
CanalSelecionado1 := CanalB4;
b1Bal1.Enabled
b1Bal2.Enabled
b1Bal3.Enabled
b1Bal4.Enabled
:=
:=
:=
:=
True;
True;
True;
False;
FormTeste.ActiveControl := b1Bal1;
end;
procedure TFormTeste.FormActivate(Sender: TObject);
begin
FormTeste.ActiveControl := edtIP1;
end;
procedure TThreadLer.Execute;
begin
While not Terminated do
begin
retorno := DIO_InPort(NumPlacaFirex1);
if retorno <> -1 then Synchronize(Exibeio);
sleep(500);
end;
end;
procedure TThreadLer.ExibeIO;
var i,j : integer;
begin
j := 1;
for i := 0 to 7 do
begin
with
TPanel(FormTeste.FindComponent('Ent'+IntToStr(Tela)+IntToStr(i))) do
begin
if (retorno and j) > 0 then
Color := clTeal
else
Color := clRed;
j := j shl 1;
end;
end;
end;
procedure TThreadPesar1.Execute;
var ret : integer;
begin
while not terminated do
begin
PCLink 6.0
Toledo do Brasil - Indstria de balanas
if CanalSelecionado1 >= 0 then
begin
if Select_Canal(CanalSelecionado1) = 0 then
begin
gross := 'Erro';
tare := '';
net
:= '';
smov := '';
sest := '';
Synchronize(ExibePeso);
end
else
begin
// Execute do IP1
if SemMovimento then
begin
ret := Update_NoMotion(CanalSelecionado1,5000);
end
else
begin
ret := Update_Canal(CanalSelecionado1);
end;
if (ret = 0) or (ret = 3) then
begin
if ret = 0 then
begin
gross := StrPas(Gross_canal(CanalSelecionado1));
tare := StrPas(Tare_canal(CanalSelecionado1));
net := StrPas(Net_canal(CanalSelecionado1));
smov := StrPas(Estado_EmMovimento(CanalSelecionado1));
end;
if ret = 3 then
begin
gross := 'Sobrecarga';
tare := '';
net := '';
smov := '';
end;
sest := StrPas(Estado_Canal(CanalSelecionado1));
end;
// Aqui deve ser analisado caso a caso...se timeout, se
sobrecarga
if (ret <> 0) and (ret <> 3) then
begin
gross := 'Erro';
tare := '';
net
:= '';
smov := '';
39
40
PCLink 6.0
Toledo do Brasil - Indstria de balanas
end;
Synchronize(ExibePeso);
end;
end;
sleep(1);
//
Application.ProcessMessages;
end;
gross := '';
tare
:= '';
net
:= '';
smov
:= '';
sest
:= '';
Synchronize(ExibePeso);
end;
procedure TThreadPesar1.ExibePeso;
begin
// Exibe peso do IP1
FormTeste.Label5.Caption := Gross;
FormTeste.Label6.Caption := Tare;
FormTeste.Label7.Caption := Net;
FormTeste.Label9.Caption := smov;
FormTeste.Label25.Caption := sest;
SemMovimento := FormTeste.ckSemMov1.Checked;
end;
procedure TThreadPesar2.Execute;
var ret : integer;
begin
while not terminated do
begin
if CanalSelecionado2 >= 0 then
begin
if Select_Canal(CanalSelecionado2) = 0 then
begin
gross := 'Erro';
tare := '';
net
:= '';
smov := '';
sest := '';
Synchronize(ExibePeso);
end
else
begin
// Execute do IP1
if SemMovimento then
begin
PCLink 6.0
Toledo do Brasil - Indstria de balanas
ret := Update_NoMotion(CanalSelecionado2,5000);
end
else
begin
ret := Update_Canal(CanalSelecionado2);
end;
if (ret = 0) or (ret = 3) then
begin
if ret = 0 then
begin
gross := StrPas(Gross_canal(CanalSelecionado2));
tare := StrPas(Tare_canal(CanalSelecionado2));
net := StrPas(Net_canal(CanalSelecionado2));
smov := StrPas(Estado_EmMovimento(CanalSelecionado2));
end;
if ret = 3 then
begin
gross := 'Sobrecarga';
tare := '';
net := '';
smov := '';
end;
sest := StrPas(Estado_Canal(CanalSelecionado2));
end;
// Aqui deve ser analisado caso a caso...se timeout, se
sobrecarga
if (ret <> 0) and (ret <> 3) then
begin
gross := 'Erro';
tare := '';
net
:= '';
smov := '';
end;
Synchronize(ExibePeso);
end;
end;
sleep(1);
//
Application.ProcessMessages;
end;
gross := '';
tare
:= '';
net
:= '';
smov
:= '';
sest
:= '';
41
42
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Synchronize(ExibePeso);
end;
procedure TThreadPesar2.ExibePeso;
begin
// Exibe peso do IP1
FormTeste.Label18.Caption := Gross;
FormTeste.Label20.Caption := Tare;
FormTeste.Label22.Caption := Net;
FormTeste.Label24.Caption := smov;
FormTeste.Label27.Caption := sest;
SemMovimento := FormTeste.ckSemMov2.Checked;
end;
PCLink 6.0
Toledo do Brasil - Indstria de balanas
begin
ShowMessage('Balana via porta serial :'#10#13+'No foi possvel
realizar leitura.');
exit;
end;
CanalSelecionado2 := CanalB5;
Panel8.Enabled := True;
FormTeste.SelectNext(bInicializa2,True,True);
end;
end;
procedure TFormTeste.FormClose(Sender: TObject; var Action:
TCloseAction);
begin
CloseLicense;
end;
procedure TFormTeste.Timer1Timer(Sender: TObject);
var Nome,ver,serial,Conex,Programa : PChar;
begin
FirVer(Nome,ver,serial,Conex,Programa);
lblver.Caption
:= StrPas(nome) + ' ' + StrPas(ver);
lblProg.caption
:= strpas(Programa);
lblConex.caption := strpas(Conex);
lblSerial.Caption := serial;
end;
end.
43
44
7.2
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Exemplo VB 6
Este programa se destina para testes e para desenvolvimento de aplicaes para linguagem
de programao Visual Basic.
Na parte superior da tela, se encontram dados relativos a hardkey PCLink6 . Se esses dados
no estiverem aparecendo, significa que no foi possvel ler a hardkey, seja ela remota ou
local.
Do lado direito pode ser configurado uma leitura de balana via RS232. Apesar do
programa estar fixando a leitura de COM1 a COM8, a DLL permite a leitura de qualquer
serial que esteja instalada no computador.
Do lado esquerdo pode ser configurado uma leitura de balana via FIREX. Antes de se
fazer esta leitura necessrio que se utilize o programa Firex Tools para configurar a placa
Firex com um endereo IP e parmetros dos canais A,B,C ou D. Alm disso, a Firex deve
ter uma placa SIM no canal que se deseja a leitura e placas PIM (Entradas e Sadas) se for
ativar IOs.
7.2.1 Cdigo fonte VB 6
Attribute VB_Name = "Geral"
'Desenvolvido para Visual Basic 6.0 Service Pack 5
Option Explicit
Public tentativa, i, Codigo, Tipo As Long
'Variaveis utilizadas para serial
Public s_SemMovimento As Boolean
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Public CanalSerial As Long
Public s_mov, s_est, s_gross, s_tare, s_net, s_sest As String
'Variaveis utilizadas para TcpIp
Public i_SemMovimento As Boolean
Public NumPlacaFirex As Long
Public CanalTcp, retIO As Long
Public i_mov, i_est, i_gross, i_tare, i_net, i_sest, IPs As String
'Declara algumas funes da dll utilizadas nesse programa
Declare Function Display_Erro Lib "PcLink6.dll" _
(ByVal IP_SETADO As Long) As String
Declare Function Seta_Ip Lib "PcLink6.dll" _
(ByVal IPStr As String) As Long
Declare Function W9091 Lib "PcLink6.dll" _
(ByVal IP_SETADO As Long, ByVal Canal As String) As Long
Declare Function W9091Serial Lib "PcLink6.dll" _
(ByVal Canal As Long) As Long
Declare Function WOhaus Lib "PcLink6.dll" _
(ByVal IP_SETADO As Long, ByVal Canal As String) As Long
Declare Function WOhausSerial Lib "PcLink6.dll" _
(ByVal Canal As Long) As Long
Declare Function Select_Canal Lib "PcLink6.dll" _
(ByVal CANAL_SETADO As Long) As Long
Declare Sub Close_Canal Lib "PcLink6.dll" (ByVal Canal As Long)
Declare Sub Deleta_Canal Lib "PcLink6.dll" (ByVal Canal As Long)
Declare Function Update_Canal Lib "PcLink6.dll" _
(ByVal Canal As Long) As Long
Declare Function Update_NoMotion Lib "PcLink6.dll" _
(ByVal Canal As Long, ByVal Tempo As Long) As Long
Declare Function Gross_Canal Lib "PcLink6.dll" _
(ByVal Canal As Long) As String
Declare Function Net_Canal Lib "PcLink6.dll" _
(ByVal Canal As Long) As String
Declare Function Tare_Canal Lib "PcLink6.dll" _
(ByVal Canal As Long) As String
45
46
PCLink 6.0
Toledo do Brasil - Indstria de balanas
PCLink 6.0
Toledo do Brasil - Indstria de balanas
47
48
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Refresh = True
End Function
'Desenvolvido para Visual Basic 6.0 Service Pack 5
'Este exemplo apenas conceitual, por isso foi utilizado o objeto Timer.
'Para ler vrias balanas ao mesmo tempo, deve ser utilizado algum outro
modo
'multitarefa.
Private TabIo As PckIo
=
=
=
=
=
=
=
=
False
False
False
False
False
False
False
False
bTCP.Tag = 1
PCLink 6.0
Toledo do Brasil - Indstria de balanas
bTCP.Caption = "Finalizar Leitura"
bTCP.Enabled = False
IPs = edtIP.Text
NumPlacaFirex = Seta_Ip(IPs)
If cbIndicadorIP.ListIndex = 0 Then
CanalTcp = W9091(NumPlacaFirex, cbCanalIP.Text)
Else
CanalTcp = WOhaus(NumPlacaFirex, cbCanalIP.Text)
End If
If CanalTcp < 0 Then
MsgBox ("No foi possvel realizar conexo")
Else
TimerIO.Enabled = True
TimerIP.Enabled = True
PanelS.Visible = True
PanelE.Visible = True
End If
bTCP.Enabled = True
End If
End Sub
Private Sub bSerial_Click()
'se tag = 1 porque deseja parar a leitura
If bSerial.Tag = 1 Then
TimerSerial.Enabled = False
bSerial.Tag = 0
bSerial.Caption = "Iniciar leitura"
bSerial.Enabled = False
FinalizarSerial.Enabled = True
Else
CanalSerial = -1
bSerial.Tag = 1
bSerial.Caption = "Finalizar pesagem"
bSerial.Enabled = False
If cbSerial.ListIndex = 0 Then
CanalSerial = W9091Serial(cbCom.ListIndex + 1)
Else
CanalSerial = WOhausSerial(cbCom.ListIndex + 1)
End If
If CanalSerial < 0 Then
MsgBox ("Balana via porta serial : No foi possvel realizar
leitura.")
Else
TimerSerial.Enabled = True
End If
bSerial.Enabled = True
End If
End Sub
49
50
PCLink 6.0
Toledo do Brasil - Indstria de balanas
PCLink 6.0
Toledo do Brasil - Indstria de balanas
Private Sub Form_Unload(Cancel As Integer)
HK.Enabled = False
Set TabIo = Nothing
CloseLicense
End Sub
Private Sub HK_Timer()
Dim Nome As String, ver As String, progr As String, conex As String,
serialt As String
FirVer Nome, ver, serialt, conex, progr
Label12.Caption
Label13.Caption
Label14.Caption
Label15.Caption
=
=
=
=
End Sub
'Seta ou reseta sadas de IO
Private Sub S1_Click()
TabIo.SetSaida 1, S1.Value
End Sub
Private Sub S2_Click()
TabIo.SetSaida 2, S2.Value
End Sub
Private Sub S3_Click()
TabIo.SetSaida 3, S3.Value
End Sub
Private Sub S4_Click()
TabIo.SetSaida 4, S4.Value
End Sub
Private Sub S5_Click()
TabIo.SetSaida 5, S5.Value
End Sub
Private Sub S6_Click()
TabIo.SetSaida 6, S6.Value
End Sub
Private Sub S7_Click()
TabIo.SetSaida 7, S7.Value
End Sub
Private Sub S8_Click()
TabIo.SetSaida 8, S8.Value
End Sub
Private Sub ExibePesoSerial()
' Exibe peso da serial
lbsBruto.Caption = s_gross
51
52
PCLink 6.0
Toledo do Brasil - Indstria de balanas
lbsTara.Caption = s_tare
lbsLiquido.Caption = s_net
lbsEstado.Caption = s_sest
s_SemMovimento = ckMovSerial.Value
End Sub
Private Sub ExibePesoIP()
' Exibe peso do IP
lbiBruto.Caption = i_gross
lbiTara.Caption = i_tare
lbiLiquido.Caption = i_net
lbiEstado.Caption = i_sest
i_SemMovimento = ckMovIP.Value
End Sub
Private Sub TimerIO_Timer()
If TabIo.Refresh(NumPlacaFirex) = True Then 'atualiza variaveis de IO
AtualizaEntradas
End If
End Sub
Private Sub TimerIP_Timer()
'faz a leitura enquanto no encerrar
TimerIP.Tag = 1
If CanalTcp >= 0 Then
If Select_Canal(CanalTcp) = 0 Then
i_gross = "Erro"
i_tare = ""
i_net = ""
i_smov = ""
i_sest = ""
ExibePesoIP
Else
If i_SemMovimento Then
ret = Update_NoMotion(CanalTcp, 5000)
If ret = 0 Then
i_gross = Gross_Canal(CanalTcp)
i_tare = Tare_Canal(CanalTcp)
i_net = Net_Canal(CanalTcpSerial)
i_smov = Estado_EmMovimento(CanalTcp)
i_sest = Estado_Canal(CanalTcp)
End If
Else
PCLink 6.0
Toledo do Brasil - Indstria de balanas
53
ret = Update_Canal(CanalTcp)
If ret = 0 Then
i_gross = Gross_Canal(CanalTcp)
i_tare = Tare_Canal(CanalTcp)
i_net = Net_Canal(CanalTcp)
i_smov = Estado_EmMovimento(CanalTcp)
i_sest = Estado_Canal(CanalTcp)
End If
End If
' Aqui deve ser analisado caso a caso...se timeout, se sobrecarga
If ret <> 0 Then
i_gross = "Erro"
i_tare = ""
i_net = ""
i_smov = ""
i_sest = ""
End If
ExibePesoIP
End If
End If
TimerIP.Tag = 0
End Sub
Private Sub TimerSerial_Timer()
'faz a leitura enquanto no encerrar
TimerSerial.Tag = 1
If CanalSerial >= 0 Then
If Select_Canal(CanalSerial) = 0 Then
s_gross = "Erro"
s_tare = ""
s_net = ""
s_smov = ""
s_sest = ""
ExibePesoSerial
Else
If s_SemMovimento Then
ret = Update_NoMotion(CanalSerial, 5000)
If ret = 0 Then
s_gross = Gross_Canal(CanalSerial)
s_tare = Tare_Canal(CanalSerial)
s_net = Net_Canal(CanalSerial)
s_smov = Estado_EmMovimento(CanalSerial)
s_sest = Estado_Canal(CanalSerial)
End If
Else
ret = Update_Canal(CanalSerial)
If ret = 0 Then
54
PCLink 6.0
Toledo do Brasil - Indstria de balanas
s_gross = Gross_Canal(CanalSerial)
s_tare = Tare_Canal(CanalSerial)
s_net = Net_Canal(CanalSerial)
s_smov = Estado_EmMovimento(CanalSerial)
s_sest = Estado_Canal(CanalSerial)
End If
End If
' Aqui deve ser analisado caso a caso...se timeout, se sobrecarga
If ret <> 0 Then
s_gross = "Erro"
s_tare = ""
s_net = ""
s_smov = ""
s_sest = ""
End If
ExibePesoSerial
End If
End If
TimerSerial.Tag = 0
End Sub