¿Cómo utilizar VB para implementar la comunicación serie con s7-200 Modbus?
1. El PC establece el formato de comunicación con el PLC.
2. Conectar el cable (en realidad no necesito hablar de este paso, jaja)
3. El PC envía una serie de instrucciones para leer la contraseña al PLC.
4. El PLC devuelve una cadena de datos hexadecimales después de recibir la instrucción.
5. El PC decodifica el código a través del programa y obtiene la contraseña. El PC decodifica el programa y convierte los datos hexadecimales devueltos por el PLC en caracteres, es decir, la contraseña.
Fíjese en el formato de comunicación con el PLC.
Por favor vea a continuación las instrucciones enviadas por el PC al PLC:
"STX0800808ETX6B"
Desglosándolo, es STX 0 3.... ETX 6 B
El problema surge en este momento El PLC no reconoce este carácter. ¡La PC debe convertir este carácter a hexadecimal para que el PLC lo reconozca! Convertir octal 02 a tabla de búsqueda hexadecimal 02: Convertir octal 02 a tabla de búsqueda hexadecimal se puede entender de esta manera, esta es la instrucción enviada por la PC al PLC, y luego el PLC recibe la instrucción y devuelve su contenido, STX4236353433323130ETX41-- --. -------Datos devueltos por el PLC
Explique con cuidado, la contraseña del PLC es de seis dígitos, por lo que entre los datos devueltos, solo nos interesan los datos de la fila del medio, es decir, " 4236353433323130"
El PLC devuelve datos hexadecimales, por lo que es necesario decodificar esta cadena de datos. Para decodificar y convertir esta cadena de datos, gire ambos extremos y verifique la tabla de códigos ASC. Se puede ver que 42 es "B" y 36 es "6", por lo que la codificación es: B6543210
Entonces. el código en el programa de PC de la siguiente manera:
a = MSComm1.Input 'Almacena los datos recibidos en un byte. Entrada 'Almacena los datos recibidos en a
b = Mid(a, 2, 16) 'Comienza a leer desde el segundo bit, porque el primer bit es el encabezado de los datos enviados por el PLC
p>Para i = 1 a 15 Paso 2 'Leer cada dos bits de los datos recibidos
c = Chr(CLng( "amp; H" amp; (Mid(b, i , 2)))) 'Convertir a caracteres
Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text1.Text = Texto1.Text c< / p>
Siguiente i
Oye, así es como funciona el programa
.