全国服务热线:

15861139266

通讯部分,苏州PLC培训,苏州上位机培训,苏州机器视觉培训,苏州工业机器人培训,苏州电工培训
发布时间:2023-03-29 11:19:02 点击次数:269

通讯部分


这一部分主要实现上位机软件与下位机的通讯实现。


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


//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;

大林上位机机器视觉_苏州电工培训_苏州PLC培训_苏州上位机培训_苏州机器视觉培训_苏州工业机器人培训_最适合电工及plc编程人员学习的上位机机器视觉课程 大林老师:15861139266(微信同号)

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,福利:线下报名课程原价抵扣



苏州激光3D视觉检测培训_苏州机器视觉测量软件编程培训_苏州机器视觉缺陷检测软件开发培训_苏州机器视觉与运动控制卡开发培训_苏州机器视觉与雷赛运动控制卡开发培训_苏州视觉引导无序抓取培训_苏州视觉引导机器人定位培训

苏州上位机软件开发学习_苏州上位机编程学习_苏州上位机软件开发学习学校_苏州C#与上位机开发学习_苏州C#上位机编程学习_苏州VSC#编程学习_苏州C#与工业自动化编程学习_苏州C#与PLC监控学习_苏州C#与PLC编程上位机软件学习_苏州C#与工业机器人编程学习


立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络