通讯部分
这一部分主要实现上位机软件与下位机的通讯实现。
4.1上位机modbus master
上位机的modbus实现采用python现有的modbus_tk库來实现,贴上基本代码
import modbus_tk
import modbus_tk.defines as cst
import serial
from modbus_tk import modbus_rtu
import time
PORT = 'COM3'
def main(master):
try:
#Connect to the slave
master.set_timeout(1)
master.set_verbose(True)
x = master.execute(1, cst.READ_INPUT_REGISTERS, 4,1) #获取下位机的寄存器值,地址为4,,长度为1,采用cst.READ_INPUT_REGISTERS 与 cst.READ_HOLDING_REGISTERS方法效果是一致的
if len(x)>0:
print(x[0]) #此处是获取的值,注意符号,本例中下位机也使用16位字符符号
except :
print('unknown' error)
if __name__ == "__main__":
master = modbus_rtu.RtuMaster(
serial.Serial(port=PORT, baudrate=19200, bytesize=8, parity='N', stopbits=1, xonxoff=0))
while True:
main(master)
tme.sleep(1)
4.2下位机modbus部分基於Arduino
采用arduino的modbus库,其中设置一个地址为4的寄存器。
/**
* Modbus slave example 2:
* The purpose of this example is to link the Arduino digital and analog
* pins to an external device.
*
* Recommended Modbus Master: QModbus
* http://qmodbus.sourceforge.net/
*
* Editado al español por LuxARTS
*/
//Incluye la librería del protocolo Modbus
#include <ModbusRtu.h>
#include <stdlib.h>
#define ID 1
大林上位机机器视觉,_苏州电工培训_苏州PLC培训_苏州机器视觉培训_苏州上位机培训_苏州工业机器人培训,最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
//Crear instancia
Modbus slave(ID, 0, 0); //ID del nodo. 0 para el master, 1-247 para esclavo
//Puerto serie (0 = TX: 1 - RX: 0)
//Protocolo serie. 0 para RS-232 + USB (default), cualquier pin mayor a 1 para RS-485
boolean led;
int8_t state = 0;
unsigned long tempus;
uint16_t au16data[9]; //La tabla de registros que se desea compartir por la red
/*********************************************************
Configuración del programa
*********************************************************/
void setup() {
io_setup(); //configura las entradas y salidas
slave.begin(19200); //Abre la comunicación como esclavo
tempus = millis() + 100; //Guarda el tiempo actual + 100ms
digitalWrite(13, HIGH ); //Prende el led del pin 13 (el de la placa)
au16data[4] = 0x8000;
}
/*********************************************************
Inicio del programa
*********************************************************/
void loop() {
//Comprueba el buffer de entrada
state = slave.poll( au16data, 9 ); //Parámetros: Tabla de registros para el intercambio de info
// Tamaño de la tabla de registros
//Devuelve 0 si no hay pedido de datos
//Devuelve 1 al 4 si hubo error de comunicación
//Devuelve mas de 4 si se procesó correctamente el pedido
if (state > 4) { //Si es mayor a 4 = el pedido fué correcto
tempus = millis() + 50; //Tiempo actual + 50ms
digitalWrite(13, HIGH);//Prende el led
}
if (millis() > tempus) digitalWrite(13, LOW );//Apaga el led 50ms después
//Actualiza los pines de Arduino con la tabla de Modbus
io_poll();
}
/**
* pin maping:
* 2 - digital input
* 3 - digital input
* 4 - digital input
* 5 - digital input
* 6 - digital output
* 7 - digital output
* 8 - digital output
* 9 - digital output
* 10 - analog output
* 11 - analog output
* 14 - analog input
* 15 - analog input
*
* pin 13 reservado para ver el estado de la comunicación
*/
void io_setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(6, LOW );
digitalWrite(7, LOW );
digitalWrite(8, LOW );
digitalWrite(9, LOW );
digitalWrite(13, HIGH ); //Led del pin 13 de la placa
analogWrite(10, 0 ); //PWM 0%
analogWrite(11, 0 ); //PWM 0%
}
大林上位机机器视觉,_苏州电工培训_苏州PLC培训_苏州机器视觉培训_苏州上位机培训_苏州工业机器人培训,最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)
/*********************************************************
Enlaza la tabla de registros con los pines
*********************************************************/
void io_poll() {
long temp;
// digital inputs -> au16data[0]
// Lee las entradas digitales y las guarda en bits de la primera variable del vector
// (es lo mismo que hacer una máscara)
bitWrite( au16data[0], 0, digitalRead( 2 )); //Lee el pin 2 de Arduino y lo guarda en el bit 0 de la variable au16data[0]
bitWrite( au16data[0], 1, digitalRead( 3 ));
bitWrite( au16data[0], 2, digitalRead( 4 ));
bitWrite( au16data[0], 3, digitalRead( 5 ));
// digital outputs -> au16data[1]
// Lee los bits de la segunda variable y los pone en las salidas digitales
digitalWrite( 6, bitRead( au16data[1], 0 )); //Lee el bit 0 de la variable au16data[1] y lo pone en el pin 6 de Arduino
digitalWrite( 7, bitRead( au16data[1], 1 ));
digitalWrite( 8, bitRead( au16data[1], 2 ));
digitalWrite( 9, bitRead( au16data[1], 3 ));
// Cambia el valor del PWM
analogWrite( 10, au16data[2] ); //El valor de au16data[2] se escribe en la salida de PWM del pin 10 de Arduino. (siendo 0=0% y 255=100%)
analogWrite( 11, au16data[3] );
temp=au16data[4];
// Serial.write(temp>>16);
// Serial.write(temp>>8);
// Serial.write(temp);
// Lee las entradas analógicas (ADC)
temp=(long)temp+(long)(random(-3,4));
//temp=-1;
// Serial.write(temp>>24);
// Serial.write(temp>>16);
// Serial.write(temp>>8);
// Serial.write(temp);
temp=temp<0?0:temp;
temp=temp>65535?65535:temp;
//temp=temp<0?0:temp;
//temp=temp>65535?65535:temp;
au16data[4] = temp;
//au16data[4] = byte(random(65530,65535));//analogRead( 0 ); //El valor anaalógico leido en el pin A0 se guarda en au16data[4]. (siendo 0=0v y 1023=5v)
au16data[5] = 0xffff;
// Diagnóstico de la comunicación (para debug)
au16data[6] = slave.getInCnt(); //Devuelve cuantos mensajes se recibieron
au16data[7] = slave.getOutCnt(); //Devuelve cuantos mensajes se transmitieron
au16data[8] = slave.getErrCnt(); //Devuelve cuantos errores hubieron
}
#至此基本的框架已经搭出來了,上位机与下位机的通信也打通了。硬件上的问题已经基本解決
全面开始始一的GUI的编写。
一、课程目标
本公司本着为工控事业培育和输出从电工基础到机器视觉的人才理念,着力于让小白成为工控业专家为目标。
大林上位机视觉软件培训专家特开设从电工基础、PLC、运动控制、上位机、工业机器人、机器视觉培训课程,为实现工业4.0事业而不懈努力。
机构课程全程真实教学、实干为主,不装逼,不扯淡,只唠干货,能做项目!!
二、老师介绍
大林老师
是专业从事上位机视觉软件的开发与培训,多年从事上位机机器视觉相关项目开发,对电气人员学习C#开发视觉软件有独到的见解,即使您是零基础或只要从事过电气自动化相关工作的学员都能够轻松快速学会。
三、校区介绍
大林上位机机器视觉培训机构,分为两个校区,苏州校区(苏州木渎),常州校区(常州新北)
四、硬件设施
校区提供2000多平方的实训基地,完美的设备硬件配套,可以做到边学习边操作,鉴于本机构隶属于某自动化公司,学员可以配合边学习边配合公司开发人员完成项目,这样学习起来事半功倍
五、毕业服务
学业完成后本公司可以择优录取,在我们自动化公司的实习,解决您的后顾之忧
六、课程对象
1.零基础无任何相关知识
2.有电气及PLC编程基础的更容易入手
3.需要系统性提升整体能力
4.跨行业转型
5.想拥有一份体面高收入
6.对自己前途迷茫
7.学历低英语不好
七、课程特色
为您量身提供零基础快速成为上位机及机器视觉软件开发专家的学习方案
承接企事业单位定制个性化学员集体培训。
八、课程内容
小白亦可通过学习成为工业软件开发专家,从电气图,到梯形图,到高级语言SCL,再到C#,突破高级语言难的瓶颈,轻松掌握。
从零开始,从电气基本元件入手,跟随课程递进学习,PLC,工业机器人,数据库,运动控制器,上位机,机器视觉,统统一网打尽。
欢迎亲临现场咨询,老师私人定制课程 ,学习更清晰!
九、授课方式
1、线下现场授课更直观,知识点更易吸收,现场互动更易理解和运用。
1,赠送老师录制课程随时随地轻松学习
2,赠送配套书籍不限环境随意学习
3,课间和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解。
5,老师指导完善简历,轻松上岗。
2、线上视频录播课程-整套
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,福利:线下报名课程原价抵扣
3、 线上视频课程+现场设备实操
1,赠送配套书籍不限环境随意学习
2,售后答疑轻松解答
3,现场和课后答疑知识掌握更牢固
4,现场设备随意使用,人机结合熟练运用,加深知识理解
5,福利:线下报名课程原价抵扣
_苏州上位机与西门子200SMARTPLC编程学习视频_苏州上位机与西门子S7-1200PLC编程学习视频_苏州上位机与西门子S7-1500PLC编程学习视频_苏州上位机与西门子SCL编程学习视频_苏州上位机与三菱PLC全科学习视频_苏州上位机与三菱PLC编程学习视频_苏州上位机与三菱FX系列编程学习视频_苏州上位机与三菱PLC编程学习机构视频_苏州上位机与三菱PLC学习学校视频_苏州上位机与三菱FX3UPLC编程学习视频
_苏州上位机与三菱FX5UPLC编程学习视频_苏州上位机工业机器人编程学习视频_苏州上位机与ABB工业机器人编程学习视频_苏州上位机与六轴机器人视频_苏州上位机与四轴机器人编程定位视频_苏州上位机与Epson机器人学习视频_苏州机器视觉软件开发学习视频_苏州CCD机器视觉学习视频_苏州机器视觉软件框架开发学习视频_苏州工业机器视觉学习视频
版权所有:大林机器视觉培训所有 备案号:苏ICP备14016686号-9
本站关键词:上位机培训 机器视觉软件开发培训 上位机运动控制培训 深度学习培训 网站标签