研华工控机通过CAN2.0B控制自己制作的PCB电路板

      最近在做研华工控机控制输出IO,因为工控机的IO板卡比较贵,而且后面必须接继电器,这样会造成我们机器的电控柜比较大,电路走线非常困难,在这个原因的困扰下,我提出自己做一块IO驱动板的需求,最后在我们硬件工程师的努力下,总算完成IO驱动板的设计任务,并且他们写了板子的程序,同时他们也测试过稳定性及功能。

     因为要在工地测试我们机器,一直没有时间写CAN控制IO驱动的程序,最近在以前开发CANopen的基础上,编写CAN2.OB的通信程序。首先,我们有两个需求:(1)要能通过CAN分析仪进行控制IO输入输出。(2)能够通过研华CAN口控制IO输入输出。我们的工控机因为一开始设计程序的人用Window系统,人机界面是通过C#的Winform写的,同时跟硬件相关的制作成dll库进行调用,所以我们只能在已有的基础进行开发,通过读取研华工控机的说明书,他们的硬件支持can2.0b:

在了解到硬件支持扩展2.0b,接下来就是看看他们的数据接收和发送接口是否有,或者怎样知道发送是扩展帧还是标准帧,又查找他们的说明书,最后也发现,他们的里面有写:

 

确定了支持发送和接收API后,就是要跟PCB板进行通信,我们要看IO驱动板的协议是自己定的,所以我们贴出我们的协议(同事陈麟制定):

1.1 报文支持

本文介绍的协议,是基于CAN2.0B(29位ID的拓展格式帧)实现的高层协议。虽然CAN2.0B协议支持数据、远程、错误和溢出帧,但此高层协议只使用数据帧。

1.2 CAN2.0B报文格式

表1-1 CAN2.0B报文格式

CAN2.0B报文使用29位(bit)帧ID(11Bit SID + 18Bit EID),下文直接合并为29Bit ID域。DLC域指示数据段有多少个字节。本高层协议只使用了CAN2.0B的数据帧,所以该报文的其他域本文不再详细明。

1.3 高层协议报文格式

图1-1 高层协议说明

本协议的帧格式由6大部分组成:

  1. 优先权:控制该报文在CAN总线上的传输优先级,值越小,优先级越高;
  2. 功能码:指示该报文的功能;
  3. 目的地址:接收该报文的模块地址;
  4. 源地址:发送该报文的地址;
  5. 可选数据载荷:个别报文(功能码)会携带一些控制数据。

2.1 特别约定

从can通信特点来说,在can总线上的设备都有同等的通信地位。但在本协议约定的拓扑架构中,从通信地位上划分都有上位机和下位机之分,本协议只适用于具有上位机和下位机的拓扑架构模型,其模型图如下:

图2-1 设备拓扑

2.2 设备地址约定

本协议使用8位地址,最大支持256个设备。为了统一管理,对地址作以下约定:

表2-1 地址使用范围

地址区间

使用方式描述

255

广播地址

254

主机地址

0~253

从机地址

 

2.3 重启从机

表2-2 复位命令请求(主机发、从机收)

功能码

0x01

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

 

2.4 读取输入IO电平

表2-2 读取输入IO电平命令请求(主机发、从机收)

功能码

0x02

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

 

 

表2-3 读取输入IO电平明令回应(从机发、主机收)

功能码

0x03

源地址

从机地址

目的地址

254

数据域

2个字节,Bit0 ~ Bit15分别对应一个通道的电平,如Bit0的值为1代表通道0为高电平,值为0代表通道0为低电平。

 

2.5 设置输出IO电平

表2-4 设置输出IO电平命令(主机发、从机收)

功能码

0x04

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

Byte0~Byte1为控制值,Byte2~Byte3为通道掩码,详细见下文

 

数据域又细分为两个域:

  1. 控制值,16位,每一位分别指示每一个输出IO的电平,值为1代表高电平,值为0代表低电平。
  2. 通道掩码,16位。每一位分别对应一个IO通道,该位值位1代表控制值对应位的值有效,值为0代表控制器对应位的值无效。

举例,要设置通道0和通道3为高电平:

控制值为:0x0009(00000000 00001001),除了位0和位3,其他位的值随意

通道掩码为:0x0009(00000000 00001001)。

 

 

2.6 读取输出IO电平

表2-5 读取输出IO电平命令请求(主机发、从机收)

功能码

0x05

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

 

 

表2-6 读取输出IO电平命令回应(从机发、主机收)

功能码

0x06

源地址

从机地址

目的地址

254

数据域

2个字节,Bit0 ~ Bit15分别对应一个通道的电平,如Bit0的值为1代表通道0为高电平,值为0代表通道0为低电平。

 

2.7 设置电机状态

表2-7 设置电机正/反转命令(主机发、从机收)

功能码

0x07

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

Byte0~Byte1为控制值,Byte2为通道掩码,详细见下文

 

    1)控制值

表2-8 控制值说明(功能码0x07)

[0 : 1]

通道0控制值:0,待机,输出都为高阻;1,反转;2,正转;3,停止,输出都为低电平。

[2 : 3]

通道1控制值,同上

[4 : 5]

通道2控制值,同上

[6 : 7]

通道3控制值,同上

[8 : 9]

通道4控制值,同上

[10 : 11]

通道5控制值,同上

[12 : 13]

通道6控制值,同上

[14 : 15]

通道7控制值,同上

 

  1. 通道掩码

共8位(1Byte),每一位的值代表控制值里对应的通道控制值是否有效:1有效,0无效。

举例,控制电机0反转,电机3正转:

  1. 控制值:0x0042 (01 00 00 10), 除了[0:1]和[6:7],其他位的值随意。
  2. 通道掩码:0x09 (0000 1001), 位0和位3为1,其余为0。

2.8 读取电机状态

表2-9 读取电机状态命令请求(主机发、从机收)

功能码

0x08

源地址

254

目的地址

0xFF(全部设备),其他(指定的设备地址),254无效

数据域

 

 

表2-10 读取电机状态命令回应(从机发、主机收)

功能码

0x09

源地址

从机地址

目的地址

254

数据域

2个字节,解析请参考表2-8

 

2.9 自动上报输入IO状态

如果输入IO的电平有变动,从机会主动将以下报文发送到主机,主动上报IO的电平。

表2-11 输入IO电平变动通知报文(从机发、主机收)

功能码

0x0A

源地址

从机地址

目的地址

254

数据域

Byte0~Byte1为通道值,Byte2~Byte3为通道掩码,详细见下文

 

  1. 通道值:16位,每一位分别指示对应通道的电平值:1为高电平,0为低电平。
  2. 通道掩码:16位,每一位的值指示对应通道的电平是否发生变动:1,为发生变动, 0无变动。

最终调试结果就是我们通过上位机,可以控制我们工控机进行输入输出控制和读取数据。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简要说明: 一、单路无线遥控板PCB尺寸:72mm X40mm X25mm 长X宽X高 二、 主要芯片:无线遥控 SC2272 315M发射接收 继电器 三、 工作电压:输入直流6V~36V; PCB板截图: 单路无线遥控板特点: 1、单路最大控制负载300W。 2、具有输出指示灯; 4、发射器具有信号发送指示灯。 5、可控制交流220V或者直流30V 10A以内负载 6、采用螺旋压接端子 7、抗干扰能力强,穿墙能力强。 8、工作频率315M 9、接线方便 10、遥控距离,无障碍小于100米,有障碍小于30米 11、工作环境:湿度小于80% ,温度 -20度至70度 12、使用寿命:大于一百万次 单路无线遥控板实物展示: 配套遥控器主要参数: 1、工作电压:DC12V 2、工作电流:≤9mA 3、工作频率:315MHz 4、编码类型:焊盘 5、发射距离:100米(空阔地) 6、编码类型:固定码 7、编码芯片:PT2264(PT2262、SC2262),厂家每个批次芯片型号不同,三款芯片完全兼容 8、外壳颜色:桃木 9、振荡电阻:1.5M 遥控器和超再生固定码接收模块可以组成四路无线发射接收电路,遥控器的四位数据码对应模块的四路输出,可以方便的组成无线遥控发射接收电路,该产品广泛适用于广大电子爱好者的家庭、工业遥控类电子产品的设计和开发,可很好的作为单片机的信号输入源,特别适合大中院校学生电子电路设计、毕业设计中的遥控电路部分,可与单片对接,或加一级放大驱动继电器或小型直流电机。接收板有自锁、非锁、互锁三种型号。 【选型说明】 非锁、自锁、互锁三种工作方式说明非锁型SC2272-M4输出又称点动输出,数据脚输出的电平是瞬时的而且和发射端是否发射相对应,可以用于类似点动的控制,有遥控信号时数据脚是高电平,遥控信号消失时数据脚立即恢复为低电平,适用于如电动门、电动门锁、与单片机对接等只需要一个高电平的电路等电路等。 自锁型SC2272-T4输出的数据脚能实现触发翻转工作逻辑,数据只要成功接收就能一直保持对应的电平状态,直到下次遥控数据发生变化时改变。自锁型四路相互独立互不影响,可同时遥控四路,如灯具的控制等。 互锁型SC2272-L4输出就是任意一路收到信号则该路就能一直保持对应的高电平状态,接收到任意其它路的数据则恢复到原始状态,四路互锁只能有一路接通,实际应用如电风扇档位开关电路等。 附件内容截图: 实物购买链接:https://item.taobao.com/item.htm?spm=a1z10.3-c.w40...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值