background image

 

一、 引言:
现在在工业现场很少有人再用 C 语言做串口通讯程序了,但是基于 DOS 环境的程序还是
有它的优势的。DOS 系统的单任务环境是系统运行更加稳定、可靠;在一些追求很高的可
靠性的系统中还是有一定的价值的。本文通过 C 语言控制 PLC 实现简单的物料传送为例
子。

 

二、 硬件介绍:
1、CPM1A 采用 RS232 串口通讯与上位机连接,在 PLC 的 DM 区中可以设定串口参数,
本文采用默认值:
串口通信格式:
1 位---起始位、9600---波特率、7 位---数据位、2 位---停止位、偶校验
2、C 语言中用于串口读写的函数:bioscom,在 bios.h 头文件中。
Bioscom 用法:bioscom(int cmd,char byte,int port)
Cmd 的值:0 设置通信参数为 btye 值
1 发送一个字符到串口
2 从串口接收一个字符
3 返回串口端口的状态
byte

 

的值: 0x02 7

 

数据位 0x03 8 位数据位

0x00 1

 

个停止位 0x04 2 个停止位

0x00 

 

无奇偶校验 0x08 奇校验

0x18

 

偶校验 0x80 1200 波特率

0xA0 2400

 

波特率 0xC0 4800 波特率

0xE0 9600 波特率
注意:在对串口初始化时,上述参数值相或附给 byte。
Port

 

的值: 0 端口 1

1 端口 2

 

三、 完整源代码:
#include /* 

 

此头函数请不要删除 */

#include 
#include 

#define F1 0x3B /*启动*/
#define F2 0x3C /*停止*/
#define F3 0x3D /*混料*/
#define F4 0x3E /*出料*/
#define F5 0x3F /*退出*/
#define PORT 0 /*定义端口号*/
#define SETTINGS (0x02|0x04|0x18|0xE0) /*设定参数*/

/* 定义发送字符函数 send */

void sendPort(int port,char cc)
{
union{
char ch[2];