xiaoxiaocheng_plc/users/plc_io.h

190 lines
6.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/****************************************************************************
PLC相关的特殊寄存器
专用辅助继电器 描述
M8126 全局标志
M8127 通讯请求握手信号
M8128 出错标志
M8129 通讯请求切换
专用数据寄存器 描述
D8000 = 200; 扫描时间
D8001 = 0X5EF6; 型号版本 FX2N(C)
D8101 = 0X5EF6; 型号版本 FX2N(C)
D8002 = 8; 内存容量
D8102 = 8; 内存容量
D8003 = 0x0010; 内存类型、寄存器类型
D8006 CPU电池电压
D8010 = 10; 扫描当前值
D8011 = 20; 扫描最小时间(0.1MS)
D8012 = 140; 扫描最长时间(0.1MS)
D8120 = 0X4096 通讯格式
D8121 从站号最多16个
D8127 交换数据的首地址
D8128 交换数据量
D8129 网络通讯超时时间确认值
D8000 看门狗
通讯格式详解D8120
----------------------------------------------------------------------
位号 | 含 义 | 描述
-----------+-------------+--------------------------------------------
b0 | 数据长度 | 0 7位 1 8位
-----------+-------------+--------------------------------------------
b2b1 | 校验方式 | 00不用 01奇校验 11偶校验
-----------+-------------+--------------------------------------------
b3 | 停止位 | 0 1位 1 2位
-----------+-------------+--------------------------------------------
| | 0001300 01114800
b7b6b5b4 | 波特率 | 0100600 10009600
| | 01011200 100119200
| | 01102400
-----------+-------------+--------------------------------------------
b8 | | 0不用 注:无协议通讯专用
-----------+-------------+--------------------------------------------
b9 | | 0不用 同上
-----------+-------------+--------------------------------------------
b12b11b10 | 通讯接口 | 000RS485RS422接口
| | 010 RS232C接口
-----------+-------------+--------------------------------------------
b13 | 求和检查 | 0不加求和码 1自动加上求和码
-----------+-------------+-------------------------------------------
b14 | 协议 | 0无协议通讯 1专用通讯协议
-----------+-------------+--------------------------------------------
b15 | 协议格式 | 0格式1 1格式4
----------------------------------------------------------------------
举例D8120 = 0X4096 通讯波特率是19200
*********************************************************************************/
#ifndef _PLC_IO_H
#define _PLC_IO_H
#include "stm32f10x.h" //0X4221018C
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#define BIT_ADDR(addr, bitnum) *((volatile unsigned long *)((0x42000000)+(addr<<5)+(bitnum<<2))) //
//IO口地址映射
#define GPIOA_ODR_Addr 0x01080C
#define GPIOB_ODR_Addr 0x010C0C
#define GPIOC_ODR_Addr 0x01100C
#define GPIOD_ODR_Addr 0x01140C
//IO模式定义
#define GPIOA_IDR_Addr 0x010808
#define GPIOB_IDR_Addr 0x010C08
#define GPIOC_IDR_Addr 0x011008
#define GPIOD_IDR_Addr 0x011408
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
#define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
#define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
#define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
#define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
#define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
#define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
#define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
#define PLC_RUN PCin(13)
#define PVD PAin(0)
#define run_Lamp PBout(8)=0
#define Stop_Lamp PBout(8)=1
#define Err_Lamp_ON PBout(9)=0
#define Err_Lamp_OFF PBout(9)=1
// #define send_485 PDout(10)=1 //485 mode open send
// #define read_485 PDout(10)=0 //485 mode open read
//输入X定义
#define X00 PAin(1)
#define X01 PAin(2)
#define X02 PAin(3)
#define X03 PAin(6)
#define X04 PAin(7)
#define X05 PCin(4)
#define X06 PCin(5)
#define X07 PBin(0)
#define X10 PBin(1)
#define X11 PBin(12)
#define X12 PBin(13)
#define X13 PBin(14)
#define X14 PBin(15)
#define X15 PBin(7)
#define X16 PBin(8)
#define X17 PBin(9)
// 用户可根据实际需求进行扩展
//#define X20 管脚待定
//#define X21 管脚待定
//#define X22 管脚待定
//#define X23 管脚待定
//#define X24 管脚待定
//#define X25 管脚待定
//#define X26 管脚待定
//#define X27 管脚待定
//#define X30 管脚待定
//#define X31 管脚待定
//#define X32 管脚待定
//#define X33 管脚待定
//#define X34 管脚待定
//#define X35 管脚待定
//#define X36 管脚待定
//#define X37 管脚待定
//输出Y定义
#define Y00 PCout(9)
#define Y01 PAout(8)
#define Y02 PAout(11)
#define Y03 PAout(12)
#define Y04 PAout(15)
#define Y05 PCout(10)
#define Y06 PCout(11)
#define Y07 PCout(12)
#define Y10 PDout(2 )
#define Y11 PBout(3 )
#define Y12 PBout(4 )
#define Y13 PBout(5 )
#define Y14 PBout(6 )
#define Y15 PBout(7 )
//#define Y16 PAout(1 )
//#define Y17 PAout(0 )
// 用户可根据实际需求进行扩展
//#define Y20 管脚待定
//#define Y21 管脚待定
//#define Y22 管脚待定
//#define Y23 管脚待定
//#define Y24 管脚待定
//#define Y25 管脚待定
//#define Y26 管脚待定
//#define Y27 管脚待定
//#define Y30 管脚待定
//#define Y31 管脚待定
//#define Y32 管脚待定
//#define Y33 管脚待定
//#define Y34 管脚待定
//#define Y35 管脚待定
//#define Y36 管脚待定
//#define Y37 管脚待定
#endif